TopIndex é um software que permite
fazer buscas numa base de dados MySQL que contém a informação das
entidades existentes num conjunto de modelos CAD, armazenadas em
pastas. O software facilita o acesso rápido à informação sobre um
determinado componente que já usamos, buscando por uma
caracteristica conhecida como seja a referencia ou a designação,
quer nas caracteristicas de material, tratamento, dimensões, quer à
localização do mesmo modelo para reutilização.
Na empresa em que trabalho atualmente,
temos um elevado número de projetos de moldes (modelos CAD TopSolid)
no arquivo de CAD's e acontece frequentemente ter que se reutilizar
um componente CAD que já anteriormente foi usado num projeto. Como
os modelos desses componentes já estão formatados para o nosso
sistema é vantajoso reutiliza-los mas a dificuldade é descobrir em
que projeto especificamente ele foi usado, o que ás vezes nos faz
perder muito tempo a abrir e fechar modelações CAD pesadas, para
tentar descobrir o objeto pretendido.
Surgiu-me a ideia de criar um programa
que gerisse uma base de dados com a lista de componentes já
utilizados nos diversos projetos. Para realmente ser útil, este
programa teria que varrer recursivamente as pastas à procura de
modelos CAD e depois recorrendo à API do TopSolid abrir esses
modelos e ler a informação de componentes nele utilizados
inserindo-os numa base de dados que depois estivesse disponível para
pesquisas rápidas.
Escolhi o MYSQL como gestor de base de
dados, porque é bom, rápido, escalável, como para desenvolvimento
poderia utilizar livremente a versão "community edition".
No caso da aplicação viesse a ser utilizada pela própria empresa,
esta já tem um servidor MYSQL licenciado onde poderia operar a base
de dados.
Para executar as pesquisas e apresentar
os resultados o programa mostra na janela principal uma grelha de
dados que permite apresentar o conteúdo da busca que não é mais
que a execução de um comando SELECT sobre as tabelas armazenadas
com dados dos CAD's, e construí um gestor de filtros personalizáveis
que permite definir quais os comandos (SELECT) que nos interessam
operar sobre a base de dados, apresentando-os numa combo box. Defini
já uma série de filtros:
"Encontrar qualquer informação",
que pesquisa sobre todos os principais campos de texto na base de
dados.
"Procurar Index do molde",
que apresenta as peças de um molde indicado correspondentes a um
index também indicado
"Procurar designação”,
“Procurar Referencia”, “Procurar Anotações e textos”,
“Procurar Ficheiro”, Permitem-nos procurar na base de dados por
elementos desta natureza.
[…]
“**Executar MySQL**” Este filtro
permite executar um comando personalizado pelo utilizador sobre a
base de dados, sem ter que estar a definir um novo filtro.
Para adicionar pastas e ficheiros à
base de dados, recorre-se ao menu “Ficheiro>Indexar
Pasta>Adicionar Pasta”, ao que temos acesso à janela de busca
recursiva nas pastas, na qual apenas temos que indicar qual o
diretório/drive em que queremos iniciar a busca e a partir dali
executa-se a busca recursiva acionando o botão “Indexar Pastas”.
Este processo está programado como um backgroundworker o que
nos permite cancelar a busca, ou trabalhar noutra parte do programa
em simultâneo, pode-se estar a fazer uma pesquisa por componentes ao
mesmo tempo que o programa busca ficheiros novos TOPSolid nas pastas.
O software além de procurar novos ficheiros, também verifica se
para os que já estão registados na base de dados se a data e
tamanho do ficheiro no disco mudou de tamanho e caso tenha acontecido
marca-o para nova indexação.
A adição de pastas não termina o
processo de indexação. Após termos povoado a base de dados com os
ficheiros CAD encontrados, devemos executar qualquer das opções em
“Ficheiro>Indexar TopSolid>[...]” o que iniciará o
TopSolid (ou ligará-se à primeira instância aberta) e por cada
ficheiro CAD na base de dados, testará-o por ligações externas
quebradas (apenas testado para versões desde a 6.8 à 6.12, o que
fiz foi engenharia reversa sobre os ficheiros CAD para descobrir como
estão armazenadas as referencias externas e apenas em formato
binário não comprimido, num primeiro nível, isto é, testo os
ficheiros referenciados mas não sigo as ligações externas desses
ficheiros externos que também podem estar quebradas) e em seguida
estando o ficheiro integro, o software faz load ao ficheiro CAD para
dentro do TOPSolid e executa uma leitura de todas as shapes e das
suas propriedades, assim como layers e textos que sejam encontrados
no ficheiro, armazenando toda esta informação na base de dados.
Este processo repete-se enquanto houverem ficheiros por indexar
componentes.
Existem ainda funções para limpar
ficheiros que possam ter sido apagados do disco, e quando
selecionamos na grelha de resultados um item, o botão “Abrir
Pasta” liga-se com a possibilidade de chamar uma janela de
explorador já com o ficheiro correspondente selecionado.
Este programa tem-me ajudado a mim e
aos colegas a poupar algum tempo reencontrando rápidamente
informação e modelos já existentes. Espero que possa ser útil
também para vocês, quer como ferramenta, quer como exemplo de
programação. Existem muitos conceitos de programação misturados
aqui, podem-se encontrar: background workers, ligação com bases de
dados, acesso a ficheiros binários, pesquisa recursiva de ficheiros
e pastas e API de ligação ao software CAD TopSolid.
Gostaria sempre dos vossos comentários,
e SE TIVEREM IDEIAS OU DESAFIOS PARA MIM, CONTACTEM-ME!
Requisitos:
Microsoft .NET Framework 4
Mysql Community Server
TOP INDEX Source+Install DOWNLOAD AQUI.
(actualizado em 03-12-2013)
TopIndex é um software que permite
fazer buscas numa base de dados MySQL que contém a informação das
entidades existentes num conjunto de modelos CAD, armazenadas em
pastas. O software facilita o acesso rápido à informação sobre um
determinado componente que já usamos, buscando por uma
caracteristica conhecida como seja a referencia ou a designação,
quer nas caracteristicas de material, tratamento, dimensões, quer à
localização do mesmo modelo para reutilização.
Na empresa em que trabalho atualmente,
temos um elevado número de projetos de moldes (modelos CAD TopSolid)
no arquivo de CAD's e acontece frequentemente ter que se reutilizar
um componente CAD que já anteriormente foi usado num projeto. Como
os modelos desses componentes já estão formatados para o nosso
sistema é vantajoso reutiliza-los mas a dificuldade é descobrir em
que projeto especificamente ele foi usado, o que ás vezes nos faz
perder muito tempo a abrir e fechar modelações CAD pesadas, para
tentar descobrir o objeto pretendido.
Surgiu-me a ideia de criar um programa
que gerisse uma base de dados com a lista de componentes já
utilizados nos diversos projetos. Para realmente ser útil, este
programa teria que varrer recursivamente as pastas à procura de
modelos CAD e depois recorrendo à API do TopSolid abrir esses
modelos e ler a informação de componentes nele utilizados
inserindo-os numa base de dados que depois estivesse disponível para
pesquisas rápidas.
Escolhi o MYSQL como gestor de base de
dados, porque é bom, rápido, escalável, como para desenvolvimento
poderia utilizar livremente a versão "community edition".
No caso da aplicação viesse a ser utilizada pela própria empresa,
esta já tem um servidor MYSQL licenciado onde poderia operar a base
de dados.
Para executar as pesquisas e apresentar
os resultados o programa mostra na janela principal uma grelha de
dados que permite apresentar o conteúdo da busca que não é mais
que a execução de um comando SELECT sobre as tabelas armazenadas
com dados dos CAD's, e construí um gestor de filtros personalizáveis
que permite definir quais os comandos (SELECT) que nos interessam
operar sobre a base de dados, apresentando-os numa combo box. Defini
já uma série de filtros:
"Encontrar qualquer informação",
que pesquisa sobre todos os principais campos de texto na base de
dados.
"Procurar Index do molde",
que apresenta as peças de um molde indicado correspondentes a um
index também indicado
"Procurar designação”,
“Procurar Referencia”, “Procurar Anotações e textos”,
“Procurar Ficheiro”, Permitem-nos procurar na base de dados por
elementos desta natureza.
[…]
“**Executar MySQL**” Este filtro
permite executar um comando personalizado pelo utilizador sobre a
base de dados, sem ter que estar a definir um novo filtro.
Para adicionar pastas e ficheiros à
base de dados, recorre-se ao menu “Ficheiro>Indexar
Pasta>Adicionar Pasta”, ao que temos acesso à janela de busca
recursiva nas pastas, na qual apenas temos que indicar qual o
diretório/drive em que queremos iniciar a busca e a partir dali
executa-se a busca recursiva acionando o botão “Indexar Pastas”.
Este processo está programado como um backgroundworker o que
nos permite cancelar a busca, ou trabalhar noutra parte do programa
em simultâneo, pode-se estar a fazer uma pesquisa por componentes ao
mesmo tempo que o programa busca ficheiros novos TOPSolid nas pastas.
O software além de procurar novos ficheiros, também verifica se
para os que já estão registados na base de dados se a data e
tamanho do ficheiro no disco mudou de tamanho e caso tenha acontecido
marca-o para nova indexação.
A adição de pastas não termina o
processo de indexação. Após termos povoado a base de dados com os
ficheiros CAD encontrados, devemos executar qualquer das opções em
“Ficheiro>Indexar TopSolid>[...]” o que iniciará o
TopSolid (ou ligará-se à primeira instância aberta) e por cada
ficheiro CAD na base de dados, testará-o por ligações externas
quebradas (apenas testado para versões desde a 6.8 à 6.12, o que
fiz foi engenharia reversa sobre os ficheiros CAD para descobrir como
estão armazenadas as referencias externas e apenas em formato
binário não comprimido, num primeiro nível, isto é, testo os
ficheiros referenciados mas não sigo as ligações externas desses
ficheiros externos que também podem estar quebradas) e em seguida
estando o ficheiro integro, o software faz load ao ficheiro CAD para
dentro do TOPSolid e executa uma leitura de todas as shapes e das
suas propriedades, assim como layers e textos que sejam encontrados
no ficheiro, armazenando toda esta informação na base de dados.
Este processo repete-se enquanto houverem ficheiros por indexar
componentes.
Existem ainda funções para limpar
ficheiros que possam ter sido apagados do disco, e quando
selecionamos na grelha de resultados um item, o botão “Abrir
Pasta” liga-se com a possibilidade de chamar uma janela de
explorador já com o ficheiro correspondente selecionado.
Este programa tem-me ajudado a mim e
aos colegas a poupar algum tempo reencontrando rápidamente
informação e modelos já existentes. Espero que possa ser útil
também para vocês, quer como ferramenta, quer como exemplo de
programação. Existem muitos conceitos de programação misturados
aqui, podem-se encontrar: background workers, ligação com bases de
dados, acesso a ficheiros binários, pesquisa recursiva de ficheiros
e pastas e API de ligação ao software CAD TopSolid.
Gostaria sempre dos vossos comentários,
e SE TIVEREM IDEIAS OU DESAFIOS PARA MIM, CONTACTEM-ME!
Requisitos:
Microsoft .NET Framework 4
Mysql Community Server
TOP INDEX Source+Install DOWNLOAD AQUI.
(actualizado em 03-12-2013)