Обучающие материалы NVP
14 августа 2024, 18:03
От автора @skoliozzm@gmail.com

Вступление

В данной статье речь пойдет о предлагаемых в SDK (набор инструментов для разработки ПО) обучающих скриптах. Здесь будут указаны их основные особенности и принцип работы.


1. Экспорт Revit - Excel

Скрипт, отражающий возможности работы NVP с внешними файлами. Скрипт позволяет собирать данные из Autodesk Revit по введенным категориям и параметрам элементов. Эти данные загружаются в выбранный Excel-файл.

Исходные данные вводятся через символ «;» в соответствующие текстовые ноды «Категории» и «Параметры». Дальше скрипт с помощью метода Split в ноде «Python» разделяет введенные данные, образуя списки. По полученному списку категорий скрипт автоматически выбирает из файла все соответствующие им элементы. После этого нод «Python» для каждого элемента запрашивает id и каждый параметр, образуя двухмерный массив. Этот массив и поступает в указанный Excel-файл с помощью нода «Запись массива в Excel».


2. Импорт Excel - Revit

Cкрипт, отражающий возможности работы NVP с внешними файлами. Скрипт позволяет вынимать данные из Excel-файла и присваивать их элементам в Autodesk Revit.

В начале работы скрипт запрашивает Excel-файл, из которого будут забираться данные. Данные поступают в виде списков, после чего из них разворачивается коллекция. Весь массив полученных данных с помощью нодов «Python» группируется на: значения id, заданные параметры и значения параметров. В конечном итоге нод «Python» отбирает элементы из Autodesk Revit по соответствующим id и всем из них присваивает соответствующие значения указанных параметров.


3. Водохранилище

Cкрипт отражающий возможности построения 3D элементов в NVP. Скрипт содержит стойку водонапорной башни, раскосы которой регулируются введенными значениями, и водохранилище, параметры которого также регулируются.

В начале работы скрипт создает точки низа и верха башни, задавая значения их координат с помощью математических нодов. После этого точки соединяются, а из образованных линий с помощью нода «Свойство по имени» скрипт получает вектора, по направлению которых будут построены раскосы башни. О раскосах: по направлению вектора для каждой стойки башни образуется два ряда точек: первый от низа башни до верха башни с заданным шагом, второй – такой же, но смещенный на длину шага вверх. Нод «Цикл Foreach» позволяет выполнить смещение для каждой точки. Из полученных рядов точек с помощью нода «Линии по точкам» попарно создаются линии, образующие раскосы. Само же водохранилище образуется построением на верху башни круга и его выдавливанием с помощью нода «Выдавливание».


4. Многоэтажное здание

Cкрипт отражающий возможности построения 3D элементов в NVP. Скрипт содержит модель многоэтажного здания, созданную из 3D элементов. Параметры здания могу регулироваться введенными значениями.

В начале работы скрипт создает четыре точки фасада здания, где координаты получены с помощью математических нодов. По полученным точкам образуется полигон с помощью нода «Полигон по точкам». Из этого профиля с помощью нода «Выдавливание» образуется основной объем здания. Далее по соотношению к размерам сектора здания создается по точкам профиль входной двери в середине здания. С этим полигоном также выполняется выдавливание. В этом же месте создается профиль окна также по соотношению к размерам сектора здания. Полигон с помощью нода «Смещение массивом» копируется по длине и высоте количество раз, заданное вводными данными. После чего со всеми профилями окон выполняется выдавливание.


5. Промышленное здание

Cкрипт, отражающий возможности работы NVP с созданными подскриптами. Скрипт содержит модель промышленного здания с регулируемыми параметрами, включающими выбор типа фермы и её характеристик. Для корректной работы файлы ферм должны быть загружены в папку по адресу C:\ProgramData\NVP\framework4.8\scripts или C:\ProgramData\NVP\net6.0\scripts.

В первую очередь скрипт создает начальную колонну из двух точек и линии. После этого рядом с колонной образуются точки следующей колонны. А координаты для нее были получены с помощью нода «Смещение элемента» и тригонометрических преобразований, чтобы задать угол поворота здания. После этого создается вторая колонна и соединяется раскосом с первой. На противоположную сторону здания эта конструкция копируется. Из верхней линии раскоса забирается вектор, по направлению которого будут построены остальные колонны и раскосы: колонны - простым «Смещением массивом», раскосы – им же, но количество и частота раскосов высчитываются с помощью математических нодов. Теперь устанавливается ферма – на верху первой колонны задаются сразу три, однако нод «RunBranch» позволяет запустить в работу только одну из трех ферм. После чего ферма копируется вдоль здания.


6. Ферма треугольная

Скрипт модели треугольной фермы с регулируемыми параметрами.

В начале работы скрипт задается базовыми точками фермы: двумя крайними, центральной нижней и центральной верхней. При этом координаты всех нижних точек, кроме первой, определяются с помощью тригонометрических преобразований. Итак, точки соединяются линиями. Из линий верхнего и нижнего поясов скрипт получает вектора. Далее математически определяются размеры и количество секторов. По полученным векторам с помощью нода «Точки» образуются ряды точек, при этом в верхнем поясе создается дополнительный ряд, смещенный к центру фермы. Из этих рядов точек с помощью нода «Линии по точкам» образуются стойки и раскосы фермы.


7. Ферма прямоугольная

Скрипт модели прямоугольной фермы с регулируемыми параметрами.

В начале работы скрипт математически определяет размер и количество секторов, а дальше строит его по точкам и линиям. После этого скрипт получает вектор по одной из линий сектора и копирует этот сектор по длине всей фермы.


8. Ферма с разной длиной поясов

Скрипт модели фермы с разной длиной поясов и другими регулируемыми параметрами.

В начале работы скрипт создает базовую точку фермы и точку в середине фермы. Координаты последней получаются из тригонометрических преобразований угла поворота фермы. После этого точки соединяются линией, и скрипт получает вектор по направлению фермы, а на верху фермы с помощью этого вектора образуются точки и линии верхнего пояса. Далее высчитываются размеры сектора. При этом скрипт учитывает, какой из поясов длиннее – верхний или нижний: на основе этого нод «RunBranch» и определяет конечный размер сектора. В конечном итоге строится сектор и копируется по длине фермы.


9. Квартирография

Скрипт для объединения площади помещений в программе Autodesk Revit.

Скрипт получает на вход помещения по категории «OST_Rooms», параметр для определения номера квартиры, параметр для определения площади комнаты и точность округления. На основе этих данных нод «Python» отбирает из Autodesk Revit все необходимые элементы и их параметры, после чего на их основе высчитывает конечную площадь.


10. Лахта

Скрипт для моделирования закрученной многоуровневой формы.

В начале работы скрипт получает большой объем вводных данных, на основе которых создает в первую очередь точки на разных уровнях здания. На основе этих точек образуются и поворачиваются фигуры, которые после этого поступают в список, на основе которого нод «Объединить фигуры» создает связи между всеми уровнями здания.


11. Выдавливание

Пример полнотелых форм, созданных с помощью инструмента «выдавливание».

На основе входных данных скрипт создает две точки, а относительно этих точек – две фигуры. И после поворота одной из фигур нодом «Повернуть элемент» скрипт создает на основе имеющихся профилей два полнотелых элемента с помощью нода «Выдавливание».


Заключение

Сегодня мы поговорили о том, какие возможности открываются перед пользователем NVP, узнали некоторые приемы, которые будут полезны при работе, и теперь мы надеемся, что эта статья пригодится вам в создании ваших первых скриптов!