> 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/ru/dynamo-for-civil-3d/sample-workflows/rail/clearance-envelope.md).

# Границы зазора

<figure><img src="/files/ia2DB8kQzEx7Cj86KsC8" alt=""><figcaption></figcaption></figure>

Разработка кинематических границ для проверки зазора — важная часть проектирования железной дороги. С помощью Dynamo можно создавать тела для определения таких границ без необходимости в создании сложных элементов конструкции коридора и управления ими.

## Цель

> :dart: Использование блока профиля транспортного средства для создания 3D-тел, определяющих границы зазора, вдоль коридора.

## Основные этапы

> * Работа с характерными линиями коридора
> * Преобразование геометрии при переходе между системами координат
> * Создание тел путем лофтинга
> * Управление поведением узла с помощью параметров переплетения.

## Совместимость версий

{% hint style="success" %}
Этот график будет работать в \*\*Civil 3D 2020\*\* и более поздних версиях.
{% endhint %}

## Набор данных

Сначала скачайте файлы примеров ниже, а затем откройте файл DWG и график Dynamo.

{% file src="/files/SIaNbGr6QV3MFPryss34" %}

{% file src="/files/RxLnd8WAUZN4XIpjYJ92" %}

## Решение

Ниже представлен обзор логики, используемой в этом графике.

> 1. Получение характерных линий из заданной базовой линии коридора.
> 2. Создание систем координат вдоль характерной линии коридора с требуемым интервалом.
> 3. Преобразование геометрии блока профиля в соответствии с системой координат.
> 4. Лофтинг тела между профилями.
> 5. Создание тел в Civil 3D.

Приступим!

### Получение данных коридора

Сначала необходимо получить данные коридора. Выберем модель коридора по имени, получим нужную базовую линию в коридоре, а затем извлечем характерную линию в пределах базовой линии по коду точки.

<figure><img src="/files/dQBLf7HZrci0KvtnmOEz" alt=""><figcaption><p>Выбор коридора, базовой линии и характерной линии</p></figcaption></figure>

### Создание систем координат

Теперь создадим **системы координат** вдоль характерных линий коридора между заданным начальным и конечным пикетами. Эти системы координат будут использоваться для выравнивания геометрии блока профиля транспортного средства по коридору.

{% hint style="info" %}
Если вы еще не знакомы с системами координат, см. раздел \[2-vectors.md]\(../../../5\\\_essential\\\_nodes\\\_and\\\_concepts/5-2\\\_geometry-for-computational-design/2-vectors.md "mention").
{% endhint %}

<figure><img src="/files/hvs7H2kijAATXwZvjhKX" alt=""><figcaption><p>Получение систем координат, расположенных вдоль характерных линий коридора</p></figcaption></figure>

> 1. Обратите внимание на **XXX** в правом нижнем углу узла. Это означает, что для параметров переплетения узла задано значение *Векторное произведение*. Это необходимо для создания систем координат с одинаковыми значениями пикетов для обеих характерных линий.

{% hint style="info" %}
Если вы еще не знакомы с переплетением узлов, см. раздел \[1-whats-a-list.md]\(../../../5\\\_essential\\\_nodes\\\_and\\\_concepts/5-4\\\_designing-with-lists/1-whats-a-list.md "mention").
{% endhint %}

### Преобразование геометрии блока

Теперь необходимо каким-то образом создать массив профилей транспортных средств вдоль характерных линий. Для этого преобразуем геометрию из определения блока профиля транспортного средства с помощью узла **Geometry.Transform**. Эту концепцию сложно представить визуально, так что прежде чем перейти к узлам, посмотрим на график, чтобы понять, что именно произойдет.

<figure><img src="/files/1RuKHOZf1hPvKrVJaWgG" alt=""><figcaption><p>Визуализация преобразования геометрии при переходе между системами координат.</p></figcaption></figure>

По сути, мы извлекаем геометрию Dynamo из *одного* определения блока, а затем перемещаем и поворачиваем ее, в процессе создавая массив вдоль характерной линии. Неплохо, да? Ниже представлена последовательность узлов.

<figure><img src="/files/NN1OHZ7B6PYmUGVZz2uC" alt=""><figcaption></figcaption></figure>

> 1. Здесь выполняется получение определения блока из документа.
> 2. Эти узлы извлекают геометрию Dynamo для объектов в блоке.
> 3. Эти узлы, по сути, определяют *исходную* систему координат, в которой геометрия находится до преобразования.
> 4. Наконец, в этом узле выполняется собственно преобразование геометрии.
> 5. Обратите внимание на *длинное* переплетение в этом узле.

Вот что мы получаем в Dynamo.

<figure><img src="/files/bZgxRxkRrbkNPpjxtLvZ" alt=""><figcaption><p>Геометрия блока профиля транспортного средства после преобразования</p></figcaption></figure>

### Создание тел

У нас для вас хорошая новость. Самое сложное позади! Все, что осталось сделать, — создать тела между профилями. Это можно легко сделать с помощью узла **Solid.ByLoft**.

<figure><img src="/files/ZIYiUglaVtd1Fd4GYs8f" alt="" width="325"><figcaption></figcaption></figure>

Результат можно посмотреть здесь. Помните, что это тела Dynamo, а значит, их все еще нужно создать в Civil 3D.

<figure><img src="/files/bNO9CbpycKkZjGjoTzKA" alt=""><figcaption><p>Тела Dynamo после лофтинга</p></figcaption></figure>

### Вывод тел в Civil 3D

Последний шаг — вывод сгенерированных тел в пространство модели. Кроме того, мы присвоим им цвет, чтобы сделать их более заметными.

<figure><img src="/files/YxGERqzgZuiqZ5hntWp1" alt=""><figcaption><p>Вывод тел в Civil 3D</p></figcaption></figure>

### Результат

Ниже приведен пример запуска графика с помощью **проигрывателя Dynamo**.

<figure><img src="/files/ia2DB8kQzEx7Cj86KsC8" alt=""><figcaption><p>Запуск графика с помощью проигрывателя Dynamo и просмотр результатов в Civil 3D</p></figcaption></figure>

{% hint style="info" %}
Если вы еще не знакомы с проигрывателем Dynamo, см. раздел \[dynamo-player.md]\(../../dynamo-player.md "mention").
{% endhint %}

> :tada: Миссия выполнена!

## Идеи

Вот несколько вариантов того, как можно расширить возможности этого графика.

{% hint style="info" %}
Добавление возможности использования \*\*разных диапазонов пикетов\*\* отдельно для каждого пути.
{% endhint %}

{% hint style="info" %}
\*\*Разбивка тел\*\* на более мелкие сегменты, которые можно проанализировать отдельно на предмет конфликтов.
{% endhint %}

{% hint style="info" %}
Проверка того, \*\*не пересекаются ли тела границы с элементами\*\*, и выделение цветом тех, которые пересекаются.
{% endhint %}
