Разработка проекта стандартного жилого здания подразумевает работу с определенными подземными коммуникациями, такими как канализация, ливневая канализация, водопровод и т. п. В этом примере демонстрируется использование 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.
Вот несколько вариантов того, как можно расширить возможности этого графика.
Размещение нескольких подключений к коммуникациям одновременно вместо выбора каждой линии участка по отдельности.
Изменение входных данных, чтобы вместо водопроводных счетчиков были размещены прочистные люки канализации.
Добавление переключателя, позволяющего разместить подключение к коммуникациям на конкретной стороне линии участка, а не на обеих ее сторонах.
Размещение вхождений блоков водомера на заданном смещении от линии участка и нанесение линии для каждого подключения перпендикулярно к распределительной магистрали.
Миссия выполнена!