Macros do SOLIDWORKS pt II

Este post é a continuação do post anterior. Nele iremos implementar no código a remoção das configurações não desejadas no arquivo derivado, criado a partir das configurações do arquivo original.

Essa macro deve abrir o arquivo que foi criado pela macro do post anterior, varrer as configurações do arquivo, excluir as configurações indesejadas, salvar e fechar o arquivo. Seria um ganho de tempo e tanto se fosse possível automatizar esse processo, que além de manual é também monótono.

Apesar de parecer uma tarefa mais complexa podemos obter o algoritmo principal utilizando a mesma abordagem utilizada na macro anterior do post. Podemos gravar uma macro utilizando a ferramenta ‘Macro -> Gravar’ nativa do SOLIDWORKS, realizando estes passos e depois implementar uma inteligência para automatizar e generalizar o processo.

Vamos lá! Vamos gravar uma nova macro.

  1. Iniciar Gravação
    • Selecione Ferramentas à Macro à Gravar…

  1. Abra o arquivo

 

  1. Selecione uma configuração indesejada

 

  1. Delete a configuração

 

  1. Salve o arquivo

 

  1. Feche o arquivo

 

  1. Pare a gravação
  • Ferramentas à Macro à Parar…

 

  1. Salve a macro
  • Você será avisado assim que interromper a gravação.

 

Agora vamos analisar o código e desenvolver um algoritmo inteligente para generalizar a tarefa principal da macro: selecionar a(s) configuração(ões) indesejada(s) e deleta-la(s).

Neste momento o código deve parecer com este:

A ferramenta Macro do SOLIDWORKS gravou os passos necessários – e ainda comentou os passos – restando agora “apenas” a implementação da inteligência para generalizar o código, ou seja, realizar essa tarefa para qualquer arquivo e quaisquer configurações indesejadas.

Vamos seguir em frente.

No post anterior implementamos um ‘loop’ para percorrer as configurações de um modelo e salvar um arquivo derivado com o nome de cada configuração. Percebemos que o arquivo derivado “carrega” com ele as configurações do arquivo original, ocasionando assim, as configurações indesejadas.

O objetivo dessa macro é justamente excluir as configurações indesejadas do arquivo derivado e é fácil perceber que vamos utilizar esse mesmo ‘loop’ para percorrer todas as configurações do arquivo original e assim, deixando claro o ‘real’ desafio do desenvolvimento desse post que é o desafio de identificar e deletar as configurações indesejadas.

Analisando o código gravado podemos facilmente identificar a linha que executa a exclusão de uma configuração: boolstatus = Part.DeleteConfiguration2(“xyz”)

O VBA possui dois tipos de estruturas para construção de algoritmos, Sub Function. A questão que surge é, quando usar uma ou outra na construção de algoritmos em VBA? Na prática, Sub Function trabalham da mesma forma com uma única diferença. A Sub são funções de processamento autônomo enquanto as Functions podem (e devem) retornar valores no final de sua execução.

E se criássemos uma sub que recebesse o nome da configuração como parâmetro, executasse todos os comandos necessários? A chamaríamos de dentro do loop principal, logo após salvarmos o arquivo derivado.

Essa sub precisa abrir o arquivo derivado nomeado com o nome da configuração que foi passada como parâmetro. Como gravamos todo o processo, já temos o comando para abrir um arquivo só precisamos ajustá-lo para trabalhar com o parâmetro passado.

Algo como isso: swApp.OpenDoc6(“C:\Temp\” + configName + “.SLDPRT”, 1, 0, “”, longstatus, longwarnings)

Mas ainda precisamos atribuir esse comando a uma variável para executarmos as manobras subsequentes, então podemos fazer algo como isso:

Set DeriPart = swApp.OpenDoc6(“C:\Temp\” + configName + “.SLDPRT”, 1, 0, “”, longstatus, longwarnings)

O próximo passo é percorrer as configurações do arquivo derivado e excluir as indesejadas. O loop para percorrer as configurações é o mesmo do post anterior, no entanto, ao invés de salvar um arquivo ele precisa checar o nome das configurações, selecionar as indesejadas e excluí-las.

Existem várias formas de implementar essa ação. Nesse post iremos fazer da maneira mais simples que muito provavelmente não é a mais eficiente, deixando assim um desafio aberto para futuras implementações. Legal né?

Como recebemos como parâmetro o nome da configuração que dá nome ao arquivo derivado podemos concluir logicamente que as configurações com nomes diferentes deste serão automaticamente as configurações indesejadas. Com isso vamos comparar o nome da configuração passada como parâmetro para a sub com o nome da configuração do arquivo derivado aberto, podemos fazer da seguinte forma:

Beleza! E agora? Agora precisamos implementar as ações de exclusão das configurações, como nós gravamos essa ação anteriormente, só precisamos ajustá-las para receberem os parâmetros e índices necessários, então vamos lá!

Entendendo os comandos:

  • A primeira linha seleciona a configuração para ser excluída.
  • A segunda linha inicia o ambiente de edição/exclusão.
  • A terceira linha deleta a configuração.

Agora precisamos salvar e fechar o arquivo derivado e nós também gravamos essas ações, só precisamos adequá-las para as nossas variáveis:

Pronto! Temos a nossa sub e vamos chama-la de DeletaConfig e ela receberá como parâmetro configName.

A MechWorks Tecnologia é líder no mercado de ferramentas de CAD-CAE-CAM. Seu portfólio de produtos, composto pelos softwares SOLIDWORKS, SOLIDWORKS Simulation, SOLIDWORKS Composer e SOLIDWORKS Enterprise PDM, SOLIDWORKS Inspection e SOLIDWORKS Electrical, garante a seus clientes um amplo espectro de soluções 3D para as diversas atividades de engenharia. A MechWorks é credenciada pela Dassault SOLIDWORKS para atuar nas regiões de São Paulo, Rio de Janeiro, Espirito Santo e todo Norte e Nordeste.