> For the complete documentation index, see [llms.txt](https://primer2.dynamobim.org/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://primer2.dynamobim.org/pt-br/dynamo-for-civil-3d/sample-workflows/rail/clearance-envelope.md).

# Estrutura da altura livre

<figure><img src="https://244128891-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2qE9MHrCjjcYhCOUtPm6%2Fuploads%2Fgit-blob-41ec6f1f188bae0df6c250963e8fd9952da1608c%2FRail_ClearanceEnvelope_Player.gif?alt=media" alt=""><figcaption></figcaption></figure>

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.

## Objetivo

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

## 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

## Compatibilidade de versão

{% hint style="success" %}
Este gráfico será executado no \*\*Civil 3D 2020\*\* e versões superiores.
{% endhint %}

## 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 src="/files/KqYkAMYxrl6kiNs0lX6D" %}

{% file src="/files/4nP9geoFbAFDffYZP8xp" %}

## 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

### 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.

<figure><img src="https://244128891-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2qE9MHrCjjcYhCOUtPm6%2Fuploads%2Fgit-blob-ac149803f2fec120b34fecefe697b2cb5598c462%2FRail_ClearanceEnvelope_GetCorridorData.png?alt=media" alt=""><figcaption><p>Seleção do corredor, da linha base e da linha de recurso</p></figcaption></figure>

### 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.

{% hint style="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").
{% endhint %}

<figure><img src="https://244128891-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2qE9MHrCjjcYhCOUtPm6%2Fuploads%2Fgit-blob-f005dd000c839530bb8e664b761d858a45c2ebe9%2FRail_ClearanceEnvelope_CreateCoordinateSystems.png?alt=media" alt=""><figcaption><p>Obtenção dos sistemas de coordenadas ao longo das linhas de recurso do corredor</p></figcaption></figure>

> 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.

{% hint style="info" %}
Se a amarra de nó for algo novo para você, veja a seção \[1-whats-a-list.md]\(../../../5\\\_essential\\\_nodes\\\_and\\\_concepts/5-4\\\_designing-with-lists/1-whats-a-list.md "mention").
{% endhint %}

### 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.

<figure><img src="https://244128891-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2qE9MHrCjjcYhCOUtPm6%2Fuploads%2Fgit-blob-e303adc517b5bf2951a8d04ae1c2675b1842eb53%2FRail_ClearanceEnvelope_TransformAnimation.gif?alt=media" alt=""><figcaption><p>Visualização da transformação da geometria entre sistemas de coordenadas.</p></figcaption></figure>

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.

<figure><img src="https://244128891-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2qE9MHrCjjcYhCOUtPm6%2Fuploads%2Fgit-blob-44c2996470bb14d4a59c7a418708593d00194ab2%2FRail_ClearanceEnvelope_Transform.png?alt=media" alt=""><figcaption></figcaption></figure>

> 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.

<figure><img src="https://244128891-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2qE9MHrCjjcYhCOUtPm6%2Fuploads%2Fgit-blob-28cd3b3dcb9a5f88df9b5bf620e61e6b087f89d9%2FRail_ClearanceEnvelope_Dynamo_Profiles.png?alt=media" alt=""><figcaption><p>Geometria do bloco do perfil do veículo após a transformação</p></figcaption></figure>

### 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**.

<figure><img src="https://244128891-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2qE9MHrCjjcYhCOUtPm6%2Fuploads%2Fgit-blob-ba0723c6e309707fd12e50c89983205a4a9725be%2FRail_PlaceTies_SolidByLoft.png?alt=media" alt="" width="325"><figcaption></figcaption></figure>

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

<figure><img src="https://244128891-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2qE9MHrCjjcYhCOUtPm6%2Fuploads%2Fgit-blob-28e91b1c436018bf6ecb7afe18ac32f11c78da6a%2FRail_ClearanceEnvelope_Dynamo_Solids.png?alt=media" alt=""><figcaption><p>Sólidos do Dynamo após a transição</p></figcaption></figure>

### 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.

<figure><img src="https://244128891-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2qE9MHrCjjcYhCOUtPm6%2Fuploads%2Fgit-blob-bf5954f60f7c14543cee49ee5d1eefcd4b9648d0%2FRail_ClearanceEnvelope_SolidsToC3D.png?alt=media" alt=""><figcaption><p>Geração de saída dos sólidos para o Civil 3D</p></figcaption></figure>

### Resultado

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

<figure><img src="https://244128891-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2qE9MHrCjjcYhCOUtPm6%2Fuploads%2Fgit-blob-41ec6f1f188bae0df6c250963e8fd9952da1608c%2FRail_ClearanceEnvelope_Player.gif?alt=media" alt=""><figcaption><p>Execução do gráfico usando o Reprodutor do Dynamo e visualização dos resultados no Civil 3D</p></figcaption></figure>

{% hint style="info" %}
Se o Reprodutor do Dynamo for algo novo para você, veja a seção \[dynamo-player.md]\(../../dynamo-player.md "mention").
{% endhint %}

> :tada: Missão cumprida.

## Ideias

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

{% hint style="info" %}
Adicione a capacidade de usar \*\*diferentes intervalos de estacas\*\* separadamente para cada trilha.
{% endhint %}

{% hint style="info" %}
\*\*Divida os sólidos\*\* em segmentos menores que podem ser analisados individualmente para detectar interferências.
{% endhint %}

{% hint style="info" %}
Verifique se os sólidos de envelope \*\*fazem interseção com recursos\*\* e colore os que apresentam interferência.
{% endhint %}
