arrow-left

All pages
gitbookPowered by GitBook
1 of 21

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Dynamo for Civil 3D

Embora o Dynamo tenha sido originalmente criado com o Revit em mente, sua versatilidade como ferramenta de programação visual se estende além do Revit. O Dynamo também está integrado no Civil 3D, permitindo que os usuários criem rotinas de automação poderosas para projetos de infraestrutura civil. É uma ferramenta extremamente útil para processar qualquer tarefa, desde as comuns até os fluxos de trabalho de projeto mais complexos, ajudando, em última análise, a economizar tempo, otimizar os projetos e tomar melhores decisões de projeto. O Dynamo oferece um conjunto completo de nós especificamente projetados para o Civil 3D, bem como bibliotecas de terceiros de uma comunidade consolidada.

Este capítulo do manual se concentrará no Dynamo for Civil 3D, começando com os conceitos básicos e chegando até tópicos mais avançados.

Exemplos de fluxos de trabalho

Estradas, ferrovias, terras, serviços públicos, levantamento topográfico, GIS etc.

A infraestrutura civil é tudo isso e muito mais. Esta seção contém diversos gráficos de exemplo práticos e relevantes para ajudar a orientar você a dominar o Dynamo e revelar todo o potencial do Dynamo for Civil 3D. Cada gráfico é fornecido completo com descrições detalhadas da lógica que foi usada para criá-lo, para que você possa não apenas usá-lo, mas entendê-lo.

Além disso, esses exemplos incorporam práticas recomendadas, que já passaram pelo teste do tempo, para a construção de gráficos sólidos. À medida que você trabalha nos exemplos, recomendamos que se familiarize também com a seção Práticas recomendadas para obter mais ideias sobre como criar gráficos poderosos, flexíveis e sustentáveis.

Estradas

Terra

Utilitários

Ferrovia

Levantamento topográfico

Tópicos avançados

Com o tempo, você pode precisar ir além dos conceitos básicos e se aprofundar no funcionamento interno do Dynamo. As páginas desta seção fornecerão um esquema para conhecer funcionalidades avançadas no Dynamo for Civil 3D, para que você possa levar seus gráficos a um novo patamar.

Conexão do Civil 3D

O Dynamo for Civil 3D traz o paradigma da programação visual para engenheiros e projetistas que trabalham em projetos de infraestrutura civil. Você pode pensar no Dynamo como uma espécie de multiferramenta digital para usuários do Civil 3D, seja qual for a tarefa, ele tem a ferramenta certa para o trabalho. Sua interface intuitiva permite criar rotinas poderosas e personalizáveis sem escrever uma única linha de código. Não é necessário ser um programador para usar o Dynamo, mas é preciso pensar na lógica de um programador. Juntamente com os outros capítulos do manual, este capítulo ajudará você a desenvolver suas habilidades lógicas para que você possa lidar com qualquer tarefa com uma mentalidade de projeto computacional.

hashtag
História

O Dynamo foi introduzido pela primeira vez no Civil 3D 2020 e continuou a evoluir desde então. Inicialmente instalado separadamente por meio de uma atualização de software, agora é fornecido com todas as versões do Civil 3D. Dependendo de qual versão do Civil 3D você esteja usando, você poderá observar que a interface do Dynamo tem aparência ligeiramente diferente dos exemplos mostrados neste capítulo. Isso ocorre porque houve uma revisão significativa da interface no Civil 3D 2023.

Interface do Dynamo, Civil 3D 2020 – 2022
Interface do Dynamo, Civil 3D 2023 – presente

É recomendável dar uma olhada no Blog do Dynamoarrow-up-right para obter as informações mais atualizadas sobre o desenvolvimento do Dynamo. A tabela abaixo resume os principais marcos de vida do Dynamo for Civil 3D.

Versão do Civil 3D
Versão do Dynamo
Observações

2024.1

2.18

2024

2.17

Guia de Introdução

Agora que você sabe um pouco mais sobre o quadro geral, vamos entrar e criar o primeiro gráfico do Dynamo no Civil 3D.

circle-info

Este é um exemplo simples que deve demonstrar a funcionalidade básica do Dynamo. É recomendável seguir as etapas em um novo documento vazio do Civil 3D.

hashtag
Abrir o Dynamo

A primeira coisa a fazer é abrir um documento vazio no Civil 3D. Depois disso, navegue até a guia Gerenciar na faixa de opções do Civil 3D e procure o painel Programação visual.

Clique no botão Dynamo, que iniciará o Dynamo em uma janela separada.

circle-info

Qual é a diferença entre o Dynamo e o Reprodutor do Dynamo?

O Dynamo é a ferramenta usada para criar e executar gráficos. O Reprodutor do Dynamo é uma forma fácil de executar gráficos sem precisar abri-los no Dynamo.

Vá para a seção Reprodutor do Dynamo quando estiver tudo pronto para experimentá-lo.

hashtag
Iniciar um novo gráfico

Quando o Dynamo estiver aberto, você verá a tela inicial. Clique em Novo para abrir um espaço de trabalho em branco.

Tela inicial do Dynamo
circle-info

E os exemplos?

O Dynamo for Civil 3D vem com alguns gráficos pré-criados que podem ajudar a estimular mais ideias sobre como você pode usar o Dynamo. Recomendamos que você dê uma olhada neles em algum momento, bem como nos Exemplos de fluxos de trabalho aqui no manual.

hashtag
Adicionar nós

Agora você deve estar olhando para um espaço de trabalho vazio. Vamos ver o Dynamo em ação. Este é nosso objetivo:

🎯 Criar um gráfico do Dynamo que inserirá texto no espaço do modelo.

Muito simples, certo? Mas antes de começarmos, precisamos abordar alguns conceitos básicos.

Os blocos de construção principais de um gráfico do Dynamo são chamados de nós. Um nó é como uma máquina pequena – você coloca dados nele, ele realiza algum trabalho nesses dados e gera um resultado. O Dynamo for Civil 3D tem uma biblioteca de nós que você pode conectar com fios para formar um gráfico que faz coisas maiores e melhores do que qualquer nó isolado pode fazer.

circle-info

Espere, e se eu nunca tiver usado o Dynamo?

Alguns desses pontos podem ser novos para você, mas isso não é um problema. Estas seções ajudarão.

Interface do usuário Nós e fios Nós e conceitos essenciais

OK, vamos criar nosso gráfico. Veja a seguir uma lista de todos os nós que precisaremos.

Você pode encontrar esses nós digitando seus nomes na barra de pesquisa na biblioteca ou clicando com o botão direito do mouse em qualquer lugar na tela e pesquisando.

É possível colocar os nós da biblioteca ou clicando com o botão direito do mouse na tela
circle-info

Como posso saber quais nós usar e onde encontrá-los?

Os nós da biblioteca são agrupados em categorias lógicas com base no que fazem. Dê uma olhada na seção Biblioteca de nós para ver um tour mais aprofundado.

Veja a seguir como deve ser a aparência do gráfico final.

O gráfico finalizado

Vamos resumir o que fizemos aqui:

  1. Escolhemos em qual documento trabalhar. Neste caso (e em muitos casos), queremos trabalhar no documento ativo no Civil 3D.

  2. Definimos o bloco de destino onde o objeto de texto deve ser criado (neste caso, espaço do modelo).

  3. Usamos um nó String para especificar em qual camada o texto deve ser colocado.

  4. Criamos um ponto usando o nó Point.ByCoordinates para definir a posição em que o texto deve ser colocado.

  5. Definimos as coordenadas X e Y do ponto de inserção de texto usando dois nós Number Slider.

  6. Usamos outro nó String para definir o conteúdo do objeto de texto.

  7. E, por fim, criamos o objeto de texto.

Vamos ver os resultados do nosso novíssimo gráfico.

hashtag
Veja o resultado

De volta ao Civil 3D, assegure-se de que a guia Modelo esteja selecionada. Você deve ver o novo objeto de texto que o Dynamo criou.

circle-info

Se você não conseguir ver o texto, talvez seja necessário executar o comando ZOOM -> EXTENTS para efetuar o zoom no ponto certo.

Legal. Agora, vamos fazer algumas atualizações no texto.

De volta ao gráfico do Dynamo, vá em frente e altere alguns dos valores de entrada, como a sequência de texto, as coordenadas do ponto de inserção etc. Você deve ver o texto automaticamente atualizado no Civil 3D. Observe também que, se você desconectar uma das portas de entrada, o texto será removido. Se você conectar tudo de volta, o texto será criado novamente.

O gráfico finalizado em ação
circle-info

Por que o Dynamo não insere um novo objeto de texto cada vez que o gráfico é executado?

Por padrão, o Dynamo “lembrará” os objetos que criar. Se você alterar os valores de entrada do nó, os objetos no Civil 3D serão atualizados em vez de criar objetos novos. Você pode ler mais sobre esse comportamento na seção Vinculação de objetos.

🎉 Missão cumprida.

hashtag
Próximas etapas

Este exemplo apenas oferece uma pequena noção do que você pode fazer com o Dynamo for Civil 3D. Continue lendo para saber mais.

Biblioteca de nós

Mencionamos anteriormente que os nós são os principais blocos de construção de um gráfico do Dynamo e eles são organizados em grupos lógicos na biblioteca. No Dynamo for Civil 3D, há duas categorias (ou prateleiras) na biblioteca que contêm nós dedicados para trabalhar com objetos do AutoCAD e do Civil 3D, como alinhamentos, perfis, corredores, referências de bloco etc. O restante da biblioteca contém nós que são mais genéricos por natureza e são consistentes em todas as “versões” do Dynamo (por exemplo, Dynamo para Revit, Dynamo Sandbox etc.).

circle-info

Confira a seção Biblioteca para obter mais informações sobre como os nós da biblioteca principal do Dynamo são organizados.

Biblioteca de nós do Dynamo for Civil 3D
  1. Nós específicos para trabalhar com objetos do AutoCAD e do Civil 3D

  2. Nós para uso geral

  3. Nós de pacotes de terceiros que você pode instalar separadamente

circle-exclamation

Se você usar os nós encontrados nas prateleiras do AutoCAD e do Civil 3D, o gráfico do Dynamo funcionará somente no Dynamo for Civil 3D. Se um gráfico do Dynamo for Civil 3D for aberto em outro lugar (no Dynamo para Revit, por exemplo), esses nós serão sinalizados com um aviso e não serão executados.

circle-info

Por que há duas prateleiras separadas para o AutoCAD e o Civil 3D?

Essa organização distingue os nós de objetos nativos do AutoCAD (linhas, polilinhas, referências de bloco etc.) dos nós de objetos do Civil 3D (alinhamentos, corredores, superfícies etc.). E, do ponto de vista técnico, o AutoCAD e o Civil 3D são dois itens separados – o AutoCAD é o aplicativo base e o Civil 3D é construído com base nele.

hashtag
Hierarquia de nós

Para trabalhar com os nós do AutoCAD e do Civil 3D, é importante ter uma compreensão sólida da hierarquia de objetos em cada prateleira. Você se lembra da taxonomia da biologia? Reino, Filo, Classe, Ordem, Família, Gênero, Espécie? Os objetos do AutoCAD e do Civil 3D são categorizados de forma semelhante. Vamos analisar alguns exemplos para explicar.

hashtag
Objetos do Civil

Vamos usar um alinhamento como exemplo.

Digamos que seu objetivo seja alterar o nome do alinhamento. A partir daqui, o próximo nó que você adicionaria é um nó CivilObject.SetName.

No início, isso pode não parecer muito intuitivo. O que é um CivilObject e por que a biblioteca não tem um nó Alignment.SetName? A resposta está relacionada à reutilização e à simplicidade. Se você parar para pensar, o processo de alterar o nome de um objeto do Civil 3D será o mesmo quer o objeto seja um alinhamento, corredor, perfil ou outra coisa. Assim, em vez de ter nós repetitivos que essencialmente fazem a mesma coisa (por exemplo, Alignment.SetName, Corridor.SetName, Profile.SetName etc.), faria sentido combinar essa funcionalidade em um único nó. É exatamente isso que CivilObject.SetName faz.

Outra maneira de pensar sobre isso é com base em relacionamentos. Um alinhamento e um corredor são tipos de Objetos do Civil, assim como uma maçã e uma pera são tipos de frutas. Os nós de Objeto do Civil se aplicam a qualquer tipo de Objeto do Civil, da mesma forma que você pode desejar usar um único descascador para remover as cascas de uma maçã e de uma pera. Sua cozinha ficaria bem bagunçada se você tivesse um descascador separado para cada tipo de fruta. Nesse sentido, a biblioteca de nós do Dynamo é como sua cozinha.

hashtag
Objetos

Agora, vamos aprofundar essa ideia. Digamos que você deseje alterar a camada do alinhamento. Você usaria o nó Object.SetLayer.

Por que não há um nó chamado CivilObject.SetLayer? Os mesmos princípios de reutilização e simplicidade que discutimos anteriormente aplicam-se aqui. A propriedade layer é algo que é comum a qualquer objeto no AutoCAD que possa ser desenhado ou inserido, como linha, polilinha, texto, referência de bloco etc. Os objetos do Civil 3D, como alinhamentos e corredores, estão na mesma categoria, e, portanto, qualquer nó que se aplica a um Objeto também pode ser usado com qualquer Objeto do Civil.

Posicionamento de postes de luz

Um dos muitos casos de uso excelentes do Dynamo é posicionar objetos separados dinamicamente ao longo de um modelo de corredor. Geralmente, os objetos precisam ser posicionados em localizações independentes das montagens inseridas ao longo do corredor, o que é uma tarefa muito entediante para ser realizada manualmente. E, quando a geometria horizontal ou vertical do corredor muda, isso introduz uma quantidade significativa de retrabalho.

hashtag
Objetivo

🎯 Posicionar referências de bloco de postes de luz ao longo de um corredor em valores de estaca especificados em um arquivo do Excel.

hashtag
Principais conceitos

  • Ler dados de um arquivo externo (neste caso, Excel)

  • Organizar dados em dicionários

  • Usar sistemas de coordenadas para controlar a posição/escala/rotação

  • Posicionar referências de bloco

  • Visualizar a geometria no Dynamo

hashtag
Compatibilidade de versão

circle-check

Este gráfico será executado no Civil 3D 2020 e versões superiores.

hashtag
Conjunto de dados

Comece fazendo o download dos arquivos de amostra abaixo e, em seguida, abrindo o arquivo DWG e o gráfico do Dynamo.

circle-info

É melhor que o arquivo do Excel seja salvo no mesmo diretório que o gráfico do Dynamo.

file-download
232KB
Roads_CorridorBlockRefs (1).dyn
arrow-up-right-from-squareOpen
file-download
54MB
Roads_CorridorBlockRefs.dwg
arrow-up-right-from-squareOpen
file-download
12KB
LightPoles.xlsx
arrow-up-right-from-squareOpen

hashtag
Solução

Apresentamos a seguir uma visão geral da lógica no gráfico.

  1. Ler o arquivo do Excel e importar os dados para o Dynamo

  2. Obter as linhas de recurso da linha base do corredor especificada

  3. Gerar os sistemas de coordenadas ao longo da linha de recurso do corredor nas estacas desejadas

  4. Usar os sistemas de coordenadas para posicionar referências de bloco no espaço do modelo

Vamos começar

hashtag
Obter os dados do Excel

Neste gráfico de exemplo, vamos usar um arquivo do Excel para armazenar os dados que o Dynamo usará para posicionar as referências de bloco dos postes de luz. A tabela tem a aparência a seguir.

Estrutura da tabela de arquivos do Excel
circle-info

Usar o Dynamo para ler dados de um arquivo externo (como um arquivo do Excel) é uma ótima estratégia, especialmente quando os dados precisam ser compartilhados com outros membros da equipe.

Os dados do Excel são importados para o Dynamo da seguinte maneira.

Importação de dados do Excel para o Dynamo

Agora que temos os dados, precisamos dividi-los por coluna (Corredor, Linha base, PointCode etc.) para que possam ser usados no restante do gráfico. Uma forma comum de fazer isso é usar o nó List.GetItemAtIndex e especificar o número de índice de cada coluna que desejamos. Por exemplo, a coluna Corredor está no índice 0, a coluna Linha base está no índice 1 etc.

Parece bom, certo? Mas há um problema potencial com essa abordagem. E se a ordem das colunas no arquivo do Excel for alterada no futuro? Ou uma nova coluna for adicionada entre duas colunas? Nesses casos, o gráfico não funcionará corretamente e exigirá uma atualização. Podemos tornar o gráfico à prova de futuro colocando os dados em um Dicionário, com os cabeçalhos de coluna do Excel como chaves e o resto dos dados como valores.

circle-info

Se os dicionários forem algo novo para você, veja a seção Dicionários no Dynamo.

Colocar os dados do Excel em um dicionário

Isso torna o gráfico mais resiliente porque permite flexibilidade ao alterar a ordem das colunas no Excel. Enquanto os cabeçalhos de coluna permanecerem os mesmos, os dados poderão ser recuperados do dicionário usando sua chave (ou seja, o cabeçalho da coluna), que é o que fazemos em seguida.

Recuperação de dados do dicionário

hashtag
Obter as linhas de recurso do corredor

Agora que temos os dados do Excel importados e prontos para serem usados, vamos começar a usá-los para obter algumas informações do Civil 3D sobre os modelos de corredor.

  1. Selecione o modelo de corredor pelo nome.

  2. Obtenha uma linha base específica dentro do corredor.

  3. Obtenha uma linha do recurso na linha base pelo código de ponto.

hashtag
Gerar os sistemas de coordenadas

O que vamos fazer agora é gerar Sistemas de coordenadas ao longo das linhas de recurso do corredor nos valores de estaca que especificamos no arquivo do Excel. Esses sistemas de coordenadas serão usados para definir a posição, a rotação e a escala das referências de bloco dos postes de luz.

circle-info

Se os sistemas de coordenadas forem algo novo para você, veja a seção Vetor, plano e sistema de coordenadas.

Obtenção dos sistemas de coordenadas ao longo das linhas de recurso do corredor

Observe o uso de um bloco de código para rotacionar os sistemas de coordenadas, dependendo do lado em que eles estejam da linha base. Isso pode ser obtido usando uma sequência de vários nós, mas esse é um bom exemplo de uma situação em que é mais fácil escrever manualmente.

circle-info

Se os blocos de código forem algo novo para você, veja a seção Blocos de código e DesignScript.

hashtag
Criar as referências de bloco

Está quase. Temos todas as informações necessárias para podermos realmente posicionar as referências de bloco. A primeira coisa a fazer é obter as definições de bloco que desejamos usando a coluna BlockName do arquivo do Excel.

Obtenção das definições de bloco que desejamos do documento

A partir daí, a última etapa é criar as referências de bloco.

Criação das referências de bloco no espaço do modelo

hashtag
Resultado

Quando você executar o gráfico, deverá ver novas referências de bloco mostradas no espaço do modelo ao longo do corredor. E aqui está a parte interessante – se o modo de execução do gráfico estiver definido como Automático e você editar o arquivo do Excel, as referências de bloco serão atualizadas automaticamente.

circle-info

Você pode ler mais sobre os modos de execução de gráficos na seção Interface do usuário.

Realização de atualizações no arquivo do Excel e visualização rápida dos resultados no Civil 3D

Veja um exemplo de como executar o gráfico usando o Reprodutor do Dynamo.

Execução do gráfico usando o Reprodutor do Dynamo e visualização dos resultados no Civil 3D
circle-info

Se o Reprodutor do Dynamo for algo novo para você, veja a seção Reprodutor do Dynamo.

🎉 Missão cumprida.

hashtag
Bônus: Visualização no Dynamo

Pode ser útil visualizar a geometria do corredor no Dynamo para fornecer contexto. Este modelo específico tem os sólidos do corredor já extraídos no espaço do modelo, então vamos levá-los para o Dynamo.

Mas há algo mais que precisamos considerar. Os sólidos são um tipo de geometria relativamente “pesada”, o que significa que essa operação diminuirá a velocidade do gráfico. Seria bom se houvesse uma maneira simples de escolher se desejamos visualizar os sólidos ou não. A resposta óbvia é desconectar o nó Corridor.GetSolids, mas isso produzirá avisos para todos os nós a jusante, o que é um pouco confuso. Essa é uma situação em que o nó ScopeIf realmente se destaca.

  1. Observe que o nó Object.Geometry tem uma barra cinza na parte inferior. Isso significa que a visualização do nó está desativada (acessível clicando com o botão direito do mouse no nó), o que permite que GeometryColor.ByGeometryColor evite “brigar” com outra geometria por prioridade de exibição na visualização do plano de fundo.

  2. O nó ScopeIf basicamente permite executar seletivamente uma ramificação inteira de nós. Se a entrada test for falsa, nenhum nó conectado ao nó ScopeIf será executado.

Veja o resultado na visualização do plano de fundo do Dynamo.

Visualização da geometria do corredor no Dynamo

hashtag
Ideias

Veja a seguir algumas ideias sobre como você pode expandir os recursos desse gráfico.

circle-info

Adicione uma coluna de rotação ao arquivo do Excel e use-a para controlar a rotação dos sistemas de coordenadas.

circle-info

Adicione deslocamentos horizontais ou verticais ao arquivo do Excel para que os postes de luz possam se desviar da linha de recurso do corredor, se necessário.

circle-info

Em vez de usar um arquivo do Excel com valores de estaca, gere os valores de estaca diretamente no Dynamo usando uma estaca inicial e um espaçamento típico.

Posicionamento de serviço

O projeto de engenharia de uma construção habitacional típica envolve o trabalho com várias concessionárias subterrâneas, como esgoto sanitário, drenagem de águas pluviais, água potável ou outras. Este exemplo demonstrará como o Dynamo pode ser usado para desenhar as conexões de serviço de uma linha principal de distribuição até um determinada subdivisão de propriedade (por exemplo, um lote). É comum que todos os lotes exijam uma conexão de serviço, o que introduz um trabalho tedioso significativo para colocar todos os serviços. O Dynamo pode acelerar o processo desenhando automaticamente a geometria necessária com precisão, além de fornecer entradas flexíveis que podem ser ajustadas para se adequarem às normas de órgãos locais.

hashtag
Objetivo

🎯 Colocar referências de bloco do medidor de serviço de água em deslocamentos especificados de uma linha do lote e desenhar uma linha para cada conexão de serviço perpendicular à linha principal de distribuição.

hashtag
Principais conceitos

  • Usar o nó Selecionar objeto para a entrada do usuário

  • Trabalhar com sistemas de coordenadas

  • Usar operações geométricas como Geometry.DistanceTo e Geometry.ClosestPointTo

  • Criar referências de bloco

  • Controlar as configurações de vinculação de objetos

hashtag
Compatibilidade de versão

circle-check

Este gráfico será executado no **Civil 3D 2020** e versões superiores.

hashtag
Conjunto de dados

Comece fazendo o download dos arquivos de amostra abaixo e, em seguida, abrindo o arquivo DWG e o gráfico do Dynamo.

file-download
108KB
Land_ServicePlacement.dyn
arrow-up-right-from-squareOpen
file-download
842KB
Land_ServicePlacement.dwg
arrow-up-right-from-squareOpen

hashtag
Solução

Apresentamos a seguir uma visão geral da lógica no gráfico.

  1. Obter a geometria da curva para a linha principal de distribuição

  2. Obter a geometria da curva para uma linha do lote selecionada pelo usuário, revertendo se necessário

  3. Gerar os pontos de inserção para os medidores de serviço

  4. Obter os pontos na linha principal de distribuição que estão mais próximos das localizações do medidor de serviço

  5. Criar referências de bloco e linhas no espaço do modelo

Vamos começar

hashtag
Obter a geometria principal de distribuição

Nossa primeira etapa é obter a geometria da linha de distribuição principal no Dynamo. Em vez de selecionar linhas individuais ou polilinhas, vamos obter todos os objetos em uma determinada camada e uni-los como uma PolyCurve do Dynamo.

circle-info

Se a geometria da curva do Dynamo for nova para você, veja a seção [4-curves.md](../../../5\_essential\_nodes\_and\_concepts/5-2\_geometry-for-computational-design/4-curves.md "mention").

Obtenção dos objetos do Civil 3D e união de tudo em uma única PolyCurve

hashtag
Obter a geometria da linha do lote

Em seguida, precisamos colocar a geometria de uma linha do lote selecionada no Dynamo para que possamos trabalhar com ela. A ferramenta certa para o trabalho é o nó Selecionar objeto, que permite que o usuário do gráfico selecione um objeto específico no Civil 3D.

Também precisamos lidar com um possível problema que surja. A linha do lote tem um ponto inicial e um ponto final, o que significa que ela tem uma direção. Para que o gráfico produza resultados consistentes, precisamos que todas as linhas do lote tenham uma direção consistente. Podemos levar em conta essa condição diretamente na lógica do gráfico, o que torna o gráfico mais resiliente.

Seleção de uma linha do lote e certificação de que ela tenha a direção correta
  1. Obtenha os pontos inicial e final da linha do lote.

  2. Meça a distância de cada ponto até a linha principal de distribuição e, em seguida, descubra qual distância é maior.

  3. O resultado desejado é que o ponto inicial da linha seja o mais próximo da linha principal de distribuição. Se esse não for o caso, invertemos a direção da linha do lote. Caso contrário, simplesmente retornaremos a linha do lote original.

hashtag
Gerar pontos de inserção

É hora de descobrir onde os medidores de serviço serão colocados. Normalmente, a colocação é determinada pelos requisitos de órgãos locais; portanto, forneceremos valores de entrada que podem ser alterados para atender a várias condições. Vamos usar um Sistema de coordenadas ao longo da linha do lote como referência para criar os pontos. Isso torna muito fácil a definição de deslocamentos relativos à linha do lote, não importando sua orientação.

circle-info

Se os sistemas de coordenadas forem algo novo para você, veja a seção [2-vectors.md](../../../5\_essential\_nodes\_and\_concepts/5-2\_geometry-for-computational-design/2-vectors.md "mention").

Criação de pontos de inserção para os medidores de serviço

hashtag
Obter os pontos de conexão

Agora precisamos obter os pontos na linha principal de distribuição que estão mais próximos da localizações do medidor de serviço Isso nos permitirá desenhar as conexões de serviço no espaço do modelo para que elas sempre sejam perpendiculares à linha principal de distribuição. O nó Geometry.ClosestPointTo é a solução perfeita.

Obtenção de pontos perpendiculares na linha principal de distribuição
  1. Essa é a PolyCurve da linha principal de distribuição

  2. Esses são os pontos de inserção do medidor de serviço

hashtag
Criar objetos

A última etapa é efetivamente criar objetos no espaço do modelo. Usaremos os pontos de inserção que geramos anteriormente para criar referências de bloco e, em seguida, usaremos os pontos na linha principal de distribuição para desenhar linhas para as conexões de serviço.

hashtag
Resultado

Quando você executar o gráfico, deverá ver novas referências de bloco e linhas de conexão de serviço no espaço do modelo. Tente alterar algumas das entradas e veja como tudo é atualizado automaticamente.

Ajuste dos parâmetros de entrada no Dynamo e visualização imediata dos resultados no Civil 3D

hashtag
Bônus: ativar a colocação sequencial

Você pode observar que, após colocar os objetos para uma linha do lote, selecionar uma linha do lote diferente resulta na “movimentação” dos objetos.

Comportamento quando a vinculação de objetos está ativada

Esse é o comportamento padrão do Dynamo e é muito útil em muitos casos. No entanto, você pode achar conveniente colocar várias conexões de serviço sequencialmente e fazer com que o Dynamo crie novos objetos a cada execução em vez de modificar os originais. É possível controlar esse comportamento ao alterar as configurações de vinculação de objetos.

Configurações da vinculação de objetos do Dynamo
circle-info

Veja a seção [object-binding.md](../../advanced-topics/object-binding.md "menção") para obter mais informações.

Alterar essa configuração forçará o Dynamo a “esquecer” os objetos que cria a cada execução. Veja a seguir um exemplo de como executar o gráfico com a vinculação de objetos desativada usando o Reprodutor do Dynamo.

Execução do gráfico usando o Reprodutor do Dynamo e visualização dos resultados no Civil 3D
circle-info

Se o Reprodutor do Dynamo for algo novo para você, veja a seção [dynamo-player.md](../../dynamo-player.md "mention").

🎉 Missão cumprida.

hashtag
Ideias

Veja a seguir algumas ideias sobre como você pode expandir os recursos desse gráfico.

circle-info

Coloque **várias conexões de serviço** simultaneamente em vez de selecionar cada linha do lote.

circle-info

Ajuste as entradas para colocar **limpeza de esgoto** em vez de medidores de serviço de água.

circle-info

**Adicione um botão de alternância** para permitir a colocação de uma única conexão de serviço em um lado específico da linha do lote em vez de em ambos os lados.

Renomear estruturas

Ao adicionar tubulações e estruturas a uma rede de tubulação, o Civil 3D usa um modelo para atribuir nomes automaticamente. Normalmente, isso é suficiente durante o posicionamento inicial, mas inevitavelmente os nomes terão que mudar no futuro à medida que o projeto evoluir. Além disso, há muitos padrões de nomenclatura diferentes que podem ser necessários, por exemplo, nomear estruturas sequencialmente em um trecho de tubulação com base na estrutura a jusante mais distante ou seguir um padrão de nomenclatura alinhado com o esquema de dados de um órgão local. Este exemplo demonstrará como o Dynamo pode ser usado para definir qualquer tipo de estratégia de nomeação e aplicá-lo de forma consistente.

hashtag
Objetivo

🎯 Renomear as estruturas de rede de tubulação na ordem com base no estaqueamento de um alinhamento.

hashtag
Principais conceitos

  • Trabalhar com caixas delimitadoras

  • Filtrar dados usando o nó List.FilterByBoolMask

  • Classificar os dados usando o nó List.SortByKey

  • Gerar e modificar sequências de texto

hashtag
Compatibilidade de versão

circle-check

Este gráfico será executado no Civil 3D 2020 e versões superiores.

hashtag
Conjunto de dados

Comece fazendo o download dos arquivos de amostra abaixo e, em seguida, abrindo o arquivo DWG e o gráfico do Dynamo.

file-download
139KB
Utilities_RenameStructures.dyn
arrow-up-right-from-squareOpen
file-download
6MB
Utilities_RenameStructures.dwg
arrow-up-right-from-squareOpen

hashtag
Solução

Apresentamos a seguir uma visão geral da lógica no gráfico.

  1. Selecionar as estruturas por camada

  2. Obter as localizações da estrutura

  3. Filtrar as estruturas por deslocamento e, em seguida, classificá-las por estaca

  4. Gerar os novos nomes

  5. Renomear as estruturas

Vamos começar

hashtag
Selecionar as estruturas

A primeira coisa que precisamos fazer é selecionar todas as estruturas com as quais planejamos trabalhar. Para fazer isso, basta selecionar todos os objetos em uma determinada camada, o que significa que podemos selecionar estruturas de diferentes redes de tubulação (presumindo que compartilhem a mesma camada).

Seleção das estruturas em uma determinada camada
  1. Esse nó assegura que não recuperemos acidentalmente quaisquer tipos de objetos indesejados que possam compartilhar a mesma camada que as estruturas.

hashtag
Obter as localizações da estrutura

Agora que temos as estruturas, precisamos descobrir sua posição no espaço para que possamos classificá-las de acordo com sua localização. Para fazer isso, aproveitaremos a caixa delimitadora de cada objeto. A Caixa delimitadora de um objeto é a caixa de tamanho mínimo que contém completamente as extensões geométricas do objeto. Ao calcular o centro da caixa delimitadora, obtemos uma boa aproximação do ponto de inserção da estrutura.

Uso de caixas delimitadoras para obter o ponto de inserção aproximado de cada estrutura

Usaremos estes pontos para obter a estaca e o deslocamento das estruturas em relação a um alinhamento selecionado.

hashtag
Filtrar e classificar

Neste ponto é que as coisas começam a ficar um pouco complicadas. Nesta fase, temos uma lista grande de todas as estruturas na camada que especificamos e escolhemos um alinhamento que desejamos classificar. O problema é que pode haver estruturas na lista que não queremos renomear. Por exemplo, elas podem não fazer parte do trecho específico em que estamos interessados.

  1. O alinhamento selecionado

  2. As estruturas que queremos renomear

  3. As estruturas que devem ser ignoradas

Portanto, precisamos filtrar a lista de estruturas para que não consideremos as que são maiores do que um determinado deslocamento do alinhamento. Isso é melhor realizado usando o nó List.FilterByBoolMask. Após filtrar a lista de estruturas, usamos o nó List.SortByKey para classificá-las por seus valores de estaca.

circle-info

Se você não estiver familiarizado com o trabalho com listas, veja a seção Trabalhar com listas.

Filtragem e classificação das estruturas
  1. Verificar se o deslocamento da estrutura é menor que o valor de limite

  2. Substituir os valores nulos por false

  3. Filtrar a lista de estruturas e estacas

  4. Classificar as estruturas pelas estacas

hashtag
Gerar os novos nomes

O último trabalho que precisamos fazer é criar os novos nomes para as estruturas. O formato que usaremos é <alignment name>-STRC-<number>. Há alguns nós extras aqui para preencher os números com zeros extras, se desejado (por exemplo, “01” em vez de “1”).

Geração dos novos nomes das estruturas

hashtag
Renomear as estruturas

E, por último, mas não menos importante, renomeamos as estruturas.

Definir os nomes das estruturas

hashtag
Resultado

Veja um exemplo de como executar o gráfico usando o Reprodutor do Dynamo.

Execução do gráfico usando o Reprodutor do Dynamo e visualização dos resultados no Civil 3D
circle-info

Se o Reprodutor do Dynamo for algo novo para você, veja a seção Reprodutor do Dynamo.

🎉 Missão cumprida.

hashtag
Bônus: Visualização no Dynamo

Pode ser útil aproveitar a visualização do plano de fundo 3D do Dynamo para visualizar as saídas intermediárias do gráfico em vez de apenas o resultado final. Uma coisa fácil que podemos fazer é mostrar as caixas delimitadoras das estruturas. Além disso, este conjunto de dados específico tem um corredor no documento; portanto, podemos trazer a geometria da linha de recurso do corredor para o Dynamo para fornecer algum contexto para onde as estruturas estão localizadas no espaço. Se o gráfico for usado em um conjunto de dados que não tem corredores, estes nós simplesmente não farão nada.

Visualização da geometria das estruturas e das linhas de recurso do corredor

Agora podemos entender melhor como funciona o processo de filtragem das estruturas por deslocamento.

Ajuste do valor limite de deslocamento do alinhamento e visualização das estruturas afetadas no Dynamo

hashtag
Ideias

Veja a seguir algumas ideias sobre como você pode expandir os recursos desse gráfico.

circle-info

Renomeie as estruturas com base em seu Alinhamento mais próximo em vez de selecionar um alinhamento específico.

circle-info

Renomeie as tubulações além das estruturas.

circle-info

Defina as camadas das estruturas com base em seu trecho.

Estrutura da altura livre

O desenvolvimento de envelopes cinemáticos para validação da altura livre é uma parte importante do projeto de ferrovia. É possível usar o Dynamo para gerar sólidos para o envelope, em vez de criar e gerenciar submontagens complexas de corredor para fazer o trabalho.

hashtag
Objetivo

🎯 Usar um bloco de perfil de veículo para gerar sólidos 3D de estrutura de altura livre ao longo de um corredor.

hashtag
Principais conceitos

  • Trabalhar com linhas de recurso do corredor

  • Transformar a geometria entre sistemas de coordenadas

  • Criar sólidos por elevação

  • Controlar o comportamento do nó com configurações de amarra

hashtag
Compatibilidade de versão

circle-check

Este gráfico será executado no Civil 3D 2020 e versões superiores.

hashtag
Conjunto de dados

Comece fazendo o download dos arquivos de amostra abaixo e, em seguida, abrindo o arquivo DWG e o gráfico do Dynamo.

file-download
185KB
Rail_ClearanceEnvelope (1).dyn
arrow-up-right-from-squareOpen
file-download
22MB
Rail_ClearanceEnvelope.dwg
arrow-up-right-from-squareOpen

hashtag
Solução

Apresentamos a seguir uma visão geral da lógica no gráfico.

  1. Obter linhas de recurso da linha base do corredor especificada

  2. Gerar sistemas de coordenadas ao longo da linha de recurso do corredor no espaçamento desejado

  3. Transformar a geometria do bloco do perfil para os sistemas de coordenadas

  4. Elevar um sólido entre os perfis

  5. Criar sólidos no Civil 3D

Vamos começar

hashtag
Obter os dados do corredor

Nossa primeira etapa é obter os dados do corredor. Selecionaremos o modelo de corredor pelo nome, obteremos uma linha base específica dentro do corredor e, em seguida, obteremos uma linha de recurso dentro da linha base pelo código de ponto.

Seleção do corredor, da linha base e da linha de recurso

hashtag
Gerar os sistemas de coordenadas

O que vamos fazer agora é gerar os Sistemas de coordenadas ao longo das linhas de recurso do corredor entre uma determinada estaca inicial e final. Esses sistemas de coordenadas serão usados para alinhar a geometria do bloco do perfil do veículo com o corredor.

circle-info

Se os sistemas de coordenadas forem algo novo para você, veja a seção Vetor, plano e sistema de coordenadas.

Obtenção dos sistemas de coordenadas ao longo das linhas de recurso do corredor
  1. Observe os pequenos XXX no canto inferior direito do nó. Isso significa que as configurações de amarra do nó são definidas como Produto transversal, que é necessário para gerar os sistemas de coordenadas nos mesmos valores de estaca para ambas as linhas de recurso.

circle-info

Se a amarra de nó for algo novo para você, veja a seção O que é uma lista?.

hashtag
Transformar a geometria de bloco

Agora, precisamos de alguma forma criar uma matriz dos perfis de veículo ao longo das linhas do recurso. O que vamos fazer é transformar a geometria da definição do bloco do perfil do veículo usando o nó Geometry.Transform. Esse é um conceito complicado de visualizar, assim, antes de analisarmos os nós, veja a seguir um gráfico que mostra o que vai acontecer.

Visualização da transformação da geometria entre sistemas de coordenadas.

Basicamente, estamos usando a geometria do Dynamo de uma única definição de bloco e movendo-a/girando-a, tudo isso enquanto criamos uma matriz ao longo da linha do recurso. Que legal. Veja como é a aparência da sequência de nós.

  1. Isso obtém a definição de bloco do documento.

  2. Esses nós obtêm a geometria do Dynamo dos objetos dentro do bloco.

  3. Esses nós definem essencialmente o sistema de coordenadas com base no qual estamos transformando a geometria.

  4. E, por fim, esse nó faz o trabalho real de transformar a geometria.

  5. Observe a amarra Mais longa nesse nó.

E aqui está o que obtemos no Dynamo.

Geometria do bloco do perfil do veículo após a transformação

hashtag
Gerar sólidos

Temos boas notícias. O trabalho árduo está feito. Tudo o que precisamos fazer agora é gerar sólidos entre os perfis. Isso é facilmente obtido com o nó Solid.ByLoft.

E aqui está o resultado. Lembre-se de que esses são sólidos do Dynamo – ainda precisamos criá-los no Civil 3D.

Sólidos do Dynamo após a transição

hashtag
Sólidos de saída para o Civil 3D

Nossa última etapa é gerar os sólidos gerados no espaço do modelo. Também daremos a eles uma cor para torná-los muito fáceis de ver.

Geração de saída dos sólidos para o Civil 3D

hashtag
Resultado

Veja um exemplo de como executar o gráfico usando o Reprodutor do Dynamo.

Execução do gráfico usando o Reprodutor do Dynamo e visualização dos resultados no Civil 3D
circle-info

Se o Reprodutor do Dynamo for algo novo para você, veja a seção Reprodutor do Dynamo.

🎉 Missão cumprida.

hashtag
Ideias

Veja a seguir algumas ideias sobre como você pode expandir os recursos desse gráfico.

circle-info

Adicione a capacidade de usar diferentes intervalos de estacas separadamente para cada trilha.

circle-info

Divida os sólidos em segmentos menores que podem ser analisados individualmente para detectar interferências.

circle-info

Verifique se os sólidos de envelope fazem interseção com recursos e colore os que apresentam interferência.

Gerenciamento de grupo de pontos

Trabalhar com pontos COGO e grupos de pontos no Civil 3D é um elemento central de muitos processos do campo à conclusão. O Dynamo realmente brilha quando se trata de gerenciamento de dados e demonstraremos um caso de uso potencial neste exemplo.

hashtag
Objetivo

🎯 Criar um grupo de pontos para cada descrição de ponto COGO exclusiva.

hashtag
Principais conceitos

  • Trabalhar com listas

  • Agrupar objetos similares com o nó List.GroupByKey

  • Mostrar a saída personalizada no Reprodutor do Dynamo

hashtag
Compatibilidade de versão

circle-check

Este gráfico será executado no Civil 3D 2020 e versões superiores.

hashtag
Conjunto de dados

Comece fazendo o download dos arquivos de amostra abaixo e, em seguida, abrindo o arquivo DWG e o gráfico do Dynamo.

file-download
33KB
Survey_CreatePointGroups.dyn
arrow-up-right-from-squareOpen
file-download
1MB
Survey_CreatePointGroups.dwg
arrow-up-right-from-squareOpen

hashtag
Solução

Apresentamos a seguir uma visão geral da lógica no gráfico.

  1. Obter todos os pontos COGO no documento

  2. Agrupar os pontos COGO por descrição

  3. Criar os grupos de pontos

  4. Gerar a saída de um resumo para o Reprodutor do Dynamo

Vamos começar

hashtag
Obter os pontos COGO

Nossa primeira etapa é obter todos os grupos de pontos no documento e, em seguida, obter todos os pontos COGO dentro de cada grupo. Isso nos fornecerá uma lista aninhada ou uma “lista de listas” com a qual será mais fácil trabalhar mais tarde se aplainarmos tudo em uma única lista com o nó List.Flatten.

circle-info

Se você não estiver familiarizado com o trabalho com listas, veja a seção Trabalhar com listas.

Obter todos os grupos de pontos e pontos COGO

hashtag
Agrupar os pontos por descrição

Agora que temos todos os pontos COGO, precisamos separá-los em grupos com base em suas descrições. É exatamente isso que o nó List.GroupByKey faz. Ele essencialmente agrupa todos os itens que compartilham a mesma chave.

Agrupar os pontos COGO por descrição

hashtag
Criar os grupos de pontos

O trabalho árduo está feito. A etapa final é criar novos grupos de pontos do Civil 3D com base em pontos COGO agrupados.

Criar novos grupos de pontos

hashtag
Resumo da saída

Quando você executa o gráfico, não há nada para ver na visualização do plano de fundo do Dynamo porque não estamos trabalhando com nenhuma geometria. Portanto, a única maneira de ver se o gráfico foi executado corretamente é verificar o espaço da ferramenta ou analisar as visualizações de saída do nó. No entanto, se executarmos o gráfico usando o Reprodutor do Dynamo, poderemos fornecer mais feedback sobre os resultados do gráfico, gerando um resumo dos grupos de pontos que foram criados. Tudo o que você precisa fazer é clicar com o botão direito do mouse em um nó e defini-lo como É saída. Neste caso, usamos um nó Inspeção renomeado para visualizar os resultados.

Definir um nó como É saída exibirá seu conteúdo na saída do Reprodutor do Dynamo

hashtag
Resultado

Veja um exemplo de como executar o gráfico usando o Reprodutor do Dynamo.

Execução do gráfico usando o Reprodutor do Dynamo e visualização dos resultados no espaço da ferramenta
circle-info

Se o Reprodutor do Dynamo for algo novo para você, veja a seção Reprodutor do Dynamo.

🎉 Missão cumprida.

hashtag
Ideias

Veja a seguir algumas ideias sobre como você pode expandir os recursos desse gráfico.

circle-info

Modifique o agrupamento de pontos para que seja baseado na descrição completa em vez de na descrição original.

circle-info

Agrupe os pontos em algumas outras categorias predefinidas que você escolher (por exemplo, “Instantâneos no nível do solo”, “Monumentos” etc.)

circle-info

Cria automaticamente superfícies TIN para pontos em determinados grupos.

Vinculação de objetos

O Dynamo for Civil 3D contém um mecanismo muito poderoso para “lembrar” os objetos que são criados por cada nó. Esse mecanismo é chamado de Vinculação de objetos e permite que um gráfico do Dynamo produza resultados consistentes sempre que for executado no mesmo documento. Embora isso seja altamente desejável em muitas situações, há outras situações em que você pode desejar ter mais controle sobre o comportamento do Dynamo. Esta seção ajudará a entender como funciona a vinculação de objetos e como você pode tirar proveito dela.

hashtag
Exemplo

Considere este gráfico que cria um círculo no espaço do modelo na camada atual.

Um gráfico simples para criar um círculo

Observe o que acontece quando o raio é alterado.

Modificação da entrada de raio no Dynamo

É a vinculação de objetos em ação. O comportamento padrão do Dynamo é modificar o raio do círculo, em vez de criar um novo círculo sempre que a entrada do raio é alterada. Isso ocorre porque o nó Object.ByGeometry “lembra” que criou esse círculo específico sempre que o gráfico é executado. Além disso, o Dynamo armazenará essas informações de modo que, na próxima vez que você abrir o documento do Civil 3D e executar o gráfico, ele tenha exatamente o mesmo comportamento.

hashtag
Outro exemplo

Vamos examinar um exemplo no qual você pode desejar alterar o comportamento da vinculação de objetos padrão do Dynamo. Digamos que você deseje criar um gráfico que posicione o texto no meio de um círculo. No entanto, sua intenção com esse gráfico é que ele possa ser executado repetidamente e posicionar novo texto sempre que qualquer círculo for selecionado. Veja a seguir a aparência do gráfico.

Um gráfico simples que posiciona texto no centro de um círculo selecionado

No entanto, isso é o que acontece quando um círculo diferente é selecionado.

Comportamento padrão do Dynamo ao selecionar um novo círculo

Parece que o texto é excluído e recriado a cada execução do gráfico. Na realidade, a posição do texto está sendo modificada, dependendo de qual círculo está selecionado. Portanto, é o mesmo texto, só que em um lugar diferente. Para criar um novo texto a cada vez, é necessário modificar as configurações de vinculação de objetos do Dynamo para que nenhum dado de vinculação seja mantido (consulte Vinculação de objetos abaixo).

Configurações de vinculação de objetos

Depois de fazer essa alteração, temos o comportamento que procuramos.

Comportamento com a vinculação de objetos desativada

hashtag
Configurações de vinculação

O Dynamo for Civil 3D permite modificar o comportamento padrão da vinculação de objetos por meio das configurações Armazenamento de dados de vinculação no menu do Dynamo.

circle-info

Observe que as opções de Armazenamento de dados de vinculação estão disponíveis no Civil 3D 2022.1 e versões posteriores.

Todas as opções estão ativadas por padrão. Veja a seguir um resumo do que cada opção faz.

hashtag
Opção 1: Nenhum dado de vinculação mantido

Quando essa opção está ativada, o Dynamo “esquecerá” os objetos que criou na última vez que o gráfico foi executado. Assim, o gráfico pode ser executado em qualquer desenho em qualquer situação e criará novos objetos a cada vez.

circle-info

Quando usar

Use essa opção quando desejar que o Dynamo “esqueça” tudo sobre o que fez em execuções anteriores e crie novos objetos todas as vezes.

hashtag
Opção 2: Armazenar no desenho para o Dynamo

Essa opção significa que os metadados da vinculação de objetos serão serializados no gráfico (arquivo .dyn) quando ele for salvo. Se você fechar/reabrir o gráfico e executá-lo no mesmo desenho, tudo deverá funcionar da mesma forma que você deixou. Se o gráfico for executado em um desenho diferente, os dados de vinculação serão removidos do gráfico e novos objetos serão criados. Isso significa que, se você abrir o desenho original e executar o gráfico novamente, serão criados novos objetos além dos antigos.

circle-info

Quando usar

Use essa opção quando desejar que o Dynamo “lembre-se” dos objetos que criou na última vez que foi executado em um desenho específico.

circle-exclamation

Essa opção é mais adequada para situações em que é possível manter uma relação 1:1 entre um desenho específico e um gráfico do Dynamo. As opções 1 e 3 são mais adequadas para gráficos projetados para execução em vários desenhos.

hashtag
Opção 3: Armazenar no desenho para o Dynamo

Essa opção é semelhante à Opção 2, exceto que os dados de vinculação de objetos são serializados no desenho em vez de serem no gráfico (arquivo .dyn). Se você fechar/reabrir o gráfico e executá-lo no mesmo desenho, tudo deverá funcionar da mesma forma que você deixou. Se o gráfico for executado em um desenho diferente, os dados de vinculação ainda serão preservados no desenho original, já que ele é salvo no desenho e não no gráfico.

circle-info

Quando usar

Use essa opção quando desejar usar o mesmo gráfico em vários desenhos e que o Dynamo “lembre” do que fez em cada um deles.

hashtag
Opção 4: Armazenar no desenho para o Reprodutor do Dynamo

A primeira coisa a observar com essa opção é que ela não tem efeito sobre como o gráfico interage com o desenho ao executar o gráfico através da interface principal do Dynamo. Essa opção somente se aplica quando o gráfico é executado usando o Reprodutor do Dynamo.

circle-info

Se o Reprodutor do Dynamo for algo novo para você, veja a seção Reprodutor do Dynamo.

Se o gráfico for executado usando a interface principal do Dynamo e, em seguida, fechar e executar o mesmo gráfico usando o Reprodutor do Dynamo, ele criará novos objetos além dos que criou antes. No entanto, quando o Reprodutor do Dynamo executar o gráfico uma vez, ele serializará os dados da vinculação de objetos no desenho. Portanto, se o gráfico for executado várias vezes através do Reprodutor do Dynamo, ele atualizará os objetos em vez de criar novos. Se o gráfico for executado através do Reprodutor do Dynamo em um desenho diferente, os dados de vinculação ainda serão preservados no desenho original, já que ele será salvo no desenho e não no gráfico.

circle-info

Quando usar

Use essa opção quando desejar executar um gráfico usando o Reprodutor do Dynamo em vários desenhos e que ele “lembre” o que fez em cada um deles.

Python e Civil 3D

Embora o Dynamo seja extremamente poderoso como uma ferramenta de programação visual, também é possível ir além dos nós e fios e escrever código em forma textual. Há duas maneiras de fazer isso:

  1. Escrever DesignScript usando um bloco de código

  2. Escrever Python usando um nó Python

Esta seção se concentrará em como aproveitar o Python no ambiente do Civil 3D para tirar proveito das APIs .NET do AutoCAD e do Civil 3D.

circle-info

Dê uma olhada na seção Python para obter informações mais gerais sobre como usar o Python no Dynamo.

hashtag
Documentação das APIs

O AutoCAD e o Civil 3D têm várias APIs disponíveis que permitem que desenvolvedores como você estendam o produto principal com funcionalidade personalizada. No contexto do Dynamo, são as APIs .NET gerenciadas que são relevantes. Os links a seguir são essenciais para entender a estrutura das APIs e como elas funcionam.

Guia do Desenvolvedor da API .NET do AutoCADarrow-up-right

Guia de Referência da API .NET do AutoCADarrow-up-right

Guia do Desenvolvedor de API .NET do Civil 3Darrow-up-right

Guia de Referência da API .NET do Civil 3Darrow-up-right

circle-info

Ao longo desta seção, pode haver alguns conceitos com os quais você não está familiarizado, como bancos de dados, transações, métodos, propriedades etc. Muitos desses conceitos são fundamentais para trabalhar com as APIs .NET e não são específicos do Dynamo ou do Python. Está além do escopo desta seção do Manual discutir esses itens em detalhes; portanto, recomendamos consultar os links acima com frequência para obter mais informações.

hashtag
Modelo de código

Quando você editar um novo nó Python pela primeira vez, ele será preenchido previamente com o código do modelo para começar. Veja a seguir um detalhamento do modelo com explicações sobre cada bloco.

Modelo Python padrão no Civil 3D
  1. Importa os módulos sys e clr, que são necessários para que o interpretador Python funcione corretamente. Em particular, o módulo clr permite que os namespaces .NET sejam tratados essencialmente como pacotes Python.

  2. Carrega as montagens padrão (ou seja, DLLs) para trabalhar com as APIs .NET gerenciadas para o AutoCAD e o Civil 3D.

  3. Adiciona referências aos namespaces padrão do AutoCAD e do Civil 3D. Isso é equivalente às diretivas using ou Imports em C# ou VB.NET (respectivamente).

  4. As portas de entrada do nó são acessíveis usando uma lista predefinida chamada IN. É possível acessar os dados em uma porta específica usando seu número de índice, por exemplo, dataInFirstPort = IN[0].

  5. Obtém o documento e o editor ativos.

  6. Bloqueia o documento e inicia uma transação do banco de dados.

  7. Aqui você deve colocar a maior parte da lógica do script.

  8. Retire o comentário dessa linha para confirmar a transação após seu trabalho principal ter sido concluído.

  9. Se desejar gerar dados do nó, atribua-os à variável OUT no final do script.

circle-info

Deseja personalizar? É possível modificar o modelo Python padrão editando o arquivo PythonTemplate.py localizado em C:\ProgramData\Autodesk\C3D <versão>\Dynamo.

hashtag
Exemplo

Vamos analisar um exemplo para demonstrar alguns dos conceitos essenciais de escrever scripts Python no Dynamo for Civil 3D.

hashtag
Objetivo

🎯 Obter a geometria de limite de todas as áreas de contribuição em um desenho.

hashtag
Conjunto de dados

Veja a seguir arquivos de exemplos que você pode consultar para este exercício.

file-download
15KB
Python_Catchments.dyn
arrow-up-right-from-squareOpen
file-download
961KB
Python_Catchments.dwg
arrow-up-right-from-squareOpen

hashtag
Visão geral da solução

Apresentamos a seguir uma visão geral da lógica no gráfico.

  1. Revisar a documentação da API do Civil 3D

  2. Selecionar todas as áreas de contribuição no documento por nome de camada

  3. “Expandir” os objetos do Dynamo para acessar os membros internos da API do Civil 3D

  4. Criar pontos do Dynamo com base em pontos do AutoCAD

  5. Criar PolyCurves com base em pontos

Vamos começar

hashtag
Revisar a documentação da API

Antes de começarmos a criar nosso gráfico e escrever código, é uma boa ideia dar uma olhada na documentação da API do Civil 3D e ter uma ideia do que a API disponibiliza para nós. Neste caso, há uma propriedade na classe Área de contribuiçãoarrow-up-right que retornará os pontos de limite da área de contribuição. Observe que essa propriedade retorna um objeto Point3dCollection, que o Dynamo não saberá como tratar. Em outras palavras, não poderemos criar uma PolyCurve com base em um objeto Point3dCollection; portanto, acabaremos precisando converter tudo em pontos do Dynamo. Haverá mais informações sobre isso mais tarde.

hashtag
Obter todas as áreas de contribuição

Agora podemos começar a criar nossa lógica do gráfico. A primeira coisa a fazer é obter uma lista de todas as áreas de contribuição no documento. Há nós disponíveis para isso; portanto, não precisamos incluí-los no script Python. O uso de nós oferece uma melhor visibilidade para outra pessoa que possa ler o gráfico (em vez de encher o script Python de código) e também mantém o script Python focado em uma coisa: retornar os pontos de limite das áreas de contribuição.

Obtenção de todas as áreas de contribuição no documento por camada

Observe aqui que a saída do nó Todos os objetos na camada é uma lista de CivilObjects. Isso ocorre porque o Dynamo for Civil 3D não tem nós atualmente para trabalhar com áreas de contribuição, o que é a razão pela qual precisamos acessar a API por meio do Python.

hashtag
Expandir objetos

Antes de avançarmos, temos de abordar brevemente um conceito importante. Na seção Biblioteca de nós, discutimos como Objetos e CivilObjects são relacionados. Para adicionar um pouco mais de detalhes a isso, um Objeto do Dynamo é um wrapper em torno de uma Entidade do AutoCAD. De forma similar, um CivilObject do Dynamo é um wrapper em torno de uma Entidade do Civil 3D. É possível “expandir” um objeto acessando suas propriedades InternalDBObject ou InternalObjectId.

Tipo do Dynamo
Pacotes

Objeto Autodesk.AutoCAD.DynamoNodes.Object

Entidade Autodesk.AutoCAD.DatabaseServices.Entity

CivilObject Autodesk.Civil.DynamoNodes.CivilObject

Entidade Autodesk.Civil.DatabaseServices.Entity

circle-exclamation

Como regra geral, é mais seguro obter a ID de objeto usando a propriedade `InternalObjectId` e, em seguida, acessar o objeto empacotado em uma transação. Isso ocorre porque a propriedade `InternalDBObject` retornará um DBObject do AutoCAD que não está em um estado gravável.

hashtag
Script Python

Aqui está o script Python completo que faz o trabalho de acessar os objetos de área de contribuição internos que estão obtendo seus pontos de limite. As linhas realçadas representam as que são modificadas/adicionadas do código do modelo padrão.

circle-info

Clique no texto sublinhado no script para obter uma explicação sobre cada linha.

# Carregar as bibliotecas Standard e do DesignScript do Python
import sys
import clr

# Adicionar montagens para o AutoCAD e o Civil 3D
clr.AddReference('AcMgd')
clr.AddReference('AcCoreMgd')
clr.AddReference('AcDbMgd')
clr.AddReference('AecBaseMgd')
clr.AddReference('AecPropDataMgd')
clr.AddReference('AeccDbMgd')

clr.AddReference('ProtoGeometry')

# Importar referências do AutoCAD
from Autodesk.AutoCAD.Runtime import *
from Autodesk.AutoCAD.ApplicationServices import *
from Autodesk.AutoCAD.EditorInput import *
from Autodesk.AutoCAD.DatabaseServices import *
from Autodesk.AutoCAD.Geometry import *

# Importar referências do Civil3D
from Autodesk.Civil.ApplicationServices import *
from Autodesk.Civil.DatabaseServices import *

from Autodesk.DesignScript.Geometry import Point as DynPoint

# As entradas para esse nó serão armazenadas como uma lista nas variáveis IN.
objs = IN[0]

output = [] 

if objs is None:
    sys.exit(“A entrada é nula ou está vazia.”)

if not isinstance(objs, list):
    objs = [objs]
    
adoc = Application.DocumentManager.MdiActiveDocument
editor = adoc.Editor

with adoc.LockDocument():
    with adoc.Database as db:
        
        with db.TransactionManager.StartTransaction() as t:
            for obj in objs:              
                id = obj.InternalObjectId
                aeccObj = t.GetObject(id, OpenMode.ForRead)                
                if isinstance(aeccObj, Catchment):
                    catchment = aeccObj
                    acPnts = catchment.BoundaryPolyline3d                    
                    dynPnts = []
                    para acPnt em acPnts:
                        pnt = DynPoint.ByCoordinates(acPnt.X, acPnt.Y, acPnt.Z)
                        dynPnts.append(pnt)
                    output.append(dynPnts)
            
            # Confirmar antes de finalizar a transação
            t.Commit()
            pass
            
# Atribua a saída à variável OUT.
OUT = output
circle-exclamation

Como regra geral, é recomendável incluir a maior parte da lógica do script dentro de uma transação. Isso garante o acesso seguro aos objetos que o script está lendo/gravando. Em muitos casos, a omissão de uma transação pode causar um erro fatal.

hashtag
Criar PolyCurves

Nesta fase, o script Python deve gerar uma lista de pontos do Dynamo que você pode ver na visualização do plano de fundo. A última etapa é simplesmente criar PolyCurves com base nos pontos. Observe que isso também pode ser feito diretamente no script Python, mas nós o colocamos intencionalmente fora do script em um nó para que ele fique mais visível. Veja a seguir a aparência final do gráfico.

Gráfico final

hashtag
Resultado

E aqui está a geometria final do Dynamo.

PolyCurves do Dynamo resultantes para os limites da área de contribuição

🎉 Missão cumprida.

hashtag
IronPython versus CPython

Apenas uma rápida observação aqui antes de finalizarmos. Dependendo de qual versão do Civil 3D você está usando, o nó Python pode ser configurado de forma diferente. No Civil 3D 2020 e 2021, o Dynamo usava uma ferramenta chamada IronPython para mover dados entre objetos .NET e scripts Python. No entanto, no Civil 3D 2022, o Dynamo fez a transição para usar o interpretador Python nativo padrão (também conhecido como CPython), que usa o Python 3. Os benefícios dessa transição incluem o acesso a bibliotecas modernas e populares, além de novos recursos de plataforma, manutenção essencial e patches de segurança.

circle-info

Você pode ler mais sobre essa transição e sobre como atualizar os scripts herdados no Blog do Dynamoarrow-up-right. Se você desejar continuar usando o IronPython, basta instalar o pacote DynamoIronPython2.7 usando o Dynamo Package Manager.

Reprodutor do Dynamo

Executar o gráfico usando o Reprodutor do Dynamo e ver os resultados no Civil 3D

O Reprodutor do Dynamo fornece uma forma simplificada para executar gráficos do Dynamo no Civil 3D. Após a criação dos gráficos, não é necessário nenhum conhecimento do Dynamo para usar o Reprodutor e executar os gráficos. Isso facilita o compartilhamento de gráficos com outras pessoas que podem não estar interessadas em analisar os detalhes de nós e fios.

circle-info

Para obter mais informações sobre o Reprodutor do Dynamo no Civil 3D, consulte a documentação fornecida no site Ajuda do Civil 3Darrow-up-right.

Pacotes úteis

Os pacotes do Dynamo são conjuntos de ferramentas desenvolvidos por terceiros para estender a funcionalidade principal do Dynamo. Eles podem ser acessados por todos e prontos para download com o clique do botão.

circle-info

Consulte a seção Pacotes para obter mais informações sobre como começar a usar pacotes.

Veja a seguir uma lista de alguns dos pacotes mais populares que podem levar seus gráficos do Dynamo for Civil 3D a um novo patamar.

hashtag
Kit de ferramentas do Civil 3D

O Kit de ferramentas do Civil 3D é um pacote do Dynamo for Civil 3D que fornece aprimoramentos significativos aos recursos do Dynamo por meio de um grande inventário de nós adicionais.

hashtag
Feedback

hashtag
Aulas relacionadas da Autodesk University

hashtag
Camber

O Camber é um pacote de código aberto do Dynamo for Civil 3D que inclui centenas de nós para trabalhar com legendas, refexs, atalhos de dados, estilos etc.

hashtag
Feedback

hashtag
Código-fonte

hashtag
CivilConnection

O CivilConnection é um pacote do Dynamo para Revit de código aberto que permite a troca de informações entre o Civil 3D, o Dynamo e o Revit.

hashtag
Aulas relacionadas da Autodesk University

hashtag
Código-fonte

hashtag
Arkance Systems Nodes

O Arkance Systems Nodes é um pacote do Dynamo for Civil 3D com uma grande variedade de nós úteis para trabalhar com cotas, tabelas, vistas, controle de perfuração etc.

hashtag
Feedback

hashtag
Documentação

Recursos

Este manual é apenas o início de sua jornada com o Dynamo for Civil 3D. Há uma grande variedade de conhecimentos disponíveis em uma comunidade consolidada de usuários do Dynamo. Veja alguns desses recursos à medida que aprende.

hashtag
Ajuda do Civil 3D

Helphelp.autodesk.comchevron-right

hashtag
Fórum do Dynamo

hashtag
Autodesk University

hashtag
Livros

Atualização da interface do usuário do Reprodutor do Dynamo

2023.2

2.15

2023

2.13

Atualização da interface do usuário do Dynamo

2022.1

2.12

  • Foram adicionadas configurações de armazenamento de dados de vinculação de objetos

  • Novos nós para controlar a vinculação de objetos

2022

2.10

  • Incluído na instalação principal do Civil 3D

  • Transição do IronPython para o Python.NET

2021

2.5

2020.2

2.4

2020 Update 2

2.4

Novos nós adicionados

2020.1

2.2

2020

2.1

Versão inicial

Tópico de feedback do Kit de ferramentas do Civil 3Darrow-up-right
Potencializar o gráfico do Dynamo com o Kit de ferramentas do Civil 3D | Autodesk Universityarrow-up-right
Tópico de feedback do Camberarrow-up-right
Modelagem computacional de estruturas lineares com o Civil 3D, o Revit e o Dynamo CivilConnection | Autodesk Universityarrow-up-right
Detalhamento da ponta 2.0: métodos de modelagem computacional usando o Civil 3D, o Revit e o Dynamo | Autodesk Universityarrow-up-right
Modelagem paramétrica e automatização da colocação de anéis universais TBM | Autodesk Universityarrow-up-right
Tópico de feedback da biblioteca de nós da Arkance Systemsarrow-up-right
GitHub - mzjensen/Camber: An open-source Dynamo package for Civil 3D.GitHubchevron-right
GitHub - Autodesk/civilconnection: CivilConnection enables the exchange of information between Civil 3D, Dynamo and Revit.GitHubchevron-right
Arkance Systems Node Library for Civil 3D DynamoHuizBlogchevron-right
Getting Started with Dynamo for Civil 3D: A Beginner’s Guide | Autodesk Universitywww.autodesk.comchevron-right
Civil 3DDynamochevron-right
Dynamo in Civil 3D Introduction—Unlocking the Mystery of Scripting | Autodesk Universitywww.autodesk.comchevron-right
Computational Design for Civil Engineers | Autodesk Universitywww.autodesk.comchevron-right
Mundane Civil 3D Tasks to Automate with Dynamo for Civil 3D | Autodesk Universitywww.autodesk.comchevron-right
Dynamo for Civil 3D: Automated Checks of Open-Format Road Design Made Easy | Autodesk Universitywww.autodesk.comchevron-right
Underground Utility GIS Features to Civil 3D Pipe Networks with Dynamo | Autodesk Universitywww.autodesk.comchevron-right
Civil 3D and Dynamo—Dynamic Culvert Design and Analysis | Autodesk Universitywww.autodesk.comchevron-right
Generating, Transforming, and Analyzing Railway Design Data in Civil 3D and Dynamo | Autodesk Universitywww.autodesk.comchevron-right
Optimize Road Design with Dynamo for Civil 3D and Generative Design | Autodesk Universitywww.autodesk.comchevron-right
Dynamo for Civil 3Dbooks.huiz.netchevron-right
Logo
Logo
Logo
Logo
Logo
Logo
Logo
Logo
Logo
Logo
Logo
Logo
Logo
Logo
Logo