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)