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)