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.

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.

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

Compatibilidade de versão

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

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.

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

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

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.

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.

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.

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

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.

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.

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.

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

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.

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

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.

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

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.

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

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

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

🎉 Missão cumprida.

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.

Ideias

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

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

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.

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.

Last updated