I’m trying to create columns on a bunch of points such that the columns are associated with a level which is created in the same graph. I’m doing this in a python node inside Dynamo but am getting the error shown in the image. I’ve tried running the script in architectural, structural and construction templates with the families available (just to check if it was not working for specific families) but it doesn’t seem to work.
In the attached script, I’m trying to do this for a single point for now.
What I’m using: Revit 2023 with US English Content for Revit 2023 installed (adds extra families), OOTB nodes only.
I’m using a Python node to do this because I want to create a framed structure based on the number of levels input by the user, as the end product. So, I thought to create the columns in a script and do a for loop for repeating it in the other levels. I’m not sure if there’s an OOTB node that can act in place of a for loop.
Now, if supplying a reference level means passing a level in the arguments for the Create.NewFamilyInstance command, then yes I’m doing it.
from Autodesk.DesignScript.Geometry import *
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager
from Autodesk.Revit.DB import *
from Autodesk.Revit.DB.Structure import *
doc = DocumentManager.Instance.CurrentDBDocument
#Inputs to node
columns=FilteredElementCollector(doc).OfCategory(BuiltInCategory.OST_StructuralColumns).WhereElementIsElementType().ToElements()#get all column types
for column in columns:
#if column_name=="UC-Universal Columns-Column":
if column_type.IsActive == False:
point = points
mycolumn=doc.Create.NewFamilyInstance(XYZ(point.X, point.Y, point.Z), column_type, levels, Structure.StructuralType.Column)
OUT = mycolumn
I should’ve pasted the code in the question also to make it easier to see I guess.
I also added a Transaction.End node after creating the levels but I still get the error.
Another thread suggested connecting the output of the Transaction.End to a dummy input in the python node, so that it’s computed only after the levels are created. That didn’t work too.
Yes, I did try supplying the level along with adding a Transaction.End node. Now that the python script works with IronPython2, I think I’ll try going with it but I’ll look into using the OOTB nodes too after this.
Thanks a ton for your time @Daan .