
Dynamo Python to PyRevit
As I said before, the first thing I did was translate the Dynamo scripts into pyrevit. So here are main differences:
Here is a standart head of 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()
First we import main database to use commands we want:
# -*- coding: UTF-8 -*-
import clr
clr.AddReference('RevitAPI')
from Autodesk.Revit.DB import *
clr.AddReference('RevitAPIUI')
from Autodesk.Revit.UI import *
Then import transaction manager and define our Document(doc) and userinterface(uidoc):
clr.AddReference('RevitServices')
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager
doc = DocumentManager.Instance.CurrentDBDocument
uidoc = DocumentManager.Instance.CurrentUIApplication.ActiveUIDocument
Finaly, we open a transaction so the revit knows that we want to change something in the document, then write your script and close the transaction:
#open a transaction
TransactionManager.Instance.EnsureInTransaction(doc)
#Do stuff
TransactionManager.Instance.TransactionTaskDone()
You do not need to apply the transaction unless we make changes to the document (change parameters, geometry, etc.)
Now here is how we do in PyRevit:
# -*- coding: UTF-8 -*-
import Autodesk
from Autodesk.Revit.DB import *
from Autodesk.Revit.UI import *
doc = __revit__.ActiveUIDocument.Document
uidoc = __revit__.ActiveUIDocument
#open a transaction
t = Transaction(doc,'random name')
t.Start()
#do stuff
t.Commit()
I think you can figure it out for yourself now. It seems easier to me.
If you want, you can even use Dynamo DesignScript library
import clr
clr.AddReference('ProtoGeometry')
from Autodesk.DesignScript.Geometry import *
But i recomend to use Revit methodes instead
Post Comments(0)