Você está na página 1de 8

Uma introdução à programação visual com

Dynamo
 Por Thórus Engenharia  28/09/2020    

O engenheiro civil e líder do nosso time de pesquisa e inovação, Rafael Anton, inicia hoje uma nova série e
textos sobre programação visual com Dynamo. Vamos ao texto!

A programação está envolvida com o mundo dos projetos de engenharia desde o surgimento dos primeiros
softwares de desenho. Além da própria programação necessária para o desenvolvimento do software,
grande parte das aplicações também disponibilizavam a possibilidade de desenvolvimento de plugins para
a realização de tarefas que não estavam disponíveis no conjunto de comandos padrão.

Quem já projetou em Autocad deve lembrar de algumas aplicações famosas. Um exemplo conhecido é o
TigreCAd, que auxiliou muito na produtividade dos projetistas de instalações prediais há um tempo.

Apesar dos plugins serem extremamente úteis, a produção deles dependia de uma menor parcela de
pro ssionais que conhecessem os softwares de engenharia e que possuíssem habilidades para a
programação textual.

Com o surgimento das aplicações voltadas para programação visual, o poder da criação de rotinas de
programação passou também para as mãos de cada projetista, que hoje tem a possibilidade de criar o exato
procedimento que as particularidades do seu projeto exigem.

Mas a nal, o que é programação visual?


Segundo a de nição do Wikipedia, programação visual é “qualquer linguagem de programação que permite
aos usuários criar programas manipulando elementos do programa gra camente ao invés de especi cá-los
textualmente”.

As imagens abaixo representam um ótimo exemplo comparativo dos dois tipos de linguagem:
Fonte: primer.dynamobim.org

Este tipo de programação possui uma curva de aprendizado mais rápida que a textual, e é exatamente por
isso que um número cada vez maior de engenheiros e arquitetos estão programando suas próprias rotinas.

No mundo do desenvolvimento de projetos em BIM, as duas aplicações de programação visual mais


famosas são o Dynamo (voltado para o Revit), e o Grasshopper (voltado para o Archicad).

Neste post, que será o primeiro de uma série sobre o tema, faremos um apanhado geral dos principais
conceitos para começar a programar com o Dynamo. Para tanto, utilizaremos como fonte principal a
documentação do Dynamo, disponibilizada no site https://primer.dynamobim.org/.

Nós (nodes) no Dynamo


Os Nós, ou nodes, são objetos que executam funções e devem ser conectados entre si para formar a rotina
de programação desejada.

A maioria dos nós no Dynamo são compostos por 5 partes:

Fonte: https://primer.dynamobim.org/

1- Nome do node
Nome composto pela Categoria que você está manipulando, e pelo método que você utiliza para a
manipulação. No exemplo acima aparece o nó Point.ByCoordinates.

A palavra Point seria a categoria, neste caso estamos criando um Ponto, e o método é ByCoordinates (por
coordenadas).

Desta forma, a função deste nó é criar pontos através das coordenadas (x,y e z).

2- Corpo
A parte principal do nó, clicando com o botão direito do mouse você tem acesso às con gurações deste nó

3- Portas de entrada e portas de saída


Na parte esquerda temos as portas de entrada. Em nosso nó de exemplo são os pontos x,y e z. E na parte
direita do nó temos as portas de saída, que no nosso exemplo representarão os pontos criados.

4- Indicador da amarra
A amarra representa a forma que os inputs serão cruzados, ela pode ser curta, longa ou ser o produto
transversal. Nas imagens abaixo tentei exempli car cada uma das amarras e os seus resultados, pensando
em um exemplo simples de multiplicação de uma lista de números por outra.
Por padrão, os nós vêm com a opção automática marcada. Desta forma o Dynamo tentará escolher a melhor
amarra para a situação. Porém, é possível alterar a amarra clicando com o botão direito no corpo do nó.

5- Valor padrão
Algumas portas de entrada dispõem de um valor padrão que pode ser usado. É possível ativar ou desativar o
valor padrão clicando com o botão direito do mouse na porta.

Nesta lista de itens eu acho válido comentar sobre mais um elemento presente nos nós, que é o Nível,
representado por uma setinha ao lado das portas de entrada.

Quando estamos trabalhando com muitas camadas dentro de uma lista no Dynamo, muitas vezes será
necessário determinar a camada da lista que você quer fazer determinada ação. Não vamos nos aprofundar
no assunto neste post, mas ca o conhecimento da existência deste elemento fundamental.
Codeblock
O codeblock é o elemento no Dynamo que é capaz de unir a programação escrita com a visual. A sintaxe
que é utilizada para escrever o código dentro do codeblock disponibiliza todos os nós padrão do Dynamo
para serem utilizados também na sua forma escrita. É um elemento muito útil para reduzir o tamanho da
rotina e até tornar a sua execução mais rápida.

Dedicaremos um post futuro apenas para explicar a sintaxe de programação utilizada dentro do codeblock,
pois trata-se de um elemento com muitas possibilidades, e o conteúdo pode car um pouco extenso.

Fios
Os os são os elementos que realizam a conexão entre os nós, e determinam o uxo da rotina.

Fonte: https://primer.dynamobim.org/

Interface do Dynamo
Tendo em mente todos os elementos, precisamos aprender como encontrá-los dentro da interface do
Dynamo.

Os nós podem ser acessados através do menu esquerdo. Eles estão separados em algumas categorias
principais (Dictionary, Display, Geometry, ImportExport, Input, List, Math, Revit, Script e String)

O interessante dessas categorias é explorar todos os nós que cada uma contém. Encorajamos você a abrir o
Dynamo e veri car cada função existente neste menu. Abaixo deixarei uma breve explicação sobre alguns
nós que serão encontrados nas categorias que eu mais utilizo no dia a dia.

Geometry
Contém toda a parte de criação de geometrias, como a criação de curvas, pontos, sólidos, superfícies, entre
outras coisas.

Um exemplo de nó encontrado em geometry é o Circle.ByCenterPointRadius. Como o próprio nome diz, esse


nó se propõem a criar um círculo através do seu ponto central e da determinação do seu raio.

Para realizarmos a criação deste círculo precisamos nos atentar para as portas de entrada (os inputs).
Passando o mouse por cima das portas, o Dynamo irá mostrar o tipo de entrada que ele espera que você
utilize.
Neste caso o ponto central deve ser, obviamente, um Ponto. E o Raio está pedindo o tipo de entrada
“double”, que é basicamente uma entrada numérica.

Para encontrarmos as entradas solicitadas, podemos recorrer ao nosso menu lateral novamente. O ponto é
uma geometria também, e será encontrado nesta categoria do menu:

Existem alguns métodos para a criação de pontos, como podemos observar na imagem acima. Neste caso
iremos utilizar o Point.ByCoordinates (x,y,z)

Para a criação do número que determinará o valor do raio, utilizaremos um codeblock. O mesmo faremos
para determinar as coordenadas x,y e z para o nó Point.ByCordinates.

Categoria List
Esta categoria contém todos os nós responsáveis por criar, inspecionar, modi car e organizar uma lista.

Categoria Revit
Nesta categoria que encontramos todos os nós que serão responsáveis pela interação com cada elemento
que podemos criar, modi car ou consultar no Revit. Se você está querendo interagir com algum elemento do
seu projeto, esta categoria irá lhe auxiliar.

A lista de operações disponíveis é bem extensa, e recomendamos fortemente que você explore cada pedaço
desta categoria para avaliar as possibilidades de interação e o formato em que elas ocorrem.

Nesta categoria, por exemplo, podemos realizar a inserção de famílias no projeto.

Vamos imaginar que estamos projetando um auditório, e gostaríamos de posicionar várias cadeiras com um
único comando.

Para isso, podemos procurar na categoria Revit algum nó que realize a criação de instâncias de família. Esse
nó pode encontrado em:

Revit -> Elements -> FamilyInstance


Existem alguns métodos para a criação de família. Ela pode ser criada por coordenada, por face ou ponto.
Para este exemplo iremos utilizar o método de criação por ponto.

Este nó está solicitando duas entradas: o tipo de família que você quer inserir, e o ponto em que ela será
inserida.

Para o ponto vamos utilizar o já conhecido Point.ByCoordinates.

E para o FamilyType iremos utilizar o nó Family Types, que lista todos os tipos de família que já estão
inseridos em seu projeto. Este nó pode ser encontrado em Revit -> Selection -> Family Types.

Reparem que, como utilizamos um ponto, nós tivemos como resultado apenas um elemento criado. Como a
nossa intenção é criar várias cadeiras, é necessário inserir na porta de entrada Point uma lista de pontos,
contendo todas as posições que você quer inserir a cadeira.

Um outro desa o que você já deve estar imaginado: como determinar esses pontos sem precisar calcular na
mão a posição de cada um?

Para este desa o nós podemos utilizar algum elemento que já existe no seu projeto como referência. Pode
ser o piso, as paredes, ou outro elemento a ser escolhido.

Para o nosso exemplo eu utilizei um conjunto de linhas que criei em projeto. Cada linha representa uma
leira de cadeiras. Nós podemos acessar esse conjunto de linhas de várias formas, uma delas é através do
nó Select Model Elements. Com este nó é possível selecionar alguns elementos no seu projeto, e trazê-los
para dentro do Dynamo.

Na seleção realizada, além das linhas, acabamos selecionando o piso também. Como ele não é um elemento
desejável nós podemos utilizar um nó de ltragem para retirá-lo da seleção. Não vamos nos aprofundar
sobre esta questão neste momento.
Tendo as linhas selecionadas, nós podemos utilizar o nó Curve.PointsAtEqualSegmentLength, este nó faz a
distribuição de pontos equidistantes através dos nossos segmentos de linhas.

Para tanto ele irá solicitar, nas portas de entrada, uma curva (teremos que transformar o nosso elemento
linha em uma curva), e também o número de divisões que faremos ao longo da linha.

A m de não tornar este post mais extenso do que ele já está, não entrarei nos detalhes a respeito de cada
elemento presente na rotina. Para facilitar o início do seu aprendizado, deixaremos o download do projeto
do auditório e da rotina que estamos construindo, desta forma você pode explorar cada elemento que ela
possui e testar, melhorar, e utilizar da maneira que preferir.

Clique aqui para baixar os arquivos!

Exemplo de utilização da rotina

Packages (Pacotes)
Além dos nós que são disponibilizados por padrão no ato da instalação do Dynamo, também é possível criar
seus próprios nós personalizados.

Esses nós personalizados são formados por um conjunto de nós que formam uma ação especí ca. Essa
função pode ser utilizada para ganhar produtividade na produção das rotinas.

Muito usuários criam os seus nós personalizados e os disponibilizam para qualquer projetista. Esse conjunto
de nós personalizados disponibilizado na biblioteca do Dynamo é chamado de Pacote. Os pacotes podem
ser baixados pelo menu superior.

Python
Além de nós personalizados, é muito comum encontrar a utilização de scripts na linguagem Python dentro
dos pacotes. O script em Python é a segunda forma de se produzir programação textual dentro do Dynamo
(o primeiro formato é através de codeblocks, como conversamos nos tópicos anteriores). O assunto de
python também é extenso e renderá um post futuro.

 Se esse conteúdo foi útil para você não deixe de compartilhar. Se inscreva na nossa newsletter abaixo e
que sempre por dentro dos conteúdos recentes.

Continue lendo:
Cenário Construtivo Brasileiro 2019: o que a Quais ferramentas podem ajudar na
pesquisa revela comunicação com seu time?

Já ouviu falar dos vidros inteligentes?


Conheça essa tendência!

GOSTOU DO CONTEÚDO?

SE INSCREVA NA
A cada duas semanas, um conteúdo exclusivo em seu e-mail

NOSSA E-Mail ENVIAR

NEWSLETTER

Home Cenário Construtivo Contato


BIM Podcast Cenário Construtivo Rua João Colin, 1872 – sl 32
Pesquisa Cenário Construtivo
América – Joinville SC
Projetos
Brasileiro
+55 (47) 3043 6643
Sobre nós:
Conteúdos
A Thórus
O blog da construção civil e a Thórus Blog
Depoimentos    
Engenharia ajudam centenas de construtoras Webinars
e incorporadores a construírem de forma mais Vagas
E-books
moderna e e ciente.

Nós queremos ajudar você também!

2020 Thórus Engenharia - Todos os direitos Reservados Política de privacidade

Você também pode gostar