Escolar Documentos
Profissional Documentos
Cultura Documentos
& Arquitetura
Implantação da Metodologia BIM
www.dharmasistemas.wix.com/home
Capacitação Profissional
BIM & Projeto Computacional no Dynamo
Sobre o autor
Ari Monteiro é proprietário da Dharma Sistemas, Cientista da Computação e Mestre
em Engenharia Civil e Urbana pela Escola Politécnica da USP. Profissional com
grande experiência na implantação e customização de ferramentas CAD/BIM. É
pesquisador e consultor BIM desde 2008. Membro da comissão de estudo
ABNT/CEE-134 para elaboração da norma BIM nacional desde 2015. Docente
convidado em programas de pós-graduação relacionados ao tema BIM desde 2014.
Atualmente, presta serviços de consultoria em BIM e em outras tecnologias
relacionadas para várias empresas de Engenharia, Arquitetura e Construção.
SUMÁRIO
AULA 1 .............................................................................................................................. 5
AULA 02 .......................................................................................................................... 15
AULA 03 .......................................................................................................................... 22
AULA 04 .......................................................................................................................... 37
AULA 05 .......................................................................................................................... 41
AULA 06 .......................................................................................................................... 46
Interoperabilidade ..................................................................................................... 46
AULA 07 .......................................................................................................................... 48
AULA 08 .......................................................................................................................... 51
Referências ..................................................................................................................... 56
AULA 1
Introdução às Ferramentas VPL
As VPLs (Visual Programming Languages) ou Linguagens de Programação Visual foram desenvolvidas nos
anos 70 e surgiram da união de trabalhos nos campos da computação gráfica, das linguagens de
programação e da interação humano-computador (BOSHERNITSAN; DOWNES, 2004).
A ideia principal por trás desse tipo de linguagem é facilitar a sua utilização e aprendizado, por meio do
uso de artefatos gráficos em oposição, ao uso de uma linguagem de programação textual (CRAFAI, 2015).
Em linguagens de programação textuais os usuários precisam aprender a sintaxe das estruturas da
linguagem para que possam codificar programas.
Nas ferramentas baseadas em VPL, a lógica dos programas é construída usando diagramas chamados
grafos que são compostos de elementos chamados nós.
Figura 2 – Cálculo da média de fois números usando uma linguagem de programação textual (C++).
Os nós contêm encapsuladas as estruturas utilizadas pela linguagem de programação visual. Na medida
em que o usuário cria o grafo de um programa, indiretamente, está produzindo códigos de programação
que ficam ocultos dentro dos nós do grafo.
Quando esse grafo é executado a lógica de programação incorporada nos nós é processada gerando
geometrias novas ou manipulando geometrias existentes (Figura 3, p.6).
As ferramentas VPL têm sido utilizadas no contexto do BIM há alguns anos, em particular em estudos de
formas arquitetônicas complexas (STAVRIC; MARINA, 2011) e no suporte a fabricação digital (LACHAUER
et al., 2010).
Exemplos de ferramentas VPL integradas com suas respectivas ferramentas BIM são:
• Grasshopper (Graphisoft ArchiCAD);
• Dynamo (Autodesk Revit);
• Generative Components (Bentley AECOsim);
• Marionette (Nemetscheck Vectorworks).
Figura 4 – Aplicação do Dynamo para análise de rota de fuga em um projeto de segurança predial.
As ferramentas VPL permitem não apenas a modelagem geométrica, mas também, a modelagem BIM.
Enquanto a modelagem geométrica foca na forma dos objetos, a modelagem BIM foca na funcionalidade
desses objetos dentro de um contexto projetual.
Por exemplo, na modelagem geométrica uma parede tem sua descrição restrita apenas a sua geometria.
Uma parede é apenas um prisma retangular com suas dimensões de espessura, comprimento e altura, os
quais podem ainda, serem estáticas ou dinâmicas (modelagem paramétrica).
Na modelagem BIM a mesma parede ganha mais características relacionadas ao seu contexto projetual,
isto é, não é apenas um prisma retangular com dimensões variáveis.
Agora esse objeto pode representar virtualmente uma parede e, por consequência, deve apresentar
comportamentos de uma parede real.
Uma parede, num modelo BIM, deve saber interagir com outros objetos (paredes, portas, janelas, etc.).
Além disso, deve conter diversos tipos de dados técnicos (propriedades), tais como: materiais que a
compõe, pavimentos os quais ela está relacionada, área de sua superfície, sua identificação, sua
localização, etc.
O uso combinado de ferramentas VPL e de autoria de modelos BIM é uma técnica interessante a ser
explorada.
O uso de ferramentas VPL para explorar novas formas geométricas é interessante, mas o uso dessas
ferramentas na elaboração e manipulação de modelos BIM é onde o poder delas se mostra muito maior.
Um exemplo claro disso se vê na elaboração de modelos BIM com LoD 400 (BIMFORUM, 2016) e na
execução de tarefas repetitivas durante este processo (Figura 6).
Figura 6 – Exemplos de projetos onde modelos BIM LoD 400 podem ser usados.
A modelagem BIM com o suporte de ferramentas VPL para a automação de modelagem é crucial para
obter produtividade.
Os modelos BIM de projetos para produção são exemplos de onde as ferramentas VPL podem ajudar na
automação da modelagem:
• Formas e escoramentos;
• Drywall;
• Madeiramento de telhado;
• Detalhamento de armações;
• Detalhamento de estruturas metálicas.
A ferramenta Dynamo
O Dynamo é uma ferramenta VPL que trabalha de forma integrada com o Autodesk Revit;
Com ela é possível automatizar diversos tipos de tarefas, tais como:
• Preenchimento de carimbos nas pranchas do projeto;
• Inserção automática de famílias seguindo uma regra específica para sua distribuição;
• Gerar pranchas com determinadas vistas já inseridas;
• Importação/exportação de modelos 3D, etc.
Figura 7 – Exemplo de grafo no Dynamo para preencher carimbos nas prachas de um projeto.
• Espaço de trabalho: área da tela onde é possível interagir com o grafo e pré-visualizar os
resultados da sua execução;
• Botão para exportar o grafo para um arquivo de imagem: use esse botão para exportar o
conteúdo do “espaço de trabalho” para um arquivo de imagem no formato PNG;
Nota: antes de exportar o grafo muito grande, deixe-o pré-selecionado para garantir uma boa resolução
da imagem.
• Ativa a navegação na visualização 3D: use esse botão para alternar para a visualização 3D e
ajustar a câmera da pré-visualização de resultados. Quando esse botão é acionado o grafo fica
em segundo plano;
• Ativa a navegação na vista gráfica: use esse botão para alternar para modo de visualização do
grafo. Quando esse botão é acionado a visualização 3D fica em segundo plano;
• Botões de Zoom, Pan e Órbita: use esses botões para ajustar o ponto de vista na visualização 3D
ou no modo de visualização do grafo.
Nota: A função “Orbit” são está disponível quando o modo de visualização 3D está ativo (Figura 10, p.10).
A anatomia de um grafo
Um grafo (graph) é um diagrama composto de nós (nodes) e fios (wires) utilizado para representar a lógica
de um programa.
Os nós (nodes) são os elementos que contém os dados manipulados por um programa e são compostos
das seguintes partes (Figura 11):
Figura 12 – Menu contexto ativado ao clicar botão direito sobre o corpo de um nó.
• Portas (Entrada/Saída): pontos para ligação dos fios (wires) que suprem ou transportam os
dados entre os nós;
• Pré-visualização de dados: passe o cursor ou clique para uma pré-visualização do processamento
de dados do nó;
• Ícone de amarra: indica a opção de amarra (lacing) utilizada para combinar listas de dados
fornecidas ao nó.
Nota: no menu contexto utilize a opção “Ajuda...” para consultar uma breve descrição do nó selecionado
na documentação do Dynamo (Figura 13). Utilizar a documentação do Dynamo é uma excelente forma de
aprender mais a fundo cada nó da biblioteca padrão.
Os nós podem apresentar diferentes estados durante o desenvolvimento de um programa (Figura 14):
• Inativo: um nó cinza escuro indica que ele está inativo e que precisa ser ligado com um fio ao
fluxo de programação;
• Ativo: um nó cinza claro indica que ele está perfeitamente ligado ao fluxo de programação;
• Selecionado: um nó com a borda azul indica que ele está selecionado;
• Alertando: um nó amarelo indica que algum erro ocorreu no processamento do nó. Deve-se
checar as portas de entrada de dados do nó.
Os fios (wires) são os elementos que ligam os nós e definem o fluxo da programação. Eles são os
responsáveis por transportar os dados entre os nós. O fluxo de dados padrão de um grafo é da esquerda
para a direita (Figura 15). Para ligar dois nós com um fio o procedimento é:
1. Clique numa porta à direita do nó (saída);
2. Desloque o cursor para direita e pare sobre a porta à esquerda do outro nó (entrada);
3. Clique na porta deste nó para ligar o fio.
A biblioteca (library) armazena os nós utilizados para criar os grafos. Esses nós são organizados na
biblioteca em categorias (Figura 16).
Os nós com o ícone “+” antes do nome do nó representam operações de criação (create) de objetos ou
geometrias.
Os nós com o ícone “raio” antes do nome do nó representação operações de modificação (action) de
objetos ou geometrias existentes.
Os nós com o ícone “?” antes do nome do nó representam operações de consulta (query) de dados em
objetos ou geometrias existentes.
• Criar grupo: permite agrupar nós em caixas coloridas contendo descrições breves sobre o grupo
(Figura 19).
Nota: a Figura 20 apresenta uma sugestão de cores para os grupos de acordo com a atividade
desempenhada pelos nós que compõem um grupo. O uso de um padrão de cores nos agrupamentos de
um grafo é uma boa prática para deixar o seu programa mais legível!
AULA 02
Elementos Básicos da Programação Visual
Para desenvolver programas é necessário conhecer os elementos essenciais de uma linguagem
computacional.
Esses elementos são os blocos fundamentais para construir a lógica de um programa, tais como: tipos de
dados, variáveis, estruturas de fluxo, estruturas de repetição, etc.
Nessa aula serão abordados quais são os elementos básicos da programação visual no Dynamo.
Tipos de dados
No Dynamo os dados são qualquer coisa que os nós de um grafo recebem ou retornam. Os tipos de dados
básicos são:
• Número (number): usado para representar números reais (números com parte decimal) ou
inteiros;
• Cadeia de caracteres (string): usado para representar texto;
• Objeto (object): usado para representar uma geometria (ponto, face, etc.);
• Função (function): usado para representar um nó que executa uma ação. Por exemplo: um nó
que cria um ponto (Point.ByCoordinates) se não recebe dados de entrada, o dado retornado é
do tipo Function.
Na biblioteca de nós a categoria “Core/Input” (Figura 22) contém todos os tipos de entrada de dados que
podem ser usados em um programa:
Dados nulos
Os dados nulos ou dados inválidos são outra possibilidade de tipo de dado que pode existir em um
programa e é necessário tomar cuidado com esse tipo de dado.
Quando um nó recebe dados inválidos ele retorna um tipo chamado Null, que é usado para representar
a ausência de um dado válido;
Existe um nó específico na biblioteca para testar se um dado é nulo (Figura 23, p. 17). O nó isNull,
disponível na categoria “Core/Object”, retorna um dado do tipo booleano que é ideal para uso em
controle de fluxo juntamente com o nó If localizado na categoria “Core/Logic”.
Figura 23 - Exemplo de utilização do nó “Object.isNull” para checar se o valor de uma entrada é nulo.
Listas
Nas linguagens de programação os dados podem ser organizados em conjuntos que são chamados de
estruturas de dados.
A estrutura de dados essencial do Dynamo é a lista. Existem diversos nós dentro da biblioteca padrão para
manipular listas.
As listas podem conter dados do mesmo tipo (listas homogêneas) ou de tipos diferentes (listas
heterogêneas). Além disso, as listas podem conter outras listas (listas aninhadas).
Exemplo de listas são: pontos, faces, instâncias de uma família, pranchas, vistas, etc.
As listas podem ser criadas a partir de sequências de dados pelos nós “Number Sequence”, “List Create”
ou “Code Block” (Figura 24).
Funções matemáticas
No Dynamo é possível trabalhar com simples operações aritméticas ou complexas fórmulas matemáticas.
Na categoria “Operators” da biblioteca estão os nós relacionados aos operadores aritméticos e lógicos e
na categoria “Core/Math” estão os nós relacionados a funções matemáticas avançadas.
Dos nós utilizados para representar fórmulas matemáticas, o nó “Formula” localizado na categoria
“Core/Scripting” oferece uma forma mais compacta de trabalhar (Figura 26) que o nó “Evaluate”, pois é
necessário informar apenas os valores para os argumentos da fórmula.
Funções lógicas
A lógica condicional se refere ao controle de fluxo de programação utilizando testes lógicos que retornam
dados booleanos (true ou false).
No Dynamo essa lógica pode ser realizada usando a função “If” em conjunto com operadores lógicos e
operadores de comparação.
Os operadores lógicos e de comparação são encontrados na categoria “Operators” da biblioteca.
A função “If” é encontrada na categoria “Core/Logic” e os nós “Core/Formula” e “Core/Input/Code Block”
também podem ser usados para avaliar a função “If” (Figura 27).
O operador “==” pode ser utilizado como entrada do nó “If” pois ele retorna um dado do tipo booleano
(true ou false). A Figura 28 mostra um exemplo de aplicação desse operador para verificar se o resto da
divisão de um número por 2 é igual a zero.
• Core/String/Contains: verifica se uma string está contida em outra string e retornar um valor
booleano (true ou false). O nó retorna true se a string procurada existir e, caso o contrário,
retorna false. Para ignorar caracteres maiúsculos ou minúsculos na busca, informe true para a
entrada “ignoreCase” (Figura 31).
• Core/String/Split: fatia uma string utilizando um delimitador de campo (ex.: hífen, espaço, ponto
e vírgula, etc.). O retorno desse nó é uma lista contendo as partes da string fatiada (Figura 32).
AULA 03
Manipulação de Listas
As listas são o meio utilizado pelo Dynamo para organizar os dados e representam uma coleção de itens
de um determinado tipo (lista homogênea) ou de tipos diferentes (lista heterogênea), mas que possuem
ligação com um determinado contexto.
Uma lista contendo os tipos de todas as famílias de porta carregadas no projeto é um exemplo de lista
homogênea.
Uma lista contendo os dados código (number), descrição do item (string) e quantidade (integer), referente
a uma lista de materiais é um exemplo de lista heterogênea.
Existem diversos nós na categoria “Core/List” para manipular listas e nessa sessão são apresentadas as
principais operações que envolvem a manipulação dessas estruturas (Figura 34).
Criando listas
Para criar uma lista de números utilize o nó “Core/List/Create” ou o nó “Code Block” usando a sintaxe
“i..#e..p” onde “i” representa o número inicial da sequência, “#e” é número de elementos da sequência e
“p” é o passo (incremento ou decremento) nos números da sequência (Figura 35, p.23).
As sequências também permitem criar listas contendo valores texto. A Figura 36 mostra como criar uma
lista contínua de letras de “a” até “m” e a mesma lista pulando uma letra usando o parâmetro passo “#2”.
Listas de pontos podem ser criadas usando a combinação de listas de números com o nó
“Geometry/Point/ByCoordinates” (Figura 37, p.24).
Nota: a forma mais rápida de criar lista de números no Dynamo é usando a sintaxe de sequência “i..#e..p”
apresentada anteriormente.
Quando é necessário armazenar dois ou mais conjuntos de dados numa única lista, teremos uma situação
de lista aninhada.
A Figura 38 mostra um exemplo de criação de lista aninhada usado o nó “Core/List/Create” e a técnica de
sequência. Nos dois casos o resultado é exatamente o mesmo.
Em listas aninhadas o acesso a itens dentro dos níveis da lista pode ser feito com o auxílio do recurso
“list@level” (list at level).
A Figura 41 mostra a diferença na utilização do nó “Core/List/GetItemAtIndex” para acessar o elemento
de índice = 1 de uma lista aninhada.
Figura 41 – Exemplo de utilização do recurso “list@level” para acessar o nível 2 de uma lista aninhada.
No primeiro caso, o nó “Core/List/GetItemAtIndex” não está usando o recurso “list@level”, o que resulta
no retorno da segunda sublista da lista aninhada.
No segundo caso, o nó “Core/List/GetItemAtIndex” está usando o recurso “list@level” apenas na entrada
“list” o que resulta no acesso aos elementos de índice = 1 das sublistas localizadas no nível 2 da lista
aninhada.
Por fim, no terceiro caso, o recurso “list@level” é utilizado nas entradas “list” e “index” do nó
“Core/List/GetItemAtIndex” o que resulta apenas no elemento de índice = 1 da primeira sublista.
Mas, se fosse necessário acessar o elemento de índice = 1 da segunda sublista? Neste caso, informar os
índices que deseja acessar entre colchetes em um “Code Block” é mais simples e direto como mostra na
Figura 42.
Figura 42 – Acesso aos elementos de uma lista aninhada usando o nó “Code Block”.
Nota: o recurso “list@level” pode ser usado diversos tipos de nós de manipulação de listas. Use-o quando
precisar aplicar uma função em elementos de uma lista aninhada.
Nota: observe que no nó “Core/List/Flatten” é possível indicar a quantidade de níveis que se deseja
eliminar na lista aninhada.
Na sessão anterior vimos como eliminar níveis numa lista aninhada, mas pode ser necessário fazer o
contrário que é agrupar os elementos de uma lista em sublistas. O nó “Core/List/Chop” permite fazer esse
agrupamento.
Esse nó tem duas entradas sendo a primeira a lista a ser processada e a segunda a quantidade de
elementos desejados para cada sublista (Figura 45).
Nota: se a quantidade no segundo parâmetro não for módulo da quantidade total de elementos da lista
original, a última sublista poderá conter menos elementos.
O nó “Core/List/Map” permite acessar somente um nível abaixo do maior nível (ex.: o nível 2 de uma lista
de 3 níveis). O recurso “list@level” pode ser usado para acessar qualquer nível de uma lista aninhada. A
Figura 47 mostra como ativar o recurso “list@level” dentro do nó “Core/List/Count”.
Também é possível aplicar uma combinação de funções nos elementos de uma lista usando o nó
“Core/Evaluate/Function Compose”. Esse nó permite receber diversas funções que serão processadas na
ordem que forem informadas. O resultado de uma função alimenta a próxima função.
No exemplo da Figura 48 o nó “Core/Math/Average” calcula a média dos valores contidos em cada sublista
e passa os resultados para o nó “Core/Math/Sqrt” que calcula a raiz quadrada de cada valor retornado
pelo nó “Core/Math/Average”. Por fim, o nó “Core/List/Map” se encarrega de aplicar essas duas funções
na lista original definida no nó “Code Block”.
• Longtest (mais longo): combina os elementos das listas envolvidas 1 a 1 (Figura 51). Quando o
número de elementos entre as listas é diferente os elementos finais da lista maior são
combinados com o último elemento da lista menor.
• Cross Product (produto transversal): combina os elementos das listas envolvidas todos com
todos, isto é, todas as conexões possíveis são realizadas (Figura 52, p. 31).
A opções do recurso “amarra” podem ser utilizadas para gerar conjuntos de pontos nos espaços 2D e 3D.
A opção “mais curto” quando recebe listas de mesmo comprimento (mesma quantidade de elementos)
combina esses elementos 1 a 1 gerando uma sequência de pontos posicionados numa determinada
direção (Figura 53).
Na opção “produto transversal”, se as listas tem o mesmo comprimento, o recurso “amarra” permite
gerar uma grade de pontos no plano XY (Figura 54).
Figura 54 - Exemplo de utilização do recurso “amarra” com a opção “produto transversal” 2D.
A opção “produto transversal” quando recebe 3 listas de mesmo comprimento, gera uma nuvem de
pontos no espaço 3D (Figura 55).
Figura 55 - Exemplo de utilização do recurso “amarra” com a opção “produto transversal” 3D.
A opção “mais longo” faz mais sentido utilizar quando as listas que serão combinadas têm comprimentos
diferentes. O Figura 56 mostra um exemplo de utilização do desta opção para aplicar a função
“Core/String/Concat” para criar strings que com números sequenciais.
Para remover dados numa lista o Dynamo possui as seguintes funções na categoria “Core/List” da
biblioteca:
• Core/List/RestOfItems: remove o primeiro item da lista;
• Core/List/RemoveItemAtIndex: remove itens da lista informando os seus índices a partir do
início da lista;
Também é possível remover itens duplicados de uma lista usando o nó “Core/List/UniqueItems” (Figura
60).
Nota: quando expressões lógicas são utilizadas como entrada no nó “Core/List/ReplaceByCondition”, use
o nó “Core/Scripting/Formula” ao invés de um nó “Code Block” para entrar com a expressão lógica. Se o
“Core/Scripting/Formula” não atualizar a saída do nó “Core/List/ReplaceByCondition”, desligue e ligue o
nó “Core/Scripting/Formula” da entrada “condition”. Esse é um pequeno “bug” no Dynamo! ☹
• Core/List/SortByKey: classifica os itens de uma lista (lista original) com base numa outra lista
(lista de chaves). O nó primeiro classifica em ordem crescente a lista de chaves e depois utiliza
os índices desses elementos para ordenar os dados da lista original. Use esse nó quando a
ordenação natural retornada por “Core/List/Sort” não for possível. A Figura 63 (p. 35) ilustra um
exemplo de utilização do nó “List/Core/SortByKey” para ordenar os rótulos de paredes (ex.: PA-
1, PA-12, etc.) usando o os sufixos de cada rótulo (o número depois do hífen) para a ordenação.
Nota: também existe um outro nó “BuiltIn/SortByFunction” que permite ordenar dados em listas
aplicando uma função em seus dados. Similar aos nós que vimos nas sessões “Mapeando funções em
listas” (p. 28) e “Combinando dados em listas” (p. 29). A Figura 64 mostra um exemplo de utilização do nó
“BuiltIn/SortByFunction” para ordenar pontos nos eixos X e Y.
Por fim, existem duas variações do nó “BultIn/SortIndexByValue” que retornam como resultado não os
dados da lista ordenados, mas os seus índices (Figura 65).
A primeira opção deste nó retorna os elementos em ordem crescente, já a segunda opção tem uma
entrada onde é possível controlar a ordem da classificação sem a necessidade de usar o nó
“Core/List/Reverse” depois.
Essa funcionalidade é interessante, pois permitirá selecionar um determinado elemento de uma lista
ordenada usando o nó “Core/List/GetItemAtIndex”.
Nota: o nó “BuiltIn/SortIndexByValue” só é aplicável em listas com dados numéricos. Para listas com
dados texto ou alfanuméricos, utilize os nós “Core/List/Sort” ou “Core/List/SortByKey”.
AULA 04
Modelagem Geométrica
Nessa aula veremos os nós da biblioteca padrão do Dynamo para trabalhar geometrias. Serão vistas as
funções usadas para modelagem geométrica e para acessar a geometria de elementos existentes no
modelo BIM.
A categoria “Geometry” da biblioteca reúne todos os nós utilizados para modelagem geométrica do
Dynamo (Figura 67).
Também é possível importar ou exportar um modelo 3D no formato de arquivo SAT utilizando nós como
“Geometry/Geometry/ImportFromSAT” e “Geometry/Geometry/ExportToSAT”.
Os pontos podem ser descritos no Dynamo usando um dos seguintes tipos de sistemas de coordenadas
de acordo com o tipo de objeto (Figura 68).
As curvas na hierarquia da geometria são os próximos objetos. No Dynamo todas as geometrias 2D são
curvas. Elas possuem um sistema de coordenadas paramétrico, onde o parâmetro “t” têm seus valores
variando de 0 até 1 (Figura 70, p.39).
As superfícies são geometrias compostas de curvas em duas direções (u e v). Possuem um sistema de
coordenadas similar ao das curvas, mas com dois parâmetros “u” e “v” (Figura 71).
AULA 05
Modelagem BIM com o Dynamo
Nessa aula veremos os nós da biblioteca padrão do Dynamo para trabalhar com modelos BIM no Revit.
Serão vistas as funções usadas para a inserção de famílias e para acessar os dados de elementos existentes
no modelo BIM.
A partir do Revit 2017 o Dynamo está incorporado ao núcleo do Revit, tornando-se um recurso nativo e
deixando seu processamento mais eficiente.
Para acessar o Dynamo a partir do Revit, acesse a aba “Gerenciar”, painel “Programação Visual” e clique
no botão Dynamo (Figura 73).
O Dynamo quando executado a partir do Revit apresenta na biblioteca de nós uma categoria chamada
Revit. Nessa categoria são encontrados todos os nós para manipulação de modelos BIM pelo Dynamo
(Figura 74).
Use os nós “Selection Model Element” ou “Selecion Model Elements”, para selecionar elementos no
modelo BIM.
Use os nós “Select Face” ou “Select Faces”, para selecionar faces de um ou mais elemento no modelo
BIM.
Esses são os nós básicos para seleção explícita no Dynamo, mas existem nós para elementos mais
específicos.
Nota: quando os elementos selecionados com esses nós forem excluídos do modelo BIM, a lógica criada
no Dynamo para manipular esses elementos deixará de funcionar.
Para a seleção de elementos no modelo BIM o Dynamo leva em consideração a hierarquia de elementos
no Revit como apresentada na Figura 77.
Considerando a hierarquia de elementos no Revit, existem vários nós que permitem selecionar elementos
usando filtros. É possível filtrar elementos, por exemplo, por categoria, nível ou tipos de família.
Figura 78 – Nós para a seleção de elementos por categoria, tipo de família e nível.
Há também nós para selecionar tipos em famílias de sistema (ex.: paredes e pisos), ou elementos
específicos (ex.: níveis), ou ainda, uma determinada categoria de elemento (ex.: portas ou janelas).
Os nós dessa categoria são usados para inserir famílias carregáveis: ex.: portas, janelas, luminárias, pilares,
etc. Para a inserção de famílias de sistema e outras famílias carregáveis (ex.: vigas), existem outras
categorias na biblioteca:
• Revit/Elements/Adaptive Components: componentes adaptativos;
• Revit/Elements/Curtain Panel: painéis cortina;
• Revit/Elements/Curtain System: sistema de painéis;
• Revit/Elements/Floor = pisos;
• Revit/Elements/Roof = telhado;
• Revit/Elements/StructuralFraming = vigas;
• Revit/Elements/Wall = paredes.
A Figura 83 apresenta um exemplo de grafo para modelar 4 paredes. O nó “Wall/ByCurveAndLevels”
permite modelar uma parede usando curvas (linhas ou arcos) e os níveis associados a nova parede.
AULA 06
Interoperabilidade
A biblioteca padrão do Dynamo contém alguns nós para integração com o Microsoft Excel na sessão
“Office”.
O nó “Office/ReadFromFile” permite ler em um arquivo Excel. Já o nó “Office/WriteToFile” permite
escrever em um arquivo Excel.
Use esses nós para exportar ou importar dados entre o Revit e Excel.
AULA 07
Programação Textual vs Programação Visual
Nessa aula veremos uma introdução as duas principais linguagens de programação textual presentes no
Dynamo: Design Script e Python.
Quando usar programação textual
A programação visual apresenta uma forma mais simples de aprender de criar programas, pois utiliza
apenas artefatos gráficos (grafos) para representar uma lógica sem a necessidade de escrever longos
códigos de programação.
Mas, quando a lógica nos grafos se torna complexa demais os mesmos tendem a ficar muito poluídos.
Nesse momento, começa a ser recomendado o uso de programação textual para deixar os grafos mais
legíveis.
No Dynamo é possível utilizar linguagens textuais, tais como: DesignScript e Python, usando os nós “Code
Block” e “Python Script”.
No código Design Script apresentado na Figura 87, a declaração “def” permite definir uma nova função
no grafo que poder ser chamada dentro um nó “Code Block”.
Figura 88 – Acesso aos nós para trabalhar com a linguagem Pytnon no Dynamo.
A figura apresenta o código contido no nó “Core/S”. Ao clicar duas vezes sobre o nó um editor de código
será exibido e nele você poderá codificar um script usando a linguagem Python.
AULA 08
Customização de nós
A criação de nós customizados é uma técnica interessante para reaproveitar uma determinada lógica em
outros projetos.
Nós customizados podem ser armazenados na biblioteca do Dynamo dentro de uma categoria existente.
Para deixar os nós customizados mais organizados é recomendável armazená-los em uma categoria que
tenha relação com a ação que novo nó vai executar.
Por exemplo, use a categoria “Core/Geometry” para nós customizados que tenham relação com a
manipulação de geometrias.
A definição de um nó customizado é armazenado em arquivos de extensão “dfy” ao invés de arquivos
com a extensão “dyn”.
Criação de um nó personalizando
Nesse exemplo, utilizaremos o grafo “Ordenação de Pontos - Algoritmo Léxico.dyn” contido na pasta
“Dataset” do treinamento para criar um nó personalizado.
Abra o grafo e aplique um zoom na região identificada em laranja (Figura 92), essa é a parte do grafo que
será usada para criar o nó personalizado.
Selecione os nós contidos na região laranja com exceção o último nó “Watch”, clique botão direito e sobre
uma área livre da área de trabalho e selecione a opção “Criar nó personalizado” no menu contexto (Figura
93).
Observe que no topo da área de trabalho aparece uma nova aba chamada “Ordenar Pontos Léxico”,
habilitando esta aba você consegue visualizar a definição do nó personalizado (Figura 96).
Nota: repare que a cor de fundo da área de trabalho é amarela para indicar que você está visualizando
uma definição de nó personalizado.
Tecle CTRL+S para salvar a definição do nó personalizado. Observe que a extensão do arquivo é “dfy” e
não “dyn” e que a pasta padrão usada para armazenar essa definição é (Figura):
C:\Users\dharm\AppData\Roaming\Dynamo\Dynamo Revit\1<versão corrente do Dynamo>\definitions
Figura 97 – Pasta padrão usada pelo Dynamo para armazenar arquivo “dyf”.
Após salvar a definição, feche a aba “Ordenar Pontos Léxico” e de volta a aba “Ordenação de Pontos -
Algoritmo Léxico”, feche-a para encerrar o processo.
Utilização de um nó personalizado
Para utilizar o nó personalizado em outro grafo, basta selecioná-lo na biblioteca como qualquer outro nó
para inserí-lo na área de trabalho.
Também é possível editar a propriedades do nó personalizado, clique clicando com o botão direito e
selecionando a opção “Editar as propriedades do nó personalizado...” (Figura 98). Faça as modificações
nas propriedades do nó personalizado e clique OK para finalizar o processo.
Por fim, é possível publicar esse nó personalizado na biblioteca de nós como um pacote. Essa opção
permitirá você adicionar esse novo nó em uma nova categoria na biblioteca. Preencha os campos da janela
“Publicar um pacote no Dynamo” como indicado na Figura 99 e clique no botão “Publicar localmente”.
Nota: a opção “Publicar on-line” lhe permite compartilhar o seu pacote no site do “Gerenciador de
pacotes”.
Considerações finais
Consulte mais detalhes sobre este e outros treinamentos da Dharma Sistemas na loja virtual:
www.dharmasistemas.wix.com/home/online-store
Referências
AUTODESK. Autodesk Revit WikiHelp. Disponível em: http://help.autodesk.com/view/RVT/2019/ENU/.
Acesso em: 15 abr. 2019.
BOSHERNITSAN, M.; DOWNES, M. Visual Programming Languages: A Survey. Report No. UCB/CSD-04-
1368. Computer Science Division (EECS). University of California. Berkeley, California, 2004. 28 p.
LACHAUER, L; RIPPMANN, M; BLOCK. P. Form Finding to Fabrication: A digital design process for masonry
vaults. In: International Association for Shell and Spatial Structures (IASS) Symposium – Spatial Structures
– Permanent and Temporary. Proceedings… Shangai: Tongji University, 2010. Disponível em:
http://www.block.arch.ethz.ch/brg/files/IASS2010_lachauer-rippmann-block.pdf. Acesso em: 15 abr.
2019.
MONTEIRO, A.; SANTOS, E.T. Uso de modelagem generativa para representação de modulações de
alvenarias em ferramentas BIM. In: Congresso da Sociedade Iberoamericana de Gráfica Digital – SIGRADI,
13., 2009, São Paulo. Anais... São Paulo: Universidade Presbiteriana Mackenzie, 2009a, p. 119-121. (ISSN
2176-0519).
STAVRIC, M.; MARINA, O. Parametric Modeling for Advanced Architecture. In: INTERNATIONAL JOURNAL
OF APPLIED MATHEMATICS AND INFORMATICS. Issue 1, Volume 5, 2011. 8 p.