Ранее мы упомянули, что узлы являются основными компоновочными блоками графика Dynamo. Узлы хранятся в библиотеке, где они сгруппированы по логическим признакам. В Dynamo for Civil 3D в библиотеке есть две категории (или полки), содержащие специальные узлы для работы с объектами AutoCAD и Civil 3D, такими как трассы, профили, коридоры, вхождения блоков и т. д. Прочие разделы библиотеки содержат универсальные узлы, одинаковые во всех версиях Dynamo (например, в Dynamo для Revit, Dynamo Sandbox и т. д.).
Подробные сведения об организации узлов в корневой библиотеке Dynamo см. в разделе Библиотека.
Специальные узлы для работы с объектами AutoCAD и Civil 3D
Узлы общего назначения
Узлы из пакетов сторонних разработчиков, которые можно установить отдельно
График Dynamo, в котором используются узлы из разделов AutoCAD и Civil 3D библиотеки, будет работать только в Dynamo for Civil 3D. Если открыть такой график Dynamo for Civil 3D в другой версии программы (например, в Dynamo для Revit), эти узлы будут помечены предупреждением и не будут запускаться.
Зачем нужны отдельные полки для AutoCAD и Civil 3D
Такой подход позволяет отделить узлы для собственных объектов AutoCAD (линии, полилинии, вхождения блоков и т. д.) от узлов для объектов Civil 3D (трассы, коридоры, поверхности и т. д.). С технической точки зрения, AutoCAD и Civil 3D — это два разных инструмента. AutoCAD — это базовое приложение, а Civil 3D — приложение, созданное на его основе.
Для работы с узлами AutoCAD и Civil 3D важно иметь четкое представление об иерархии объектов на каждой полке. Помните таксономические ранги, которые проходят на уроках биологии? Согласно им, все организмы в природе делятся на царства, типы, классы, порядки, семейства, рода и виды. Объекты AutoCAD и Civil 3D классифицируются аналогичным образом. Рассмотрим несколько примеров.
Рассмотрим в качестве примера трассу.
Допустим, требуется изменить имя трассы. Для этого добавим к имеющемуся графику узел CivilObject.SetName.
Поначалу все это может показаться довольно сложным. Что это за CivilObject и почему в библиотеке нет узла Alignment.SetName? Все дело в стремлении к возможности многократного использования и простоте. Если подумать, процесс изменения имени объекта Civil 3D всегда одинаков, будь то трасса, коридор, профиль или любой другой объект. Поэтому, вместо того чтобы создавать несколько узлов (например, Alignment.SetName, Corridor.SetName, Profile.SetName и т. д.), по сути выполняющих одну и ту же работу, все эти функции были заложены в один узел. В нашем случае это узел CivilObject.SetName.
Кроме того, к этому вопросу можно подойти со стороны связей между объектами. И трасса, и коридор являются типами объектов Civil, так же как и картофель, и морковь являются типами овощей. Узлы Civil.Object можно применять к объектам любого типа, точно так же как одну и ту же овощечистку можно применять и для очистки картофеля, и для очистки моркови. Представьте, какой хаос царил бы на кухне, если бы для чистки каждого вида овощей или фруктов использовался отдельный инструмент. В этом смысле библиотека узлов Dynamo похожа на кухню.
Идем дальше. Предположим, требуется изменить слой трассы. Для этого нам понадобится узел Object.SetLayer.
Почему он называется не CivilObject.SetLayer? Причина все та же: принципы простоты и возможности повторного использования, которые мы обсуждали ранее. Свойство layer есть у любого объекта AutoCAD, который можно нарисовать или вставить, например у линии, полилинии, текста, вхождения блока и т. д. Такие объекты Civil 3D, как трассы и коридоры, относятся к той же категории, поэтому любой узел, который применяется к категории Object, можно также использовать с любым объектом Civil.