Для новичков несколько пояснений по библиотекам в шаблоне.
# Подключение библиотеки Revit API для работы с элементами Revit'a
clr.AddReference('RevitAPI') # RevitAPI.dll лежит как правило здесь C:\Program Files\Autodesk\Revit 2017
import Autodesk
from Autodesk.Revit.DB import * # импорт всех элементов, если к примеру нужны только стены, то * заменяется на Wall
import sys
pyt_path = r'C:\Program Files (x86)\IronPython 2.7\Lib' # добавление пути к директории IronPython для использования его библиотек
sys.path.append(pyt_path)
# Использование библиотеки ProtoGeometry для геометрических фигур (точки, линии, окружности, дуги, кривые и пр.)
clr.AddReference('ProtoGeometry') # ProtoGeometry.dll лежит здесь C:\Program Files\Dynamo\Dynamo Core\1.3
from Autodesk.DesignScript.Geometry import *
# Использование библиотеки DSCoreNodes (основные ноды расположенные на вкладке библиотеки слева в разделе Core)
clr.AddReference("DSCoreNodes") # DSCoreNodes.dll лежит здесь C:\Program Files\Dynamo\Dynamo Core\1.3
import DSCore
clr.ImportExtensions(DSCore)
from DSCore import *
# Упрощенные ноды для работы с объектами Revit
clr.AddReference("RevitNodes") # RevitNodes.dll лежит здесь C:\Program Files\Dynamo\Dynamo Revit\1.3\Revit_2017
import Revit
clr.ImportExtensions(Revit.Elements)
from Revit.Elements import *
clr.ImportExtensions(Revit.GeometryConversion) # позволяет конвертировать величины
clr.ImportExtensions(Revit.GeometryReferences)
# Для использования транзакций и работе с документом (doc)
clr.AddReference("RevitServices") # RevitServices.dll лежит здесь C:\Program Files\Dynamo\Dynamo Revit\1.3\Revit_2017
import RevitServices
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager
doc = DocumentManager.Instance.CurrentDBDocument
uidoc=DocumentManager.Instance.CurrentUIApplication.ActiveUIDocument
uiapp=DocumentManager.Instance.CurrentUIApplication
app = uiapp.Application
# Для работы с Excel из питона (если вы не используете сторонние пакеты)
clr.AddReferenceByName('Microsoft.Office.Interop.Excel, Version=11.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c')
from Microsoft.Office.Interop import Excel
System.Threading.Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo("en-US")
from System.Runtime.InteropServices import Marshal
# в некоторых случаях, при "глубоком погружении" в Revit API, нужны системные массивы System Array
import System
from System import Array
from System.Collections.Generic import *
# Прочие библиотеки
import math # работа с математическими функциями (cos, sin, pi и пр.)
import random # генерация случайных чисел
import re # работа с регулярными выражениями
но лучше их записывать как:
from math import *
в этом случае не нужно будет таскать приставку math.pi, а можно сразу использовать pi
Для того чтобы не писать постоянно UnwrapElement() рекомендую использовать в шаблоне функцию:
Если вы не знаете сколько будете подавать на вход элементов 1 или несколько, то рекомендую использовать вот эту запись:
p.s. Вам не обязательно записывать все библиотеки в вашем скрипте, используйте только те, что вы используете для вашего скрипта.
Ниже состав некоторых часто используемых библиотек:
Protogeometry
DSCoreNodes
RevitNodes
Revit Nodes продолжение