Dynamo+Python.Revit API или «Что вообще с этим делать»
Настоятельно рекомендую перед начало прочесть «Dynamo +Python Введение»
Чтобы начать работу с Python Script нам первым делом нужно подключить библиотеки ревита
Вставляем вот этот блок в первые строчки.
import clr clr.AddReference("RevitNodes") import Revit clr.ImportExtensions(Revit.Elements) clr.AddReference("RevitServices") import RevitServices from RevitServices.Persistence import DocumentManager from RevitServices.Transactions import TransactionManager doc = DocumentManager.Instance.CurrentDBDocument uidoc = DocumentManager.Instance.CurrentUIDocument clr.ImportExtensions(Revit.GeometryConversion) clr.AddReference("RevitAPI") import Autodesk from Autodesk.Revit.DB import *
на данном этапе разбирать подробности подгрузки библиотек не будем, по тому что на ранних этапах можно пользоваться шаблоном и не задумываться , где, что, и откуда берется.
После чего читаем 17 строку. rooms=UnwrapElement(IN[0]) эта конструкция позволяет Python распознать входящие элементы и после применять методы из Revit API Docs к объектам
19 строка- rooms_names=[] тут мы объявляем пустой список с именами.
22 строка for N in rooms: - запускаем цикл и помещаем каждое помещение из списка в переменную i
и вот тут начинается самое интересное.
param_name=N.LookupParameter("Имя").AsString()
вот эта часть «.LookupParameter("Имя").AsString()» это методы из Revit API Docs
ну и ссылка откуда растут ноги- https://www.revitapidocs.com/
Что это такое и с чем ее едят- Это методы взаимодействия Revit созданными разработчиками.
Сейчас меня раскритикуют за терминологию, но мы тут не программисты собрались а Архитекторы, Инженеры, BIM Менеджеры, по этому будем говорить на человеческом
.LookupParameter("Имя") – Это метод изъятия параметра из объекта
и ссылка где это лежит у разработчика https://www.revitapidocs.com/2019/4400b9f8-3787-0947-5113-2522ff5e5de2.htm
.AsString() – это метод в каком формате мы хотим его взять. (как строку, как число итд)
А теперь давайте разберемся что тут происходит, в переменной N у нас лежит помещение,
Далее мы вытаскиваем из этого помещения параметр с названием «Имя», но нам нужен не сам параметр, а его значение по этому мы тут же добавляем что нам этот параметр нужен .AsString()
В буквальном переводе, как строку.
И то что вернут эти два последовательных метода, запишется в переменную param_name
Далее rooms_names.append(param_name)
В список rooms_names c помощью метода .append() мы добавляем переменную param_name в которой у нас имя этого помещения.
Но так как мы делаем это всё цикле for всё это будет повторятся для каждого помещения в списке rooms
Когда цикл for завершится в списке rooms_names будет список всех имен, которые мы назначили в OUT.