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…

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

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

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?