quinta-feira, 31 de outubro de 2013

TOP INDEX - VB2012 - TOPSOLID V6.12

Fernando "geniosoft" Pinheiro | quinta-feira, 31 de outubro de 201313:17 |

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)


Tags:
Se achou esta publicação interessante, partilhe, comente e siga.

Receba actualizações

Subscreva o nosso email e receba actualizações.

Partilhar esta publicação

Publicações relacionadas

0 comentários:

Sobre mim

A minha foto
aka geniosoft geniosoftware@gmail.com

Seguidores

Arquivo do Blog

Copyright © 2013 CAD with API. Bloggerized byOzynetwork converted by BloggerTheme9
Blogger template. Proudly Powered by Blogger.
back to top