Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Desde as suas origens como um complemento para o BIM (Building Information Modeling – Modelagem de informações de construção) no Revit, o Dynamo se tornou muitas coisas. Acima de tudo, tornou-se uma plataforma que permite aos designers explorar a programação visual, resolver problemas e criar suas próprias ferramentas. Vamos começar nossa jornada com o Dynamo contextualizando um pouco: o que é o Dynamo e qual é a abordagem correta para usá-lo?
O Dynamo é um aplicativo de programação visual que pode ser obtido por download e executado no modo independente “Sandbox” ou como um plug-in para outros softwares como o Revit, o FormIt ou o Civil 3D.
Saiba mais sobre a [diferença entre **Dynamo Core**/**Revit**/**Sandbox**.](https://dynamobim.org/a-new-way-to-get-dynamo-sandbox/)
O Dynamo permite trabalhar em um processo de programação visual, no qual conectamos os elementos para definir as relações e as sequências de ações que compõem os algoritmos personalizados. Podemos usar nossos algoritmos para uma ampla gama de aplicativos, desde o processamento de dados até a geração de geometria, tudo em tempo real e sem escrever nenhum código.
Os nós e fios são os componentes principais do Dynamo para oferecer suporte ao processo de programação visual. Eles ajudam a estabelecer relações visuais e sistêmicas fortes entre as partes de um projeto. Com um simples clique do mouse, conecte os nós com facilidade, enquanto desenvolve e otimiza o fluxo de trabalho do projeto.
Desde o uso da programação visual para fluxos de trabalho do projeto até o desenvolvimento de ferramentas personalizadas, o Dynamo é um aspecto essencial de uma ampla variedade de aplicativos interessantes.
A interface do usuário (IU) do Dynamo é organizada em cinco regiões principais. Abordaremos brevemente a visão geral aqui e explicaremos melhor sobre o espaço de trabalho e a biblioteca nas seções a seguir.
Menus
Barra de ferramentas
Biblioteca
Área de trabalho
Barra de execução
Confira aqui os menus para a funcionalidade básica do aplicativo Dynamo. Como a maioria dos softwares do Windows, os dois primeiros menus estão relacionados ao gerenciamento de arquivos, às operações de seleção e à edição de conteúdos. Os menus restantes são mais específicos do Dynamo.
As informações gerais e configurações podem ser encontradas no menu suspenso do Dynamo.
Sobre – Descubra a versão do Dynamo instalada no computador.
Contrato para coletar dados de usabilidade – Isso permite que você aceite, ou não, o compartilhamento dos dados de usuário para aprimorar o Dynamo.
Preferências – Inclui configurações como a definição da precisão decimal do aplicativo e a qualidade de renderização da geometria.
Sair do Dynamo
Se você tiver dúvidas, confira o menu Ajuda. Você pode acessar um dos sites de referência do Dynamo através do navegador da Internet.
Introdução – Uma breve introdução sobre o uso do Dynamo.
Guias interativos –
Amostras – Arquivos de exemplo de referência.
Dicionário do Dynamo – Recurso com a documentação sobre todos os nós.
Site do Dynamo – Visualizar o projeto do Dynamo no GitHub.
Wiki do projeto do Dynamo – Visite a wiki para saber como desenvolver usando a API do Dynamo, com suporte a bibliotecas e ferramentas.
Exibir a página inicial – Retorna para a página inicial do Dynamo quando dentro de um documento.
Relatório de um bug – Abre um problema no GitHub.
A barra de ferramentas do Dynamo contém uma série de botões para acesso rápido ao trabalho com arquivos, bem como os comandos Desfazer [Ctrl + Z] e Refazer [Ctrl + Y]. Na parte mais à direita, há outro botão que exporta um instantâneo do espaço de trabalho, o que é extremamente útil para fins de documentação e compartilhamento.
! Abrir – Abrir um arquivo .dyn (espaço de trabalho) ou .dyf (nó personalizado) existente
A biblioteca do Dynamo é um conjunto de bibliotecas funcionais e cada biblioteca contém nós agrupados por categoria. Trata-se de bibliotecas básicas que são adicionadas durante a instalação padrão do Dynamo. À medida que desenvolvemos seu uso, demonstraremos como estender a funcionalidade básica com nós personalizados e pacotes adicionais. A seção Biblioteca oferece uma orientação mais detalhada sobre esse uso.
O espaço de trabalho é onde desenvolvemos nossos programas visuais. Também é possível alterar aqui a configuração de visualização para visualizar as geometrias 3D. Consulte Espaço de trabalho para obter mais detalhes.
Execute o script do Dynamo daqui. Clique no ícone do menu suspenso no botão Executar para alternar entre os diferentes modos.
Automático: executa o script automaticamente. As alterações são atualizadas em tempo real.
Manual: o script somente é executado ao clicar no botão “Executar”. Isso é útil para fazer alterações em scripts “pesados” e complicados.
Periódico: essa opção está desativada por padrão. Somente está disponível quando o nó DateTime.Now é usado. É possível definir o gráfico para ser executado automaticamente em um intervalo especificado.
Novo – Criar um novo arquivo .dyn
Salvar/Salvar como – Salvar o arquivo .dyn ou .dyf ativo
Desfazer – Desfaz a última ação
Refazer – Refaz a próxima ação
Exportar espaço de trabalho como imagem – Exporta o espaço de trabalho visível como um arquivo PNG
Este manual inclui capítulos desenvolvidos com a Mode Lab. Esses capítulos têm como foco os elementos essenciais que você precisará para começar a trabalhar desenvolvendo seus próprios programas visuais com o Dynamo e informações importantes sobre como tirar o máximo proveito do Dynamo.
Esse guia foi projetado para atender aos leitores de diferentes níveis de conhecimento e experiência. Uma introdução geral sobre a configuração do Dynamo, a interface do usuário e os principais conceitos pode ser encontrada nas seções a seguir. Recomendamos que os novos usuários consultem os seguintes tópicos:
Para os usuários que desejam desenvolver uma compreensão mais profunda de cada elemento, como um nó específico e o conceito por trás dele, abordamos os fundamentos em um capítulo próprio.
Se você quiser ver a demonstração dos fluxos de trabalho do Dynamo, incluímos alguns gráficos na seção Exemplos de fluxos de trabalho. Siga as instruções anexadas para criar seus próprios gráficos do Dynamo.
Há mais exercícios específicos de tópicos que podem ser encontrados em capítulos posteriores, pois abordamos diferentes tópicos sobre o Dynamo. Os **exercícios** podem ser encontrados normalmente na última seção de cada página.
O Dynamo não seria o que é sem um forte grupo de usuários ávidos e colaboradores ativos. Participe da comunidade seguindo o blog, adicionando seu trabalho à galeria ou discutindo o Dynamo no fórum.
O Dynamo é idealizado como uma ferramenta de programação visual para os designers, permitindo-nos criar ferramentas que usam bibliotecas externas ou qualquer produto da Autodesk que tenha uma API. Com o Dynamo Sandbox, podemos desenvolver programas em um aplicativo estilo “Sandbox”, mas o ecossistema do Dynamo continua a crescer.
O código-fonte do projeto é de código aberto, o que nos permite estender a funcionalidade conforme desejarmos. Confira o projeto no GitHub e procure os trabalhos em andamento dos usuários personalizando o Dynamo.
Pesquise e comece a estender o Dynamo de acordo com suas necessidades
Como um ambiente de programação visual, o Dynamo permite criar a forma como os dados são processados. Os dados são números ou texto, mas também a geometria. Conforme entendido pelo computador, a geometria (ou às vezes chamada Geometria computacional) são os dados que podemos usar para criar modelos bonitos, intrincados ou orientados para o desempenho. Para fazer isso, precisamos compreender os pontos de entrada e saída dos diferentes tipos de geometria que podemos usar.
A biblioteca contém todos os nós carregados, incluindo os dez nós de categorias padrão que vêm com a instalação, bem como quaisquer nós ou pacotes personalizados carregados adicionalmente. Os nós na biblioteca são organizados hierarquicamente dentro de bibliotecas, categorias e, quando apropriado, subcategorias.
Nós básicos: vêm com a instalação padrão.
Nós personalizados: armazene as rotinas ou gráficos especiais usados com frequência como nós personalizados. Também é possível compartilhar os nós personalizados com a comunidade
Nós do Gerenciador de pacotes: conjunto de nós personalizados publicados.
Vamos abordar as categorias da hierarquia de nós, mostrar como é possível pesquisar rapidamente na biblioteca e saber mais sobre alguns dos nós usados com frequência.
Navegar por essas categorias é a maneira mais rápida de entender a hierarquia do que podemos adicionar ao nosso espaço de trabalho e a melhor maneira de descobrir novos nós que você não usou antes.
Navegue na biblioteca clicando nos menus para expandir cada categoria e suas subcategorias
Geometria oferece ótimos menus para começar a explorar, pois contêm a maior quantidade de nós.
Biblioteca
Categoria
Subcategoria
Nó
Essas opções categorizam os nós na mesma subcategoria com base na capacidade dos nós criar dados, executar uma ação ou consultar dados.
! Criar: criar ou construir uma geometria do zero. Por exemplo, um círculo.
! Ação: executar uma ação em um objeto. Por exemplo, dimensionar um círculo.
! Consulta: obter uma propriedade de um objeto que já existe. Por exemplo, obter o raio de um círculo.
Passe o cursor do mouse sobre um nó para obter informações mais detalhadas além do nome e do ícone. Isso nos oferece uma maneira rápida de entender o que o nó faz, o que ele exigirá para as entradas e o que ele fornecerá como resultado.
!
Descrição: descrição de texto simples do nó
Ícone: versão maior do ícone no menu Biblioteca
Entrada(s): nome, tipo de dados e estrutura de dados
Saída(s): tipo de dados e estrutura
Se você souber com algum grau de especificidade qual é o nó que deseja adicionar ao espaço de trabalho, digite no campo Pesquisar para procurar todos os nós correspondentes.
Clique no nó que deseja adicionar ou pressione Enter para adicionar nós realçados ao centro do espaço de trabalho.
!
Além de usar palavras-chave para tentar localizar nós, podemos digitar a hierarquia separada por um ponto no campo de pesquisa ou com blocos de código (que usam o idioma textual do Dynamo).
A hierarquia de cada biblioteca é refletida no nome dos nós adicionados ao espaço de trabalho.
Se inserir diferentes partes do local do nó na hierarquia da biblioteca no formato library.category.nodeName
, os resultados obtidos serão diferentes
library.category.nodeName
category.nodeName
nodeName
ou keyword
Normalmente, o nome do nó no espaço de trabalho será renderizado no formato category.nodeName
, com algumas exceções notáveis, especialmente nas categorias de entrada e vista.
Tenha atenção aos nós de nome semelhante e observe a diferença de categoria:
Os nós da maioria das bibliotecas incluirão o formato da categoria
Point.ByCoordinates
e UV.ByCoordinates
têm o mesmo nome, mas são provenientes de diferentes categorias
Exceções notáveis incluem funções incorporadas, Core.Input, Core.View e Operators
Com centenas de nós incluídos na instalação básica do Dynamo, quais são essenciais para o desenvolvimento de nossos programas visuais? Vamos nos concentrar naqueles que nos permitem definir os parâmetros do programa (Entrada), ver os resultados de uma ação do nó (Inspeção) e definir entradas ou funcionalidades por meio de um atalho (Bloco de código).
Os nós de entrada são os principais meios para o usuário do nosso Programa visual, seja você mesmo ou outra pessoa, fazer a interface com os parâmetros mais importantes. Confira alguns exemplos disponíveis na biblioteca principal:
Booleano
Número
Sequência de caracteres
Controle deslizante de números
Caminho do diretório
Controle deslizante de números inteiros
Caminho do arquivo
Os nós de inspeção são essenciais para gerenciar os dados que fluem através do Programa visual. É possível visualizar o resultado de um nó através da visualização dos dados do nó passando o cursor do mouse sobre o nó.
É útil manter a exibição dessas informações em um nó de Inspeção
Ou consultar os resultados da geometria através de um nó Watch3D.
Ambos são encontrados na categoria da vista na biblioteca principal.
Dica: Às vezes, a visualização 3D pode causar distrações, quando o Programa visual contém muitos nós. Considere desmarcar a opção Exibir visualização de plano de fundo no menu Configurações e usar um nó Watch3D para visualizar a geometria.
Os nós Code Block podem ser utilizados para definir um Code Block com linhas separadas por ponto e vírgula. Isso pode ser tão simples quanto X/Y
.
Também é possível usar os blocos de código como um atalho para definir uma entrada de número ou acionar outra funcionalidade do nó. A sintaxe para fazer isso segue a convenção de nomenclatura da linguagem textual do Dynamo, DesignScript.
Confira aqui uma demonstração simples (com instruções) para usar o Bloco de código no script.
!
Clique duas vezes para criar um nó de bloco de código
Circle.ByCenterPointRadius(x,y);
Type
Clique no espaço de trabalho para limpar a seleção e adicionar as entradas x
e y
automaticamente.
Crie um nó Point.ByCoordinates e um controle deslizante de número e, em seguida, conecte-os às entradas do Bloco de código.
O resultado da execução do Programa visual é mostrado como o círculo na visualização 3D
O Dynamo é um projeto ativo de desenvolvimento de código aberto. Descubra a lista de softwares compatíveis com o Dynamo.
O Dynamo vem pré-instalado com softwares como o Revit3D, o FormIt, o Civil3D etc.
!
Para obter mais orientações sobre o uso do Dynamo com um software específico, recomendamos consultar as seguintes seções:
Se você desejar usar o Dynamo como um aplicativo independente, continue lendo para obter orientações sobre como fazer o download do Sandbox.
O aplicativo do Dynamo está disponível no site do Dynamo. As versões oficiais, anteriores ou de pré-lançamento, estão disponíveis na página de download. Visite a página Como obter o Dynamo e clique em Download para obter a versão oficial lançada.
Se você estiver procurando versões de desenvolvimento anteriores ou as mais avançadas, todas as versões poderão ser encontradas na seção inferior da mesma página.
O desenvolvimento mais avançado pode incluir alguns recursos novos e experimentais que ainda não foram totalmente testados; portanto, pode ser instável. Se você usar esse desenvolvimento, poderá detectar erros ou problemas, e poderá nos ajudar a aprimorar o aplicativo informando os problemas à nossa equipe.
Recomenda-se que os iniciantes façam o download da versão estável oficial.
Antes de iniciar qualquer versão transferida por download, é necessário descompactar o conteúdo para a pasta escolhida.
Faça o download e instale o 7zip no computador para esta etapa.
Clique com o botão direito do mouse no arquivo zip e selecione Extrair tudo...
Escolha um destino para descompactar todos os arquivos.
Na pasta de destino, clique duas vezes em DynamoSandbox.exe para iniciá-lo
Você verá a tela de inicialização do DynamoSandbox, como mostrado a seguir.
Parabéns. Você terminou a configuração para usar o DynamoSandbox.
**Geometria** é uma funcionalidade adicional no Dynamo Sandbox que está disponível somente para usuários que têm uma assinatura ou licença atual para os seguintes softwares da Autodesk: Revit, Robot Structural Analysis, FormIt e Civil 3D. A funcionalidade **Geometria** permite que os usuários importem, criem, editem e exportem a geometria do Dynamo Sandbox.
Se quisermos criar modelos mais complexos que não possam ser criados com base em uma única superfície ou se desejarmos definir um volume explícito, agora precisaremos nos aventurar no domínio dos sólidos (e das Polysurfaces). Até mesmo um cubo simples é suficientemente complexo para precisar de seis superfícies, uma por face. Os sólidos dão acesso a dois conceitos-chave que as superfícies não têm: uma descrição topológica mais refinada (faces, arestas, vértices) e operações booleanas.
É possível usar operações booleanas para modificar os sólidos. Vamos usar algumas operações booleanas para criar uma bola pontiaguda.
Sphere.ByCenterPointRadius: crie o sólido da base.
Topology.Faces, Face.SurfaceGeometry: consulte as faces do sólido e converta-as em geometria da superfície. Neste caso, a esfera tem apenas uma face.
Cone.ByPointsRadii: crie cones usando pontos na superfície.
Solid.UnionAll: una os cones e a esfera.
Topology.Edges: consulte as arestas do novo sólido
Solid.Fillet: arredonde as arestas da esfera pontiaguda
Faça o download do arquivo de exemplo clicando no link abaixo.
É possível encontrar uma lista completa de arquivos de exemplo no Apêndice.
As operações booleanas são complexas e seu cálculo pode ser lento. É possível usar a funcionalidade “congelar” para suspender a execução dos nós selecionados e dos nós a jusante afetados.
1. Use o menu de contexto do botão direito do mouse para congelar a operação de União de sólidos
2. O nó selecionado e todos os nós a jusante serão visualizados em um modo duplicado cinza claro, e os fios afetados serão exibidos como linhas tracejadas. A visualização da geometria afetada também será duplicada. Agora é possível alterar os valores anteriores sem calcular a união booleana.
3. Para descongelar os nós, clique com o botão direito do mouse e desmarque Congelar.
4. Todos os nós afetados e as visualizações de geometria associadas serão atualizados e revertidos para o modo de visualização padrão.
Você pode obter mais informações sobre o congelamento de nós na seção [4_nodes_and_wires](../../4\_nodes\_and\_wires/ "mention").
Os sólidos consistem em uma ou mais superfícies que contêm volume por meio de um limite fechado que define a “entrada” ou a “saída”. Independentemente de quantas superfícies existem, elas devem formar um volume “hermético” para serem consideradas como um sólido. Os sólidos podem ser criados unindo superfícies ou Polysurfaces ou usando operações como elevação, varredura e revolução. As primitivas Esfera, Cubo, Cone e Cilindro também são sólidos. Um cubo com, pelo menos, uma face removida conta como uma Polysurface, que tem algumas propriedades similares, mas não é um sólido.
Um plano é composto por uma única superfície e não é um sólido.
Uma esfera é composta por uma superfície, mas é um sólido.
Um cone é composto por duas superfícies unidas para criar um sólido.
Um cilindro é composto por três superfícies unidas para criar um sólido.
Um cubo é composto de seis superfícies unidas para criar um sólido.
Os sólidos são compostos de três tipos de elementos: vértices, arestas e faces. As faces são as superfícies que compõem o sólido. As arestas são as curvas que definem a conexão entre as faces adjacentes e os vértices são os pontos inicial e final dessas curvas. É possível consultar esses elementos usando os nós de topologia.
Faces
Arestas
Vértices
É possível modificar os sólidos arredondando ou chanfrando suas bordas para eliminar os cantos e os ângulos agudos. A operação de chanfro cria uma superfície regular entre duas faces, enquanto o arredondamento é mesclado entre as faces para manter a tangência.
Cubo sólido
Cubo chanfrado
Cubo arredondado
As operações booleanas de sólidos são métodos para combinar dois ou mais sólidos. Uma única operação booleana significa realizar quatro operações:
Fazer interseção de dois ou mais objetos.
Dividir os objetos nas interseções.
Excluir as partes indesejadas da geometria.
Unir tudo novamente.
União: remove as partes sobrepostas dos sólidos e une-as em um único sólido.
Diferença: subtrai um sólido de outro. O sólido a ser subtraído é chamado de ferramenta. Observe que é possível alternar qual sólido é a ferramenta para manter o volume inverso.
Interseção: mantém somente o volume de interseção dos dois sólidos.
UnionAll: operação de união com esfera e cones virados para fora
DifferenceAll: operação de diferença com esfera e cones virados para dentro
Importe e avalie uma superfície em um parâmetro no Dynamo para ver o tipo de informações que podemos extrair.
Surface.PointAtParameter retorna o ponto em uma determinada coordenada UV
Surface.NormalAtParameter retorna o vetor normal em uma determinada coordenada UV
Surface.GetIsoline retorna a curva isoparamétrica em uma coordenada U ou V: observe a entrada isoDirection.
Faça o download dos arquivos de exemplo clicando no link abaixo.
É possível encontrar uma lista completa de arquivos de exemplo no Apêndice.
Uma superfície é uma forma matemática definida por uma função e dois parâmetros. Em vez de t
para curvas, usamos U
e V
para descrever o espaço de parâmetro correspondente. Isso significa que temos mais dados geométricos para desenhar ao trabalhar com este tipo de geometria. Por exemplo, as curvas apresentam vetores tangentes e planos normais (que podem ser rotacionados ou girados ao longo do comprimento da curva), enquanto as superfícies apresentam vetores normais e planos tangentes que são consistentes na sua orientação.
Superfície
Isocurva U
Isocurva V
Coordenada UV
Plano perpendicular
Vetor normal
Surface Domain: um domínio de superfície é definido como o intervalo de parâmetros (U,V) que são avaliados em um ponto tridimensional naquela superfície. O domínio em cada cota (U ou V) normalmente é descrito como dois números (U mín a U máx) e (V mín a V máx).
Embora a forma da superfície não pareça “retangular” e localmente possa haver um conjunto de isocurvas mais rígido ou mais solto, o “espaço” definido por seu domínio é sempre bidimensional. No Dynamo, as superfícies sempre são consideradas como tendo um domínio definido por um mínimo de 0,0 e um máximo de 1,0 nas direções U e V. As superfícies planas ou aparadas podem apresentar diferentes domínios.
Isocurva (ou curva isoparamétrica): uma curva definida por um valor U ou V constante na superfície e um domínio de valores para a outra direção U ou V correspondente.
Coordenada UV: o ponto no espaço de parâmetro UV definido por U, V e, às vezes, W.
Plano perpendicular: um plano que é perpendicular às Isocurvas U e V em uma determinada coordenada UV.
Vetor normal: um vetor que define a direção “para cima” em relação ao plano perpendicular.
As superfícies NURBS são muito similares às curvas NURBS. É possível considerar as superfícies NURBS como uma grade de curvas NURBS que estão em duas direções. A forma de uma superfície NURBS é definida por um número de pontos de controle e o grau da superfície nas direções U e V. Os mesmos algoritmos são usados para calcular a forma, as normais, as tangentes, as curvaturas e outras propriedades por meio de pontos de controle, espessuras e graus.
No caso de superfícies NURBS, há duas direções implícitas pela geometria, porque as superfícies NURBS são, independentemente da forma que vemos, grades retangulares de pontos de controle. E, embora essas direções sejam muitas vezes arbitrárias em relação ao sistema de coordenadas universal, nós as usaremos com frequência para analisar nossos modelos ou gerar outra geometria com base na superfície.
Grau (U,V) = (3,3)
Grau (U,V) = (3,1)
Grau (U,V) = (1,2)
Grau (U,V) = (1,1)
As Polysurfaces são compostas por superfícies que são unidas através de uma aresta. As Polysurfaces oferecem muito mais do que uma definição UV bidimensional, pois agora podemos percorrer as formas conectadas por meio de sua topologia.
Embora “Topologia” geralmente descreva um conceito sobre como as peças são conectadas e/ou relacionadas, a topologia no Dynamo também é um tipo de geometria. Especificamente, é uma categoria principal para Superfícies, Polysurfaces e Sólidos.
Às vezes chamada de patches, a união de superfícies dessa maneira permite criar formas mais complexas, além de definir detalhes na junção. Convenientemente, podemos aplicar uma operação de arredondamento ou chanfro às arestas de uma PolySurface.
Linha
Polilinha
Arco
Circle
Elipse
Curva NURBS
PolyCurve
!
NurbsCurve.ByControlPoints usa a lista de pontos como pontos de controle
NurbsCurve.ByPoints desenha uma curva através da lista de pontos
Faça o download do arquivo de exemplo clicando no link abaixo.
É possível encontrar uma lista completa de arquivos de exemplo no Apêndice.
O termo Curve é um termo mais abrangente que engloba todas as diferentes formas curvas (mesmo se forem retas). A curva capital “C” é a categorização principal para todos esses tipos de forma: linhas, círculos, splines, etc. Tecnicamente, uma curva descreve cada ponto possível que possa ser encontrado inserindo “t” em um conjunto de funções, que podem variar desde funções simples (x = -1.26*t, y = t
) a funções que envolvam cálculos. Não importa com que tipo de curva estamos trabalhando, este Parâmetro chamado “t” é uma propriedade que podemos avaliar. Além disso, independentemente da aparência da forma, todas as curvas também têm um ponto inicial e um ponto final, que coincidem com os valores mínimo e máximo de “t” usados para criar a curva. Isso também nos ajuda a compreender sua direcionalidade.
É importante observar que o Dynamo assume que o domínio dos valores “t” de uma curva é compreendido entre 0,0 e 1,0.
Todas as curvas também possuem diversas propriedades ou características que podem ser usadas para descrever ou analisar. Quando a distância entre os pontos inicial e final for zero, a curva será "fechada". Além disso, cada curva tem vários pontos de controle, se todos esses pontos estão localizados no mesmo plano, a curva é "plana". Algumas propriedades se aplicam à curva como um todo, enquanto outras somente se aplicam a pontos específicos ao longo da curva. Por exemplo, a planaridade é uma propriedade global, enquanto um vetor tangente em um determinado valor "t" é uma propriedade local.
As Linhas são a forma mais simples de Curvas. Podem não parecer curvas, mas na verdade são: apenas sem qualquer curvatura. Existem algumas maneiras diferentes de criar Linhas, sendo a mais intuitiva do ponto A ao ponto B. A forma da linha AB será desenhada entre os pontos, mas matematicamente ela se estende infinitamente em ambas as direções.
Quando nós conectamos duas linhas, temos uma Polilinha. Aqui temos uma representação simples do que é um Ponto de controle. Editar qualquer uma dessas localizações de ponto irá alterar a forma da D. Se a polilinha estiver fechada, temos um polígono. Se os comprimentos de aresta do polígono forem todos iguais, ele será descrito como normal.
À medida que adicionamos mais complexidade às funções paramétricas que definem uma forma, podemos avançar mais uma etapa a partir de uma linha para criar um Arco, Círculo, Arco de elipse ou Ellipse descrevendo um ou dois raios. As diferenças entre a versão do arco e o círculo ou elipse são apenas se a forma está fechada.
NURBS (Splines de base racional não uniforme) são representações matemáticas que podem modelar com precisão qualquer forma, desde uma linha simples bidimensional, um círculo, um arco ou um retângulo até a curva orgânica tridimensional mais complexa e de forma livre. Devido à sua flexibilidade (relativamente poucos pontos de controle, mas interpolação suave com base nas configurações de grau) e precisão (delimitado por uma matemática robusta), os modelos NURBS podem ser usados em qualquer processo, da ilustração e animação à fabricação.
Grau: o grau da curva determina o intervalo de influência que os pontos de controle têm em uma curva; quanto maior for o grau, maior será o intervalo. O grau é um número inteiro positivo. Este número é normalmente 1, 2, 3 ou 5, mas pode ser qualquer número inteiro positivo. As linhas e polilinhas NURBS são normalmente de grau 1 e a maioria das curvas de forma livre é de graus 3 ou 5.
Pontos de controle: os pontos de controle são uma lista de ao menos pontos de graus + 1. Uma das formas mais fáceis de alterar a forma de uma curva NURBS é mover seus Pontos de controle.
Peso: os pontos de controle têm um número associado denominado Peso. Os pesos são, normalmente, números positivos. Quando os Pontos de controle de uma curva têm o mesmo peso (normalmente 1), a Curva é chamada não racional, caso contrário, a Curva é chamada racional. A maioria das curvas NURBS é não racional.
Nós: os nós são uma lista de números (graus+N-1), em que N é o número de pontos de controle. Os nós são usados junto com os pesos para controlar a influência dos Pontos de controle na curva resultante. Um uso dos nós é a criação de pontos de inflexão em certos pontos da curva.
Grau = 1
Grau = 2
Grau = 3
Observe que quanto maior for o valor do grau, mais pontos de controle serão usados para interpolar a curva resultante.
No Dynamo, os Nós são os objetos que você conecta para formar um programa visual. Cada Nó executa uma operação – às vezes pode ser tão simples quanto armazenar um número ou pode ser uma ação mais complexa, como criar ou consultar geometria.
A maioria dos nós no Dynamo são compostos de cinco partes. Embora existam exceções, como os nós de entrada, a anatomia de cada nó pode ser descrita da seguinte maneira:
Nome – O nome do nó com uma convenção de nomenclatura
Category.Name
.Corpo principal – O corpo principal do nó: se clicar aqui com o botão direito do mouse, serão apresentadas opções de todo o nó
Portas (entrada e saída) – Os destinatários dos fios que fornecem os dados de entrada para o nó, assim como os resultados da ação do nó
Valor padrão – Clique com o botão direito do mouse em uma porta de entrada: alguns nós têm valores padrão que podem ser usados ou não.
As entradas e saídas nos nós são chamadas de portas e agem como receptores para os fios. Os dados entram o nó através das portas à esquerda e saem do nó após ele ter executado sua operação à direita.
As portas esperam receber dados de um determinado tipo. Por exemplo, ao conectar um número como 2.75 às portas em um nó Ponto por coordenadas, resultará na criação com êxito de um ponto; no entanto, se fornecermos “Vermelho” à mesma porta, resultará em um erro.
Dica: Passe o cursor do mouse sobre uma porta para ver uma dica de ferramenta contendo o tipo de dados esperado.
Legenda da porta
Dica de ferramenta
Tipo de dados
Valor padrão
O Dynamo fornece uma indicação do estado da execução do programa visual ao renderizar os nós com diferentes esquemas de cores com base no status de cada nó. A hierarquia de estados segue esta sequência: Erro > Aviso > Informações > Visualização.
Quando você passa o cursor do mouse ou clica com o botão direito do mouse sobre o nome ou as portas, serão apresentadas informações e opções adicionais.
Entradas satisfeitas – Um nó com barras verticais azuis sobre suas portas de entrada está bem conectado e tem todas as suas entradas conectadas com êxito.
Entradas não satisfeitas – Um nó com uma barra vertical vermelha sobre uma ou mais portas de entrada precisa ter essas entradas conectadas.
Função – Um nó que gera uma função e tem uma barra vertical cinza sobre uma porta de saída é um nó de função.
Selecionado – Os nós atualmente selecionados têm um realce azul-claro em sua borda.
Congelado – Um nó azul translúcido está congelado, suspendendo a execução do nó.
Aviso – Uma barra de status amarela abaixo do nó indica um estado de aviso, o que significa que o nó não tem dados de entrada ou pode ter tipos de dados incorretos.
Erro – Uma barra de status vermelha abaixo do nó indica que o nó está em um estado de erro
Informações – Uma barra de status azul abaixo do nó indica um estado de informações, que sinaliza informações úteis sobre os nós. Esse estado pode ser acionado ao se aproximar de um valor máximo suportado pelo nó, ao usar um nó de uma forma que tenha possíveis impactos no desempenho, etc.
Dica: Com essa informação da dica de ferramenta, examine os nós a montante para ver se o tipo de dados ou a estrutura de dados necessários apresenta erro.
Dica de ferramenta de aviso – “Nulo” ou nenhum dado não pode ser entendido como um Duplo, ou seja, um número
Use o nó de inspeção para examinar os dados de entrada
A montante do nó de número está indicando “Vermelho”, e não um número
Em algumas situações, você pode desejar impedir a execução de nós específicos no programa visual. É possível fazer isso “congelando” o nó, que é uma opção no menu de contexto do nó.
Congelar um nó também congela os nós que estão a jusante dele. Em outras palavras, todos os nós que dependem da saída de um nó congelado também serão congelados.
Os fios se conectam entre os nós para criar relações e estabelecer o fluxo do nosso programa visual. Podemos pensar neles literalmente como fios elétricos que transmitem impulsos de dados de um objeto para o seguinte.
Os fios conectam a porta de saída de um nó à porta de entrada de outro nó. Essa direcionalidade estabelece o Fluxo de dados no programa visual.
As portas de entrada estão no lado esquerdo e as portas de saída estão localizadas no lado direito dos nós; portanto, geralmente podemos dizer que o fluxo do programa se move da esquerda para a direita.
Crie um fio clicando com o botão esquerdo do mouse em uma porta e, em seguida, clicando com o botão esquerdo do mouse na porta de outro nó para criar uma conexão. Enquanto estamos no processo de criar uma conexão, o fio aparecerá a tracejado e se tornará numa linha contínua quando for conectado com êxito.
Os dados sempre fluirão por esse fio da saída para a entrada; no entanto, podemos criar o fio em qualquer direção em termos da sequência dos cliques nas portas conectadas.
Frequentemente, queremos ajustar o fluxo do programa em nosso programa visual editando as conexões representadas pelos fios. Para editar um fio, clique com o botão esquerdo do mouse na porta de entrada do nó que já está conectado. Você agora tem duas opções:
Para alterar a conexão em uma porta de entrada, clique com o botão esquerdo do mouse em outra porta de entrada
!
Para remover o fio, afaste o fio e clique com o botão esquerdo do mouse no espaço de trabalho
Reconecte vários fios usando Shift+clique com o botão esquerdo do mouse
Duplique um fio usando Ctrl+clique com o botão esquerdo do mouse
Por padrão, nossos fios serão visualizados com um traço cinza. Quando um nó é selecionado, ele vai renderizar qualquer fio de conexão com o mesmo realce azul-claro do nó.
Fio realçado
Fio padrão
Ocultar fios por padrão
Caso você prefira ocultar os fios no gráfico, pode encontrar essa opção em Vista > Conectores > desmarque Mostrar conectores.
Com essa configuração, somente os nós selecionados e seus fios unidos serão mostrados no realce azul-claro.
Também é possível ocultar somente o fio selecionado clicando com o botão direito do mouse na saída Nós > e selecionando Ocultar fios
!
Para começar a usar, inicie-o no painel da barra de ferramentas. Dependendo do software que você está usando, o ícone de inicialização normalmente pode ser encontrado na guia Menu > Gerenciar. Clique no ícone do Dynamo para iniciá-lo.
Isso faz com que os booleanos de sólidos sejam um processo eficaz para economizar tempo. Existem três operações booleanas de sólidos que distinguem quais partes da geometria são mantidas.
Além dessas três operações, o Dynamo tem os nós Solid.DifferenceAll e Solid.UnionAll para executar operações de diferença e união com vários sólidos.
Usamos no modelo para representar objetos que vemos em nosso mundo tridimensional. Embora as curvas nem sempre sejam planas, ou seja, sejam tridimensionais, o espaço que elas definem estará sempre vinculado a uma cota. As superfícies proporcionam outra dimensão e um conjunto de propriedades adicionais que podemos usar em outras operações de modelagem.
As são o primeiro tipo de dados geométricos que abordamos e que tem um conjunto mais familiar de propriedades descritivas de forma: em que medida elas são mais curvas ou retas? Longas ou curtas? E lembre-se de que os Pontos ainda são os nossos blocos de construção para definir qualquer coisa, desde uma linha a uma spline e todos os tipos de curva entre elas.
é composta por um conjunto de pontos, cada linha tem ao menos dois pontos. Um dos modos mais comuns de criar linhas no Dynamo é usando Line.ByStartPointEndPoint
para criar uma linha no Dynamo.
é um modelo usado para representar curvas e superfícies com precisão. Uma curva senoidal no Dynamo usando dois métodos diferentes para criar curvas NURBS para comparar os resultados.
Ícone de amarra – Indica a especificada para as entradas de lista coincidentes (mais informações adiante)
Visualização desativada – Uma barra de status cinza abaixo do nó e um ícone de olho indicam que a visualização da geometria do nó está desativada.
Se o programa visual tiver avisos ou erros, o Dynamo fornecerá informações adicionais sobre o problema. Qualquer nó exibido em amarelo também terá uma dica de ferramenta acima do nome. Passe o cursor do mouse sobre o ícone de dica de ferramenta de aviso ou erro para expandi-lo.
Quando estivermos prontos para nos aprofundar no desenvolvimento de programas visuais, precisaremos de uma compreensão mais profunda dos blocos de construção que usaremos. Este capítulo apresentará os conceitos fundamentais em torno dos dados: o que percorre os fios do nosso programa Dynamo.
No campo da modelagem de cálculo, as malhas são uma das formas mais difundidas de representar a geometria 3D. A geometria de malha é geralmente feita com um conjunto de quadriláteros ou triângulos, pode ser uma alternativa leve e flexível para trabalhar com NURBS. As malhas são usadas em tudo, desde renderização e visualizações até fabricação digital e impressão 3D.
O Dynamo define malhas usando uma estrutura de dados Face-Vértice. Em seu nível mais básico, esta estrutura é simplesmente uma coleção de pontos que são agrupados em polígonos. Os pontos de uma malha são chamados de vértices, enquanto os polígonos como a superfície são chamados de faces.
Para criar uma malha, precisamos de uma lista de vértices e um sistema de agrupamento desses vértices em faces, o que é denominado grupo de índice.
Lista de vértices
Lista de grupos de índice para definir faces
Os recursos de malha do Dynamo podem ser estendidos instalando o pacote Kit de ferramentas de malha. O Kit de ferramentas de malha do Dynamo fornece ferramentas para importar malhas de formatos de arquivo externo, criar uma malha de objetos de geometria do Dynamo e criar manualmente malhas de acordo com seus vértices e índices.
A biblioteca também fornece ferramentas para modificar malhas, reparar malhas ou extrair fatias horizontais para uso na fabricação.
Consulte Estudos de caso do kit de ferramentas de malha, por exemplo, para saber como usar esse pacote.
Uma Malha é uma coleção de quadriláteros e triângulos que representam uma geometria de superfície ou sólido. Como os sólidos, a estrutura de um objeto de malha inclui vértices, arestas e faces. Há propriedades adicionais que também tornam as Malhas exclusivas, como as normais.
Vértices de malha
Arestas de malha *Arestas com apenas uma face adjacente são chamadas "Naked". Todas as outras arestas são "Clothed"
Faces de malha
Os vértices de uma malha são simplesmente uma lista de pontos. O índice dos vértices é muito importante ao construir uma malha ou obter informações sobre a estrutura de uma malha. Para cada vértice, há também uma normal de vértice correspondente (vetor) que descreve a direção média das faces anexadas e nos ajuda a compreender a orientação “dentro” e “fora” da malha.
Vértices
Normais de vértice
Uma face é uma lista ordenada de três ou quatro vértices. A representação "superfície" de uma face de malha, portanto, é implícita de acordo com a posição dos vértices que estão sendo indexados. Já temos a lista de vértices que compõem a malha, por isso, em vez de fornecer pontos individuais para definir uma face, basta usar o índice dos vértices. Isso também nos permite usar o mesmo vértice em mais de uma face.
Uma face de quadrados feita com índices 0, 1, 2 e 3
Uma face de triângulo feita com índices 1, 4 e 2. Observe que os grupos de índice podem ser deslocados em sua ordem, desde que a sequência seja ordenada de forma anti-horária, a face será definida corretamente
Como a geometria de malha é diferente da geometria NURBS? Em que casos é recomendado utilizar um e não o outro?
Em um capítulo anterior, vimos que as superfícies NURBS são definidas por uma série de curvas NURBS seguindo em duas direções. Essas direções são legendadas como U
eV
, e permitem que uma superfície NURBs seja parametrizada de acordo com um domínio de superfície bidimensional. As curvas em si são armazenadas como equações no computador, permitindo que as superfícies resultantes sejam calculadas para um grau arbitrariamente pequeno de precisão. No entanto, pode ser difícil combinar várias superfícies NURBS juntas. A união de duas superfícies NURBS resultará em uma polysurface, onde diferentes seções da geometria terão diferentes parâmetros UV e definições de curva.
Superfície
Curva isoparamétrica (Isoparm)
Ponto de controle de superfície
Polígono de controle de superfície
Ponto isoparamétrico
Estrutura da superfície
Malha
Aresta consolidada
Rede de malha
Arestas de malha
Normal de vértice
Face de malha/normal de face de malha
As malhas, por outro lado, são compostas de um número discreto de vértices e faces exatamente definidos. A rede de vértices geralmente não pode ser definida por coordenadas simples UV
e, como as faces são separadas, a quantidade de precisão é incorporada à malha e só pode ser alterada refinando a malha e adicionando mais faces. A falta de descrições matemáticas permite que as malhas manipulem com mais flexibilidade a geometria complexa em uma única malha.
Outra diferença importante é a extensão para a qual uma alteração local na geometria de Malha ou NURBS afeta toda a forma. Mover um vértice de uma malha somente afeta as faces que são adjacentes a esse vértice. Em superfícies NURBS, a extensão da influência é mais complicada e depende do grau da superfície, bem como dos pesos e nós dos pontos de controle. Em geral, no entanto, mover um único ponto de controle em uma superfície NURBS cria uma alteração mais suave e mais extensa na geometria.
Superfície NURBS: mover um ponto de controle tem influência que se estende através da forma
Geometria de malha: mover um vértice tem influência somente em elementos adjacentes
Uma analogia que pode ser útil é para comparar uma imagem vetorial (composta de linhas e curvas) com uma imagem raster (composta de pixels individuais). Se você aproximar o zoom em uma imagem de vetor, as curvas permanecem definidas e claras, ao efetuar o zoom em uma imagem raster resulta em uma vista em que os pixels individuais se tornam maiores. Nesta analogia, as superfícies NURBS podem ser comparadas a uma imagem vetorial porque há uma relação matemática suave, enquanto uma malha se comporta de forma similar a uma imagem raster com uma resolução definida.
Geometria é a linguagem da área de design. Quando uma linguagem de programação ou ambiente tem um kernel de geometria em seu núcleo, podemos explorar as possibilidades de projetar modelos precisos e robustos, automatizando rotinas de projeto e gerando iterações de projeto com algoritmos.
A compreensão dos tipos de geometria e como eles estão relacionados permitirá navegar no conjunto de Nós de geometria disponíveis na biblioteca. Os nós de geometria são organizados em ordem alfabética, ao contrário da hierarquia; aqui eles são exibidos de forma similar ao layout na interface do Dynamo.
Além disso, a criação de modelos no Dynamo e conexão da visualização de plano fundo ao fluxo de dados em nosso gráfico são processos que devem se tornar mais intuitivos com o passar do tempo.
Observe o sistema de coordenadas assumido renderizado pela grade e pelos eixos coloridos
Os nós selecionados irão renderizar a geometria correspondente (se o nó criar geometria) no plano de fundo, a cor de realce
Faça o download do arquivo de exemplo clicando no link abaixo.
É possível encontrar uma lista completa de arquivos de exemplo no Apêndice.
A geometria, tradicionalmente definida, é o estudo de forma, tamanho, posição relativa das imagens e as propriedades de espaço. Este campo tem uma história rica que remonta a milhares de anos. Com o advento e a popularização do computador, ganhamos uma poderosa ferramenta na definição, na exploração e na geração de geometria. Agora é muito fácil calcular o resultado de interações geométricas complexas, o fato de que estamos fazendo isso é quase transparente.
Se você tem curiosidade em descobrir como a geometria pode ser diversa e complexa com o poder do computador, faça uma pesquisa rápida pelo Stanford Bunny, um modelo tradicional usado para testar algoritmos.
Compreender a geometria no contexto de algoritmos, computação e complexidade pode parecer desafiador. No entanto, há alguns princípios-chave e relativamente simples que podemos estabelecer como fundamentos para começar a construção em aplicativos mais avançados:
A geometria corresponde a dados: para o computador e o Dynamo, um modelo Bunny não é tão diferente de um número.
A geometria depende da abstração: fundamentalmente, os elementos geométricos são descritos por números, relações e fórmulas em um determinado sistema de coordenadas espaciais
A geometria possui uma hierarquia: os pontos são reunidos para criar linhas, as linhas se unem para criar superfícies, e assim por diante
A geometria descreve simultaneamente a parte e o todo: quando uma curva é exibida, ela tem a forma e todos os pontos possíveis ao longo dela
Na prática, esses princípios significam que precisamos estar cientes do material com o qual estamos trabalhando (com que tipo de geometria, como ela foi criada, etc.) para que possamos compor, decompor e recompor de forma fluida diferentes geometrias à medida que desenvolvemos modelos mais complexos.
Vamos separar um momento para analisar a relação entre as descrições de geometria abstrata e hierárquica. Como esses dois conceitos estão relacionados, mas nem sempre são óbvios no início, podemos chegar rapidamente a um bloco de estradas conceitual quando começamos a desenvolver fluxos de trabalho ou modelos mais profundos. Para começar, vamos usar a cotagem como um descritor fácil do "material" que modelamos. O número de cotas necessárias para descrever uma forma nos dá uma ideia sobre como a geometria é organizada hierarquicamente.
Um Ponto (definido por coordenadas) não possui dimensões, apenas números que descrevem cada coordenada
Uma Linha (definida por dois pontos) agora tem uma cota: é possível “navegar” na linha para frente (direção positiva) ou para trás (direção negativa)
Um Plano (definido por duas linhas) tem duas dimensões: agora é possível andar mais para a esquerda ou mais para a direita
Uma Caixa (definida por dois planos) tem três dimensões: podemos definir uma posição com relação para cima ou para baixo
A cotagem é uma forma conveniente de começar a classificar a geometria, mas não é necessariamente a melhor. Afinal, não modelamos apenas com pontos, linhas, planos e caixas; e se eu quiser algum modelo curvado? Além disso, há toda uma outra categoria de tipos de geometria que é completamente abstrata, ou seja, define propriedades como orientação, volume ou relações entre as peças. Não podemos considerar um vetor, e então como o definimos em relação ao que vemos no espaço? Uma categorização mais detalhada da hierarquia geométrica deve acomodar a diferença entre Tipos abstratos ou “Auxiliares”, cada um dos quais podemos agrupar pelo que eles ajudam a fazer e os tipos que ajudam a descrever a forma dos elementos do modelo.
A criação de modelos no Dynamo não se limita ao que podemos gerar com Nós. Aqui estão algumas maneiras importantes de levar o processo para o próximo nível com a Geometria:
O Dynamo permite importar arquivos: tente usar um CSV para nuvens de pontos ou SAT para trazer superfícies
Quando trabalhamos com o Revit, podemos referenciar os elementos do Revit para usar no Dynamo
O Dynamo Package Manager oferece funcionalidade adicional para tipos e operações estendidos de geometria: verifique o pacote Kit de ferramentas de malha
Um ponto é definido por nada mais que um ou mais valores chamados coordenadas. A quantidade de valores de coordenadas que precisamos para definir o ponto depende do sistema de coordenadas ou do contexto em que ele se encontra.
O tipo mais comum de ponto no Dynamo existe em nosso Sistema de coordenadas universais tridimensional e tem três coordenadas [X,Y,Z] (Ponto 3D no Dynamo).
Um ponto 2D no Dynamo tem duas coordenadas [X,Y].
Os parâmetros para curvas e superfícies são contínuos e se estendem além da aresta da geometria fornecida. Como as formas que definem o espaço paramétrico residem em um Sistema de coordenadas universais tridimensional, sempre podemos converter uma coordenada paramétrica em uma coordenada “Universal”. O ponto [0,2; 0,5] na superfície, por exemplo, é o mesmo que o ponto [1,8; 2,0; 4,1] nas coordenadas universais.
Ponto em coordenadas XYZ universais assumidas
Ponto relativo a um determinado sistema de coordenadas (cilíndrico)
Ponto como coordenada UV em uma superfície
Faça o download do arquivo de exemplo clicando no link abaixo.
É possível encontrar uma lista completa de arquivos de exemplo no Apêndice.
Se a geometria é o idioma de um modelo, então os pontos são o alfabeto. Os pontos são a fundação na qual todas as outras geometrias são criadas: precisamos de ao menos dois pontos para criar uma curva, precisamos de ao menos três pontos para criar um polígono ou uma face de malha, e assim por diante. A definição de posição, ordem e relação entre os pontos (tente uma função de seno) nos permite definir uma geometria de ordem superior como as coisas que reconhecemos como círculos ou curvas.
Um círculo que usa as funções
x=r*cos(t)
ey=r*sin(t)
Uma curva senoidal que usa as funções
x=(t)
ey=r*sin(t)
Os pontos também podem existir em um sistema de coordenadas bidimensional. A convenção tem uma notação de letra diferente dependendo do tipo de espaço com que estamos trabalhando: podemos usar [X,Y] em um plano ou [U,V] se estivermos em uma superfície.
Um ponto no Sistema de coordenadas euclidianas: [X,Y,Z]
Um ponto em um sistema de coordenadas de parâmetro de curva: [t]
Um ponto em um sistema de coordenadas de parâmetro de superfície: [U,V]
Uma lista é uma coleção de elementos ou de itens. Por exemplo, uma penca de bananas. Cada banana é um item na lista (ou penca). É mais fácil pegar uma penca de bananas em vez de cada banana individualmente, e o mesmo vale para agrupar elementos por relações paramétricas em uma estrutura de dados.
Foto de Augustus Binu.
Quando fazemos compras, colocamos todos os itens comprados em uma sacola. Essa sacola também é uma lista. Para fazer pão de banana, precisaremos de três pencas de bananas (vamos fazer muito pão de banana). O saco representa uma lista de pencas de bananas e cada penca representa uma lista de bananas. O saco é uma lista de listas (bidimensionais) e a penca de bananas é uma lista (unidimensional).
No Dynamo, os dados da lista são ordenados e o primeiro item em cada lista tem um índice “0”. Abaixo, vamos discutir como as listas são definidas no Dynamo e como várias listas se relacionam entre si.
Uma coisa que pode parecer estranha no início é que o primeiro índice de uma lista é sempre 0; não 1. Portanto, quando falamos sobre o primeiro item de uma lista, na verdade, queremos dizer o item que corresponde ao índice 0.
Por exemplo, se você contasse o número de dedos que temos na mão direita, as chances são de que você teria contado de 1 a 5. No entanto, se você colocar seus dedos em uma lista, o Dynamo teria dado índices de 0 a 4. Embora isso possa parecer um pouco estranho para programadores iniciantes, o índice com base em zero é uma prática padrão na maioria dos sistemas de cálculo.
Observe que ainda temos cinco itens na lista; só que a lista está usando um sistema de contagem baseado em zero. E os itens que estão sendo armazenados na lista não precisam ser apenas números. Eles podem ser qualquer tipo de dados que o Dynamo suporta, como pontos, curvas, superfícies, famílias etc.
a. Índice
b. Ponto
c. Item
Muitas vezes, a maneira mais fácil de analisar o tipo de dados armazenados em uma lista é conectar um nó de inspeção à saída de outro nó. Por padrão, o nó de inspeção exibe automaticamente todos os índices no lado esquerdo da lista e exibe os itens de dados na direita.
Esses índices são um elemento crucial ao trabalhar com listas.
Nas listas, as entradas e as saídas variam de acordo com o nó do Dynamo que está sendo usado. Como exemplo, vamos usar uma lista de cinco pontos e conectar essa saída a dois nós diferentes do Dynamo: PolyCurve.ByPoints e Circle.ByCenterPointRadius:
A entrada pontos para PolyCurve.ByPoints está procurando “Point[]”. Isso representa uma lista de pontos
A saída para PolyCurve.ByPoints é uma policurva única criada com base em uma lista de cinco pontos.
A entrada centerPoint para Circle.ByCenterPointRadius solicita “Ponto”.
A saída para Circle.ByCenterPointRadius é uma lista de cinco círculos, cujos centros correspondem à lista original de pontos.
Os dados de entrada para PolyCurve.ByPoints e Circle.ByCenterPointRadius são os mesmos. No entanto, o nó Polycurve.ByPoints gera uma policurva, enquanto o nó Circle.ByCenterPointRadius gera cinco círculos com centros em cada ponto. Isso faz sentido intuitivamente: a policurva é desenhada como uma curva que conecta os cinco os pontos, enquanto os círculos criam um círculo diferente em cada ponto. O que está acontecendo com os dados?
Passando o cursor do mouse sobre a entrada pontos para Polycurve.ByPoints, vemos que a entrada está procurando “Point[]”. Observe os colchetes no final. Isso representa uma lista de pontos e, para criar uma policurva, a entrada precisa ser uma lista para cada policurva. Esse nó, portanto, condensará cada lista em uma policurva.
Por outro lado, a entrada centerPoint para Circle.ByCenterPointRadius solicita “Ponto”. Esse nó procura um ponto, como um item, para definir o ponto central do círculo. É por isso que obtemos cinco círculos com base nos dados de entrada. Reconhecer essa diferença com as entradas no Dynamo ajuda a compreender melhor como os nós funcionam ao gerenciar os dados.
A correspondência de dados é um problema sem uma solução fácil. Isso ocorre quando um nó tem acesso a entradas de tamanhos diferentes. Alterar o algoritmo de correspondência de dados pode gerar resultados muito diferentes.
Imagine um nó que cria segmentos de linha entre pontos (Line.ByStartPointEndPoint). Ele terá dois parâmetros de entrada que fornecem as coordenadas dos pontos:
A maneira mais simples é conectar as entradas individualmente até que um dos fluxos se esgote. Isso é denominado algoritmo “Lista mais curta”. Este é o comportamento padrão dos nós do Dynamo:
O algoritmo “Lista mais longa” continua conectando entradas, reusando elementos, até que todos os fluxos se esgotem:
Por fim, o método “Produto transversal” torna todas as conexões possíveis:
Como você pode ver, há diferentes maneiras de desenhar linhas entre estes conjuntos de pontos. É possível encontrar as opções de amarra clicando com o botão direito do mouse no centro de um nó e selecionando o menu “Amarra”.
Imagine que você tem um cacho de uvas. Se você quisesse fazer suco de uva, não espremeria cada uva individualmente, mas sim colocaria todas no espremedor de uma vez. A replicação no Dynamo funciona de forma semelhante: em vez de aplicar uma operação a um item por vez, o Dynamo pode aplicá-la a uma lista inteira de uma só vez.
Os nós do Dynamo reconhecem automaticamente quando estão trabalhando com listas e aplicam suas operações em vários elementos. Isso significa que você não precisa percorrer os itens manualmente: isso simplesmente acontece. Mas como o Dynamo decide como processar listas quando há mais de uma?
Há duas formas principais:
Digamos que você esteja na cozinha, fazendo sucos de frutas. Você tem uma lista de frutas: {apple, orange, pear}
e uma quantidade fixa de água para cada suco: 1 cup
. Você quer fazer um suco com cada fruta, usando a mesma quantidade de água. Nesse caso, a replicação cartesiana entra em ação.
No Dynamo, isso significa que você está alimentando a lista de frutas na entrada de frutas do nó Juice.Maker, enquanto a entrada de água permanece constante em 1 xícara. O nó então processa cada fruta individualmente, combinando-a com a quantidade fixa de água. O resultado é:
apple juice with 1 cup of water
orange juice with 1 cup of water
pear juice with 1 cup of water
Cada fruta é combinada com a mesma quantidade de água.
A replicação zip funciona de forma um pouco diferente. Se você tivesse duas listas, uma para frutas: {apple, orange, pear}
e outra para quantidades de açúcar: {2 tbsp, 3 tbsp, 1 tbsp}
, a replicação zip combinaria os itens correspondentes de cada lista. Por exemplo:
apple juice with 2 tablespoons of sugar
orange juice with 3 tablespoons of sugar
pear juice with 1 tablespoon of sugar
Cada fruta é combinada com a quantidade correspondente de açúcar.
Para uma análise mais profunda sobre como isso funciona, confira os Guias de replicação e amarra.
Faça o download do arquivo de exemplo clicando no link abaixo.
É possível encontrar uma lista completa de arquivos de exemplo no Apêndice.
Para demonstrar as operações de amarra abaixo, vamos usar esse arquivo base para definir a lista mais curta, a lista mais longa e o produto transversal.
Vamos alterar a amarra em Point.ByCoordinates, mas não alteraremos mais nada no gráfico acima.
Escolhendo lista mais curta como a opção de amarra (também é a opção padrão), obtemos uma linha diagonal básica composta por cinco pontos. Cinco pontos são o comprimento da lista menor; portanto, a amarra da lista mais curta é interrompida após atingir o final de uma lista.
Alterando a amarra para lista mais longa, obtemos uma linha diagonal que se estende verticalmente. Pelo mesmo método que o diagrama conceitual, o último item na lista de cinco itens será repetido para alcançar o comprimento da lista mais longa.
Alterando a amarra para Produto transversal, temos todas as combinações entre cada lista, dando-nos uma grade de pontos 5 x 10. Essa é uma estrutura de dados equivalente ao produto transversal, como mostrado no diagrama conceitual acima, exceto pelo fato de que nossos dados agora são uma lista de listas. Conectando uma policurva, podemos ver que cada lista é definida pelo seu valor X, dando-nos uma linha de linhas verticais.
Nesta seção, apresentamos os nós essenciais disponíveis na biblioteca do Dynamo que ajudarão você a criar seu próprio programa visual como um profissional.
O Dynamo é uma plataforma de programação visual de código aberto para projetistas.
Você acabou de abrir o Dynamo Primer, um guia abrangente para a programação visual no Autodesk Dynamo. Este manual é um projeto contínuo para compartilhar os fundamentos da programação. Os tópicos incluem trabalhar com geometria computacional, as melhores práticas para projetos baseados em regras, aplicativos de programação interdisciplinar e muito mais com a plataforma Dynamo.
O poder do Dynamo pode ser encontrado em uma ampla variedade de atividades relacionadas ao projeto. O Dynamo permite uma lista ampliada de maneiras prontamente acessíveis para você começar:
Explorar a programação visual pela primeira vez
Conectar fluxos de trabalho em vários softwares
Envolver uma comunidade ativa de usuários, colaboradores e desenvolvedores
Desenvolver uma plataforma de código aberto para aprimoramento contínuo
No âmbito dessa atividade e da empolgante oportunidade de trabalhar com o Dynamo, precisamos de um documento do mesmo calibre, o Dynamo Primer.
Estamos continuamente aprimorando o Dynamo; portanto, alguns recursos podem parecer diferentes da representação neste manual. No entanto, todas as alterações de funcionalidade serão representadas corretamente.
O projeto Dynamo Primer é de código aberto. Estamos empenhados em fornecer conteúdo de qualidade e agradecemos se enviar seus comentários sobre o projeto. Se você quiser reportar um problema, publique a questão na página de problemas do GitHub: https://github.com/DynamoDS/DynamoPrimer/issues
Se você desejar contribuir com uma nova seção, edições ou qualquer outra coisa para este projeto, confira o repositório GitHub para começar: https://github.com/DynamoDS/DynamoPrimer.
O Dynamo Primer é um projeto de código aberto, iniciado por Matt Jezyk e a equipe de desenvolvimento do Dynamo na Autodesk.
A Mode Lab foi contratada para elaborar a primeira edição do manual. Agradecemos por todos seus esforços no estabelecimento desse recurso valioso.
A John Pierson of Parallax Team foi contratada para atualizar o manual para refletir as revisões do Dynamo 2.0.
A Matterlab foi contratada para atualizar o manual para refletir as revisões do Dynamo 2.13.
A Archilizer foi contratada para atualizar o manual para refletir as revisões do Dynamo 2.17.
A Wood Rodgers foi contratada para atualizar o manual com conteúdo para o Dynamo for Civil 3D.
Um agradecimento especial a Ian Keough por iniciar e orientar o projeto do Dynamo.
Obrigado a Matt Jezyk, Ian Keough, Zach Kron, Racel Amour e Colin McCrone pela colaboração entusiástica e pela oportunidade de participar de uma grande variedade de projetos do Dynamo.
Dynamo Consulte os seguintes sites para obter a versão estável mais atual do Dynamo.
http://dynamobim.com/download/ ou http://dynamobuilds.com
DynamoBIM A melhor fonte para obter informações adicionais, conteúdo de aprendizagem e fóruns é o site do DynamoBIM.
http://dynamobim.org
Dynamo GitHub O Dynamo é um projeto de desenvolvimento de código aberto no GitHub. Para contribuir, confira o DynamoDS.
https://github.com/DynamoDS/Dynamo
Contato Informe-nos sobre quaisquer problemas com este documento.
Dynamo@autodesk.com
Copyright 2023 Autodesk
Licenciado com base na licença Apache, versão 2.0 (“Licença”); não é possível usar esse arquivo, exceto em conformidade com a licença. Você pode obter uma cópia da licença em:
http://www.apache.org/licenses/LICENSE-2.0
A menos que seja exigido pela lei aplicável ou estabelecido em acordo por escrito, o software distribuído sob a Licença é distribuído NO ESTADO EM QUE SE ENCONTRA, SEM GARANTIAS OU CONDIÇÕES DE QUALQUER TIPO, expressas ou implícitas. Consulte a licença para o idioma específico que controla as permissões e limitações sob a licença.
O espaço de trabalho do Dynamo consiste em quatro elementos principais.
Todas as guias ativas.
Modo de visualização
Controles de zoom/pan
Nó no espaço de trabalho
Quando você abre um novo arquivo, um novo espaço de trabalho inicial será aberto por padrão.
Você pode criar um nó personalizado e abri-lo em um espaço de trabalho de nó personalizado.
Somente um espaço de trabalho inicial é permitido em cada janela do Dynamo, mas você pode ter vários espaços de trabalho de nós personalizados abertos em guias.
Há três métodos para alternar entre diferentes visualizações:
a. Use os ícones na parte superior direita
b. Clique com o botão direito do mouse no espaço de trabalho
Alterne a visualização 3D para a visualização de gráfico
Alterne a visualização de gráfico para a visualização 3D
c. c. Use o atalho de teclado (Ctrl+B)
Você pode usar ícones ou um mouse para navegar em qualquer espaço de trabalho.
a. No modo de Visualização de gráfico
Com ícones:
Com o mouse:
Clique com o botão esquerdo do mouse – Selecionar
Clique com o botão esquerdo e arraste a caixa Seleção para selecionar vários pontos.
Role com botão do meio do mouse para cima e para baixo – Aproximar/afastar o zoom
Clique com o botão do meio do mouse e arraste – Pan
Clique com o botão direito do mouse em qualquer lugar na tela – Abrir pesquisa na tela
b. No modo de Visualização 3D
Com ícones:
Com o mouse:
Role com botão do meio do mouse para cima e para baixo – Aproximar/afastar o zoom
Clique com o botão do meio do mouse e arraste – Pan
Clique com o botão direito do mouse e arraste – Órbita
Clique com o botão esquerdo do mouse para selecionar qualquer nó.
Para selecionar vários nós, clique e arraste para criar uma caixa de seleção.
Podemos usar uma linha como suporte para uma visualização de Vetor.
Faça o download do arquivo de exemplo clicando no link abaixo.
É possível encontrar uma lista completa de arquivos de exemplo no Apêndice.
Embora sejam abstratos, os planos têm uma posição de origem para que possam ser localizados no espaço.
No Dynamo, os planos são renderizados na Visualização de plano de fundo.
Faça o download do arquivo de exemplo clicando no link abaixo.
É possível encontrar uma lista completa de arquivos de exemplo no Apêndice.
Embora sejam abstratos, os sistemas de coordenadas também têm uma posição de origem para que possamos localizá-los no espaço.
No Dynamo, os sistemas de coordenadas são renderizados na visualização do plano de fundo como um ponto (origem) e linhas que definem os eixos (X é vermelho, Y é verde e Z é azul, seguindo a convenção).
Faça o download do arquivo de exemplo clicando no link abaixo.
É possível encontrar uma lista completa de arquivos de exemplo no Apêndice.
Vetores, Planos e Sistemas de coordenadas constituem o grupo principal de Tipos de geometria abstratos. Eles nos ajudam a definir a localização, a orientação e o contexto espacial para outra geometria que descreva as formas. Se eu disser que estou em Nova Iorque, na rua 42nd e Broadway (Sistema de Coordenadas), de pé no nível da rua (Plano), olhando para o norte (Vetor), acabei de usar essas "Ajudas" para definir onde estou. O mesmo vale para um produto de caso de telefone ou um arranha-céu. Precisamos desse contexto para desenvolver nosso modelo.
Um vetor é uma quantidade geométrica que descreve a direção e a magnitude. Os vetores são abstratos; isto é, eles representam uma quantidade, e não um elemento geométrico. Os vetores podem ser facilmente confundidos com pontos porque ambos são compostos por uma lista de valores. No entanto, há uma diferença fundamental: os pontos descrevem uma posição em um determinado sistema de coordenadas, enquanto os vetores descrevem uma diferença relativa na posição, o que é o mesmo que dizer “direção”.
Se a ideia de diferença relativa for confusa, pense no vetor AB como “Estou de pé no ponto A, olhando em direção ao ponto B”. A direção, daqui (A) até lá (B), é o nosso vetor.
Dividindo os vetores em suas partes, usando a mesma notação AB:
O Ponto inicial do vetor é chamado Base.
O *Ponto final **do vetor é chamado Ponta ou Sentido.
O vetor AB não é o mesmo que o vetor BA, que apontaria na direção oposta.
Se você precisar de uma anedota no que diz respeito aos vetores (e sua definição abstrata), veja a comédia clássica Airplane e ouça o diálogo engraçado:
Roger, Roger. Qual é o nosso vetor, Victor?
Os planos são "Ajudas" abstratas bidimensionais. Mais especificamente, os planos são conceitualmente "planos", estendendo-se infinitamente em duas direções. Normalmente, eles são renderizados como um retângulo menor perto de sua origem.
Você pode estar pensando: “Espere um segundo. Origem? Isso parece um sistema de coordenadas... como o que eu uso para modelar no meu software CAD!"
E você está correto! A maioria dos softwares de modelagem aproveita os planos de construção ou “níveis” para definir um contexto de duas dimensões locais na qual a inclinação será desenhada. XY, XZ, YZ ou Norte, Sudeste, Plano pode parecer mais familiar. Todos esses são os Planos, definindo um contexto "plano" infinito. Os planos não têm profundidade, mas eles nos ajudam a descrever a direção também -
Se estivermos confortáveis com o conceito de planos, estamos a um pequeno passo de entender os sistemas de coordenadas. Um plano tem todas as mesmas peças que um sistema de coordenadas, desde que seja um sistema de coordenadas padrão "Euclidean" ou "XYZ".
No entanto, há outros sistemas de coordenadas alternativos como Cilíndricos ou Esféricos. Como veremos em seções posteriores, os sistemas de coordenadas também podem ser aplicados a outros tipos de geometria para definir uma posição naquela geometria.
Adicionar sistemas de coordenadas alternativos: cilíndricos, esféricos
Agora que estabelecemos o que é uma lista, vamos falar sobre as operações que podemos realizar nela. Imagine uma lista como um baralho de cartas. O baralho é a lista e cada carta representa um item.
Quais consultas podemos fazer na lista? Isso acessa as propriedades existentes.
Número de cartas no baralho? 52.
Número de naipes? 4.
Material? Papel.
Comprimento? 3,5 pol. ou 89 mm.
Largura? 2,5 pol. ou 64 mm.
Quais ações podemos executar na lista? Isso altera a lista com base em uma determinada operação.
Podemos embaralhar as cartas.
Podemos classificar as cartas por valor.
Podemos classificar as cartas por naipe.
Podemos dividir o baralho.
Podemos dividir o baralho, distribuindo cada uma das mãos da rodada.
É possível selecionar uma carta específica no baralho.
Todas as operações listadas acima têm nós análogos do Dynamo para trabalhar com listas de dados genéricos. As lições abaixo demonstrarão algumas das operações fundamentais que podemos executar nas listas.
Faça o download do arquivo de exemplo clicando no link abaixo.
É possível encontrar uma lista completa de arquivos de exemplo no Apêndice.
A imagem abaixo é o gráfico de base no qual estamos desenhando linhas entre dois círculos para representar operações básicas de lista. Vamos explorar como gerenciar dados em uma lista e demonstrar os resultados visuais através das ações da lista abaixo.
Comece com um Bloco de código com um valor de
500;
Conecte-se à entrada x de um nó Point.ByCoordinates.
Conecte o nó da etapa anterior à entrada de origem de um nó Plane.ByOriginNormal.
Usando um nó Circle.ByPlaneRadius, conecte o nó da etapa anterior à entrada do plano.
Usando o Bloco de código, designe um valor de
50;
para o raio. Esse é o primeiro círculo que criaremos.Com um nó Geometry.Translate, movimente o círculo 100 unidades para cima na direção Z.
Com um nó de Bloco de código, defina um intervalo de dez números entre 0 e 1 com esta linha de código:
0..1..#10;
Conecte o bloco de código da etapa anterior à entrada parâmetro de dois nós Curve.PointAtParameter. Conecte Circle.ByPlaneRadius à entrada de curva do nó superior e Geometry.Translate à entrada de curva do nó abaixo dele.
Usando Line.ByStartPointEndPoint, conecte os dois nós Curve.PointAtParameter.
Faça o download do arquivo de exemplo clicando no link abaixo.
É possível encontrar uma lista completa de arquivos de exemplo no Apêndice.
O nó List.Count é simples: conta o número de valores em uma lista e retorna esse número. Esse nó ganha mais nuances à medida que trabalhamos com listas de listas, mas vamos demonstrar isso nas seções a seguir.
O nó **List.Count ****** retorna o número de linhas no nó Line.ByStartPointEndPoint. Neste caso, o valor é 10, que concorda com o número de pontos criados no nó original do Bloco de código.
Faça o download do arquivo de exemplo clicando no link abaixo.
É possível encontrar uma lista completa de arquivos de exemplo no Apêndice.
List.GetItemAtIndex é uma forma fundamental de consultar um item na lista.
Primeiro, clique com o botão direito do mouse no nó Line.ByStartPointEndPoint para desativar sua visualização.
Usando o nó List.GetItemAtIndex, estamos selecionando o índice “0” ou o primeiro item na lista de linhas.
Altere o valor do controle deslizante entre 0 e 9 para selecionar outro item usando List.GetItemAtIndex.
Faça o download do arquivo de exemplo clicando no link abaixo.
É possível encontrar uma lista completa de arquivos de exemplo no Apêndice.
List.Reverse inverte a ordem de todos os itens em uma lista.
Para visualizar corretamente a lista invertida de linhas, crie mais linhas alterando o Bloco de código para
0..1..#50;
Duplique o nó Line.ByStartPointEndPoint, insira um nó List.Reverse entre Curve.PointAtParameter e o segundo Line.ByStartPointEndPoint
Use os nós Watch3D para visualizar dois resultados diferentes. O primeiro mostra o resultado sem uma lista invertida. As linhas se conectam verticalmente aos pontos adjacentes. A lista invertida, no entanto, conectará todos os pontos à ordem oposta na outra lista.
Faça o download do arquivo de exemplo clicando no link abaixo.
É possível encontrar uma lista completa de arquivos de exemplo no Apêndice.
List.ShiftIndices é uma boa ferramenta para criar padrões de torções ou helicoidais, ou qualquer outra manipulação de dados semelhante. Esse nó altera os itens em uma lista por um determinado número de índices.
No mesmo processo que a lista inversa, insira um List.ShiftIndices no Curve.PointAtParameter e Line.ByStartPointEndPoint.
Usando um Bloco de código, foi designado o valor de “1” para mudar a lista em um índice.
Observe que a alteração é sutil, mas todas as linhas no nó inferior Watch3D mudaram um índice ao se conectarem ao outro conjunto de pontos.
Se o Bloco de código for alterado para um valor maior, “30”, por exemplo, perceberemos uma diferença significativa nas linhas diagonais. A mudança está funcionando como a íris da câmera nesse caso, criando uma torção na forma cilíndrica original.
Faça o download do arquivo de exemplo clicando no link abaixo.
É possível encontrar uma lista completa de arquivos de exemplo no Apêndice.