SOLIDOS com Dynamo

Hoje resolvi encarar um pedido que tem aparecido com certa recorrência por aqui:

Rodar o SOLIDOS com o Dynamo, ou “expor” uma API do SOLIDOS para o Dynamo

Bom, vamos lá, adicionar funções ao Dynamo é relativamente simples, até mesmo para programadores mais iniciantes. São necessários:

  • Visual Studio (é, vai ter quem pergunte)
  • Adicionar os pacotes certos (nuget: DynamoVisualProgramming.DynamoServices, DynamoVisualProgramming.Core e DynamoVisualProgramming.LibG_xxxxxx)
  • Adicionar referência ao SOLIDOS
  • Escrever algumas funções…
Adicionando referências ao Dynamo

Sim, será necessário mais coisas, mas por hora, deve servir. Aliás, o Copilot ajudou muito (Skynet, por favor não me mate!!!)

Ajuda do Microsoft Copilot

O código gerado é bem simples, as já ajudou demais:

Criar uma função. O truque está neste atributo de função: [IsVisibleDynamoLibrary(true)]

Com isso, basta adicionar aos “Add ONs” do Dynamo e a função já fica visível para uso.

Como eu quero adicionar uma API para o SOLIDOS, adicionei algumas funções:

E aí escrever aquele “Hello World” (não, não é o hello world) básico:

Vamos ao “zoom” nesse fluxo:

Explicando:

Adicionei um bloco de código simples, para escolher a rede, a seção típica, o ponto de inserção e rotação.

Para a rede, por enquanto usei a “handle” desta, mas poderia colocar uma lista para o usuário escolher ou perguntar na linha de comando. Ainda falta decidir como serão os argumentos da função.

Para a seção, a escolha da “handle” me parece interessante, uma vez que podem existir 2 ou mais seções típicas com o mesmo nome em lista de materiais diferentes.

Por fim, o ponto de inserção e a rotação podem vir de qualquer lugar, para o teste, forneci através do bloco de códigos.

Rodei e funcionou, inseriu o PV, como se pode ver nas imagens acima.

Agora vem a parte difícil:

Quais funções criar? Uma coisa é dizer: criar um dispositivo por polilinha e então desenhar ele num eixo selecionado (sim, deram esta ideia), outro é viabilizar algo assim.

Se o Dynamo pode manipular a polilinha, então penso que é mais proveitoso uma função mais generalista, que desenha um dispositivo de seção típica conhecida sobre uma lista de coordenadas, pois uma lista pode vir de um arquivo de texto, do M$ Excel, de cliques na tela, enfim….

Então penso que sejam necessários funções para:

  • Criar objetos do SOLIDOS (dispositivo, rede, bacia, setor de consumo)
  • Obter propriedades dos objetos do SOLIDOS (informando seu “handle” e nome da propriedade, por exemplo)
  • Atribuir valores a propriedades dos objetos do SOLIDOS (loopings para atribuir a vários podem ser implementados pelo fluxograma do dynamo)
  • Listar nomes de redes, grupos de bacias e setores de consumo, dispositivos e estilos (para que sejam preenchidos “forms” que o usuário cria no Dynamo)
  • Chamar alguns métodos, tais como numerar, conectar dispositivos, mandar o cálculo ser executado

Com isso o usuário poderia por exemplo, importar dados de algum lugar, gerar uma rede, manipular, calcular, extrair relatórios.

E você o que achou da ideia? Que funções você gostaria de ter neste “Add ON” Dynamo para o SOLIDOS?

Deixe um comentário

Rolar para cima