Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Разработка кинематических границ для проверки зазора — важная часть проектирования железной дороги. С помощью Dynamo можно создавать тела для определения таких границ без необходимости в создании сложных элементов конструкции коридора и управления ими.
Работа с характерными линиями коридора
Преобразование геометрии при переходе между системами координат
Создание тел путем лофтинга
Управление поведением узла с помощью параметров переплетения.
Этот график будет работать в Civil 3D 2020 и более поздних версиях.
Сначала скачайте файлы примеров ниже, а затем откройте файл DWG и график Dynamo.
Ниже представлен обзор логики, используемой в этом графике.
Получение характерных линий из заданной базовой линии коридора.
Создание систем координат вдоль характерной линии коридора с требуемым интервалом.
Преобразование геометрии блока профиля в соответствии с системой координат.
Лофтинг тела между профилями.
Создание тел в Civil 3D.
Приступим!
Сначала необходимо получить данные коридора. Выберем модель коридора по имени, получим нужную базовую линию в коридоре, а затем извлечем характерную линию в пределах базовой линии по коду точки.
Теперь создадим системы координат вдоль характерных линий коридора между заданным начальным и конечным пикетами. Эти системы координат будут использоваться для выравнивания геометрии блока профиля транспортного средства по коридору.
Если вы еще не знакомы с системами координат, см. раздел Вектор, плоскость и система координат.
Обратите внимание на XXX в правом нижнем углу узла. Это означает, что для параметров переплетения узла задано значение Векторное произведение. Это необходимо для создания систем координат с одинаковыми значениями пикетов для обеих характерных линий.
Если вы еще не знакомы с переплетением узлов, см. раздел Что такое список.
Теперь необходимо каким-то образом создать массив профилей транспортных средств вдоль характерных линий. Для этого преобразуем геометрию из определения блока профиля транспортного средства с помощью узла Geometry.Transform. Эту концепцию сложно представить визуально, так что прежде чем перейти к узлам, посмотрим на график, чтобы понять, что именно произойдет.
По сути, мы извлекаем геометрию Dynamo из одного определения блока, а затем перемещаем и поворачиваем ее, в процессе создавая массив вдоль характерной линии. Неплохо, да? Ниже представлена последовательность узлов.
Здесь выполняется получение определения блока из документа.
Эти узлы извлекают геометрию Dynamo для объектов в блоке.
Эти узлы, по сути, определяют исходную систему координат, в которой геометрия находится до преобразования.
Наконец, в этом узле выполняется собственно преобразование геометрии.
Обратите внимание на длинное переплетение в этом узле.
Вот что мы получаем в Dynamo.
У нас для вас хорошая новость. Самое сложное позади! Все, что осталось сделать, — создать тела между профилями. Это можно легко сделать с помощью узла Solid.ByLoft.
Результат можно посмотреть здесь. Помните, что это тела Dynamo, а значит, их все еще нужно создать в Civil 3D.
Последний шаг — вывод сгенерированных тел в пространство модели. Кроме того, мы присвоим им цвет, чтобы сделать их более заметными.
Ниже приведен пример запуска графика с помощью проигрывателя Dynamo.
Если вы еще не знакомы с проигрывателем Dynamo, см. раздел Проигрыватель Dynamo.
Вот несколько вариантов того, как можно расширить возможности этого графика.
Добавление возможности использования разных диапазонов пикетов отдельно для каждого пути.
Разбивка тел на более мелкие сегменты, которые можно проанализировать отдельно на предмет конфликтов.
Проверка того, не пересекаются ли тела границы с элементами, и выделение цветом тех, которые пересекаются.
Работа с точками COGO и группами точек в Civil 3D является ключевым элементом многих процессов, связанных с завершением обработки полевых данных. Dynamo отлично подходит для управления данными. В этом примере мы рассмотрим один из возможных примеров использования.
Работа со списками
Группировка схожих объектов с помощью узла List.GroupByKey
Отображение пользовательских выходных данных в проигрывателе Dynamo
Этот график будет работать в Civil 3D 2020 и более поздних версиях.
Сначала скачайте файлы примеров ниже, а затем откройте файл DWG и график Dynamo.
Ниже представлен обзор логики, используемой в этом графике.
Получение всех точек COGO в документе.
Группировка точек COGO по описанию.
Создание групп точек.
Вывод сводных данных в проигрывателе Dynamo.
Приступим!
Сначала необходимо получить все группы точек в документе, а затем все точки COGO в каждой группе. В результате мы получим вложенный список, или список списков. Если мы выровняем все элементы в один список с помощью узла List.Flatten, это упростит дальнейшую работу.
Теперь, когда мы получили все точки COGO, необходимо разделить их на группы на основе их описаний. С этой задаче блестяще справится узел List.GroupByKey. По сути, он группирует все элементы с одинаковым ключом.
Самое сложное позади. Последний шаг — создание новой группы точек Civil 3D на основе сгруппированных точек COGO.
При запуске графика в области фонового просмотра Dynamo не отображается ничего, поскольку у нас нет никакой геометрии. Так что единственный способ убедиться, что график выполняется правильно, — проверить область инструментов или выполнить предварительный просмотр выходных данных узла. Однако если запустить график с помощью проигрывателя Dynamo, можно получить дополнительную информацию о результатах за счет вывода сводки по созданным группам точек. Для этого щелкнем узел правой кнопкой мыши и установим для него значение Является выводом. В данном случае для просмотра результатов используется переименованный узел Watch.
Ниже приведен пример запуска графика с помощью проигрывателя Dynamo.
Вот несколько вариантов того, как можно расширить возможности этого графика.
Изменение принципа группировки точек, чтобы она выполнялась по полному описанию, а не по исходному.
Группировка точек по другим готовым категориям (например, «Базовые снимки», «Геодезические знаки» и т. д.).
Автоматическое создание поверхностей TIN для точек в определенных группах.
При добавлении труб и колодцев в трубопроводную сеть Civil 3D назначение имен выполняется автоматически по шаблону. Обычно этого достаточно при первом размещении, однако в будущем по мере развития проекта эти имена потребуется изменить. Кроме того, существует множество разных шаблонов именования, таких как последовательное именование колодцев на участке трубопровода, начиная с самого дальнего, или именование в соответствии со схемой данных, принятой местными надзорными органами. В этом примере показано, как с помощью Dynamo можно определить стратегию именования и придерживаться ее.
Работа с ограничивающими рамками
Фильтрация данных с помощью узла List.FilterByBoolMask
Сортировка данных с помощью узла List.SortByKey
Создание и изменение текстовых строк
Этот график будет работать в Civil 3D 2020 и более поздних версиях.
Сначала скачайте файлы примеров ниже, а затем откройте файл DWG и график Dynamo.
Ниже представлен обзор логики, используемой в этом графике.
Выбор колодцев по слою.
Получение местоположений колодцев.
Фильтрация колодцев по смещению с последующей сортировкой по пикетам.
Создание новых имен.
Переименование колодцев.
Приступим!
Сначала необходимо выбрать все колодцы, с которыми мы планируем работать. Для этого просто выберем все объекты на определенном слое. Это означает, что мы сможем выбрать колодцы из разных трубопроводных сетей (при условии, что они находятся на одном слое).
Этот узел позволяет избежать случайного извлечения нежелательных типов объектов, которые могут находиться на том же слое, что и колодцы.
Теперь, когда мы выбрали все колодцы, нужно определить их положение в пространстве, чтобы рассортировать их по местоположению. Для этого воспользуемся ограничивающей рамкой каждого объекта. Ограничивающая рамка объекта — это рамка минимального размера, которая полностью включает геометрические границы этого объекта. Вычислив центр ограничивающей рамки, мы получим приближенное значение точки вставки колодца.
Мы используем эти точки для получения пикетов и смещений колодцев относительно выбранной трассы.
Здесь начинаются сложности. На данный момент у нас есть большой список всех колодцев на слое, который мы указали, и мы также выбрали трассу, вдоль которой их требуется отсортировать. Проблема в том, что в списке могут быть колодцы, которые не нужно переименовывать. Например, такие колодцы могут не принадлежать к интересующей нас ветви.
Выбранная трасса.
Колодцы, которые требуется переименовать.
Колодцы, которые следует игнорировать.
Нужно отфильтровать список колодцев, чтобы проигнорировать те из них, чье смещение от трассы превышает определенное значение. Для этого лучше всего подойдет узел List.FilterByBoolMask. Отфильтровав список колодцев, используем узел List.SortByKey для их сортировки по значениям пикетов.
Проверка значения смещения колодца относительно порогового значения.
Замена всех нулевых значений на false.
Фильтрация списка колодцев и пикетов.
Сортировка колодцев по пикетам.
Последний шаг — создание новых имен для колодцев. Мы используем следующий формат: <alignment name>-STRC-<number>
. Здесь есть несколько дополнительных узлов, которые при необходимости добавляют дополнительные нули (например, 01 вместо 1).
Наконец, мы может переименовать колодцы.
Ниже приведен пример запуска графика с помощью проигрывателя Dynamo.
Вместо того чтобы сразу переходить к итоговому результату, можно использовать фоновый просмотр 3D в Dynamo для визуализации промежуточных результатов графика. Например, можно с легкостью отобразить ограничивающие рамки колодцев. Кроме того, в документе этого набора данных есть коридор, так что мы можем добавить геометрию характерных линий коридора в Dynamo, чтобы создать контекст для размещения колодцев в пространстве. Если применить этот график к набору данных, в котором нет коридоров, эти узлы просто не будут выполнять никаких действий.
Теперь мы можем наглядно увидеть, как работает процесс фильтрации колодцев по смещениям.
Вот несколько вариантов того, как можно расширить возможности этого графика.
Переименование колодцев на основе ближайшей трассы вместо выбора конкретной трассы.
Переименование труб в дополнение к переименованию колодцев.
Задание слоев для колодцев на основе их ветвей.
Использование блока профиля транспортного средства для создания 3D-тел, определяющих границы зазора, вдоль коридора.
Миссия выполнена!
Создание группы точек для каждого уникального описания точки COGO.
Если вы еще не знакомы со списками, см. раздел .
Если вы еще не знакомы с проигрывателем Dynamo, см. раздел .
Миссия выполнена!
Переименование колодцев трубопроводной сети в порядке, соответствующем пикетажу трассы.
Если вы еще не знакомы со списками, см. раздел .
Если вы еще не знакомы с проигрывателем Dynamo, см. раздел .
Миссия выполнена!
Один из многих примеров эффективного применения Dynamo — динамическое размещение отдельных объектов вдоль модели коридора. Часто объекты требуется размещать в местах, не зависящих от вставленных сборок вдоль коридора. Если эту задачу выполнять вручную, она может быть очень утомительной. Кроме того, много приходится переделывать при изменении горизонтальной или вертикальной геометрии коридора.
Чтение данных из внешнего файла (в данном случае Excel)
Организация данных в словарях
Использование систем координат для управления положением, масштабом и поворотом
Размещение вхождений блоков
Визуализация геометрии в Dynamo
Этот график будет работать в Civil 3D 2020 и более поздних версиях.
Сначала скачайте файлы примеров ниже, а затем откройте файл DWG и график Dynamo.
Рекомендуем сохранить файл Excel в одной папке с графиком Dynamo.
Ниже представлен обзор логики, используемой в этом графике.
Чтение файла Excel и импорт данных в Dynamo.
Получение характерных линий из заданной базовой линии коридора.
Создание систем координат вдоль характерной линии коридора на требуемых пикетах.
Использование систем координат для размещения вхождений блоков в пространстве модели.
Приступим!
При работе с этим примером графика мы используем файл Excel для хранения данных, на основе которых Dynamo будет размещать вхождения блоков осветительных столбов. Вот как выглядит наша таблица.
Использование Dynamo для чтения данных из внешнего файла (например, файла Excel) — это отличная стратегия, особенно если эти данные необходимо предоставить другим участникам группы.
Данные Excel импортируются в Dynamo следующим образом.
Теперь, когда мы получили данные, нужно разделить их по столбцам — Corridor, Baseline, PointCode и т. д., — чтобы их можно было использовать в оставшейся части графика. Обычно для этого используется узел List.GetItemAtIndex и указывается порядковый номер каждого нужного столбца. Например, номер столбца Corridor — 0, столбца Baseline — 1 и т. д.
Пока все вроде бы в порядке. Однако при использовании такого подхода может возникнуть проблема. Что будет, если порядок столбцов в файле Excel впоследствии изменится? Или если между двумя столбцами будет вставлен третий? График перестанет работать должным образом, и его нужно будет изменить. Чтобы избежать этого, поместим данные в словарь, записав заголовки столбцов Excel в качестве ключей (keys), а остальные данные в качестве значений (values).
Если вы еще не знакомы со словарями, см. раздел Словари в Dynamo.
При таком подходе график будет более устойчивым, поскольку он сможет адаптироваться к изменению порядка столбцов в Excel. При условии что заголовки столбцов останутся неизменными, данные можно будет просто извлечь из словаря по ключу (заголовку столбца). Именно это мы и сделаем.
Итак, данные Excel импортированы и готовы к использованию. Начнем работать с ними, чтобы получить информацию о моделях коридоров из Civil 3D.
Выбор модели коридора по имени.
Получение нужной базовой линии в коридоре.
Получение характерной линии в пределах базовой линии по коду точки.
Теперь создадим системы координат вдоль характерных линий коридора на пикетах, значения которых заданы в файле Excel. Эти системы координат будут определять положение, поворот и масштаб вхождений блока осветительного столба.
Если вы еще не знакомы с системами координат, см. раздел Вектор, плоскость и система координат.
Обратите внимание, что мы используем Code Block для поворота систем координат в зависимости от того, на какой стороне базовой линии они находятся. Добиться этого можно также с помощью последовательности из нескольких узлов, но в данном случае проще взять и написать код.
Если вы еще не знакомы с элементами Code Block, см. раздел Узлы Code Block и DesignScript.
Мы на финишной прямой. У нас есть вся необходимая информация для размещения вхождений блоков. Сначала необходимо получить нужные определения блоков из столбца BlockName в файле Excel.
Теперь все, что осталось сделать, — это создать вхождения блоков.
При запуске графика в пространстве модели вдоль коридора должны отобразиться новые вхождения блоков. И вот что здорово: если выбран автоматический режим выполнения графика, то при внесении изменений в файл Excel вхождения блоков обновляются автоматически.
Для получения подробностей о режимах выполнения графиков см. раздел Пользовательский интерфейс.
Ниже приведен пример запуска графика с помощью проигрывателя Dynamo.
Если вы еще не знакомы с проигрывателем Dynamo, см. раздел Проигрыватель Dynamo.
Иногда может быть полезно визуализировать геометрию коридора в Dynamo для получения контекста. В этой модели тела коридора уже извлечены в пространство модели, поэтому перенесем их в Dynamo.
Однако нужно учесть еще кое-что. Тела относятся к довольно «тяжелому» типу геометрии. Это значит, что данная операция замедлит работу графика. Здесь нам бы пригодился механизм, позволяющий выбрать, должны тела отображаться или нет. Очевидное решение — просто отключить узел Corridor.GetSolids. Однако это приведет к отображению предупреждений для всех последующих узлов, что сделает просмотр неудобным. В данной ситуации идеальным решением будет узел ScopeIf.
Обратите внимание на серую полосу в нижней части узла Object.Geometry. Она означает, что предварительный просмотр узла отключен (его можно вызвать, щелкнув узел правой кнопкой мыши). Это позволяет узлу GeometryColor.ByGeometryColor избежать «конкуренции» с другой геометрией за приоритет отображения в фоновом просмотре.
По сути, узел ScopeIf позволяет выборочно запускать целую ветвь узлов. Если входной порт test получает значение false, то все узлы, подключенные к узлу ScopeIf, при запуске выполняться не будут.
Так выглядит результат в фоновом просмотре Dynamo.
Вот несколько вариантов того, как можно расширить возможности этого графика.
Добавление столбца rotation в файл Excel и его использование для поворота систем координат.
Добавление значений смещения по горизонтали или по вертикали в файл Excel, чтобы при необходимости осветительные столбы могли отклоняться от характерной линии коридора.
Создание значений пикетов непосредственно в Dynamo (вместо использования файла Excel со значениями пикетов) на основе начального пикета и типового интервала.
Разработка проекта стандартного жилого здания подразумевает работу с определенными подземными коммуникациями, такими как канализация, ливневая канализация, водопровод и т. п. В этом примере демонстрируется использование Dynamo для подключения того или иного участка застройки к распределительной магистрали. Обычно подключение к магистрали требуется на каждом участке, и потому размещение всех коммуникаций отнимает много времени. Dynamo позволяет ускорить этот процесс за счет автоматического создания точных геометрических объектов, а также гибкого ввода данных с возможностью настройки в соответствии со стандартами местных надзорных органов.
Использование узла Select Object для ввода данных пользователем
Работа с системами координат
Использование геометрических операций, таких как Geometry.DistanceTo и Geometry.ClosestPointTo
Создание вхождений блоков
Управление параметрами привязки объектов
Этот график будет работать в Civil 3D 2020 и более поздних версиях.
Сначала скачайте файлы примеров ниже, а затем откройте файл DWG и график Dynamo.
Ниже представлен обзор логики, используемой в этом графике.
Получение геометрии кривой для распределительной магистрали.
Получение геометрии кривой для выбранной пользователем линии участка (при необходимости с обращением ее направления).
Создание точек вставки для счетчиков
Получение точек на распределительной магистрали, ближайших к местоположениям счетчиков
Создание вхождений блоков и линий в пространстве модели
Приступим!
Сначала необходимо добавить геометрию для распределительной магистрали в Dynamo. Вместо того чтобы выбирать отдельные линии или полилинии, мы извлечем все объекты на определенном слое и объединим их в сложную кривую Dynamo.
Если вы еще не знакомы с кривыми Dynamo, см. раздел Кривые.
Теперь необходимо перенести геометрию выбранной линии участка в Dynamo, чтобы с ней можно было работать. Для этого нам понадобится узел Select Object, с помощью которого пользователь график может выбрать определенный объект в Civil 3D.
Нам также необходимо решить одну потенциальную проблему. Линия участка имеет начальную и конечную точки, а это значит, что у нее есть направление. Чтобы график давал последовательные результаты, все линии участка должны иметь одинаковое направление. Это условие можно задать непосредственно в логике графика, что сделает наш график более стабильным.
Получаем начальную и конечную точки линии участка.
Измеряем расстояние от каждой точки до распределительной магистрали, а затем определяем, какое расстояние больше.
Нужно, чтобы начальная точка линии находилась ближе к распределительной магистрали. Если это не так, требуется обратить направление линии участка. Если все правильно, то мы просто возвращаем исходную линию участка.
Теперь нужно решить, где будут размещены счетчики. Обычно их расположение определяется местными органами власти, поэтому мы просто укажем входные значения, которые можно изменить в соответствии с теми или иными условиями. В качестве основы для создания точек используем систему координат, расположенную вдоль линии участка. Это позволит с легкостью определить смещения относительно линии участка независимо от ее ориентации.
Если вы еще не знакомы с системами координат, см. раздел Вектор, плоскость и система координат.
Теперь нужно получить точки на распределительной магистрали, которые находятся ближе всего к счетчикам. Это позволит нам нарисовать линии подключения в пространстве модели так, чтобы они всегда были перпендикулярны к распределительной магистрали. Для этого идеально подойдет узел Geometry.ClosestPointTo.
Сложная кривая распределительной магистрали.
Точки вставки счетчиков.
Наконец, последний шаг — создание объектов в пространстве модели. Сначала мы используем созданные ранее точки вставки для создания вхождений блоков, а затем — точки на распределительной магистрали для построения линий подключения коммуникаций.
При запуске графика в пространстве модели должны отображаться новые вхождения блоков и линии подключения коммуникаций. Попробуйте изменить входные данные, чтобы увидеть, как программа автоматически обновит результаты.
Вы могли заметить, что после размещения объектов для одной линии участка эти объекты «перемещаются» при выборе другой линии участка.
Это стандартное поведение Dynamo, которое является желанным и полезным во многих случаях. Однако иногда может потребоваться разместить несколько последовательных подключений к коммуникациям так, чтобы программа Dynamo создавала при каждом запуске сценария новые объекты, а не изменяла исходные. Этим поведением можно управлять, изменив параметры привязки объекта.
Дополнительные сведения см. в разделе Привязка объекта.
Изменив этот параметр, мы заставляем программу Dynamo «забывать» объекты, создаваемые при каждом запуске графика. Ниже приведен пример запуска графика с отключенной привязкой объектов в проигрывателе Dynamo.
Если вы еще не знакомы с проигрывателем Dynamo, см. раздел Проигрыватель Dynamo.
Вот несколько вариантов того, как можно расширить возможности этого графика.
Размещение нескольких подключений к коммуникациям одновременно вместо выбора каждой линии участка по отдельности.
Изменение входных данных, чтобы вместо водопроводных счетчиков были размещены прочистные люки канализации.
Добавление переключателя, позволяющего разместить подключение к коммуникациям на конкретной стороне линии участка, а не на обеих ее сторонах.
Автомобильные и железные дороги, землеустройство, инженерные сети, топосъемка, ГИС...
Работа с объектами инфраструктуры включает в себя все это и многое другое. В этом разделе приведено несколько реалистичных и актуальных примеров графиков, которые помогут вам достичь высокого уровня владения Dynamo и раскрыть весь потенциал Dynamo for Civil 3D. Каждый график сопровожден подробным описанием логики, которая применялась при его создании, благодаря чему вы сможете не только использовать его, но и понять, зачем нужен каждый из его компонентов.
Кроме того, эти примеры основаны на проверенных временем передовых рекомендациях по построению эффективных графиков. При работе с примерами рекомендуется также ознакомиться с разделом Практические советы, в котором можно найти дополнительные идеи по созданию мощных, гибких и простых в сопровождении графиков.
Размещение вхождений блока осветительных столбов вдоль коридора со значениями пикетов, заданными в файле Excel.
Миссия выполнена!
Размещение вхождений блоков водомера на заданном смещении от линии участка и нанесение линии для каждого подключения перпендикулярно к распределительной магистрали.
Миссия выполнена!