Dynamo Python у PyRevit
Як я казав раніше, першим що зробив це перевів Dynamo скрипти у pyrevit. Отже ось основні відмінності:
Це стандартна шапка DYNAMO python
# -*- coding: UTF-8 -*-
import clr
clr.AddReference('RevitAPI')
from Autodesk.Revit.DB import *
clr.AddReference('RevitAPIUI')
from Autodesk.Revit.UI import *
clr.AddReference('RevitServices')
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager
doc = DocumentManager.Instance.CurrentDBDocument
uidoc = DocumentManager.Instance.CurrentUIApplication.ActiveUIDocument
#open a transaction
TransactionManager.Instance.EnsureInTransaction(doc)
#Do stuff
TransactionManager.Instance.TransactionTaskDone()
Спершу необхідно імпортувати базу даних, шоб використовувати необхідні команди:
# -*- coding: UTF-8 -*-
import clr
clr.AddReference('RevitAPI')
from Autodesk.Revit.DB import *
clr.AddReference('RevitAPIUI')
from Autodesk.Revit.UI import *
Далі імпортувати менеджер транзакцій і визначити наш документt(doc) та інтерфейс (uidoc):
clr.AddReference('RevitServices')
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager
doc = DocumentManager.Instance.CurrentDBDocument
uidoc = DocumentManager.Instance.CurrentUIApplication.ActiveUIDocument
І наостанок відкриваємо транзацію, щоб ревіт розумів, шо ми хочемо внести зміни в документ, пишемо скрипт та закриваємо транзакцію:
#Відкриваємо транзакцію
TransactionManager.Instance.EnsureInTransaction(doc)
#Щось робимо
TransactionManager.Instance.TransactionTaskDone()
Транзакцію не потрібно застосовувати, якщо ми не вносимо зміни у документ(зміна параметрів, геометрії тощо)
Ось як ми виконуємо те саме в PyRevit:
# -*- coding: UTF-8 -*-
import Autodesk
from Autodesk.Revit.DB import *
from Autodesk.Revit.UI import *
doc = __revit__.ActiveUIDocument.Document
uidoc = __revit__.ActiveUIDocument
#Відкриваємо транзакцію
t = Transaction(doc,'random name')
t.Start()
#Щось робимо
t.Commit()
Думаю, ви й самостійно здагадаєтеся де що. Як на мене, це навіть простіше.
Якщо бажаєте, можна навіть використовувати Dynamo DesignScript бібліотеку
import clr
clr.AddReference('ProtoGeometry')
from Autodesk.DesignScript.Geometry import *
Але я рекомендую використовувати лише Revit методи.
Коментарії(0)