Hello.
I am new to Python.
I am trying to follow Jeremy Graham’s tutorial.
I am trying to do the exercise where he places instances of a Revit family directly from the API.
My code is identical to his but for some reason I get this error: “Warning: IronPythonEvaluator.EvaluateIronPythonScript operation failed.
Traceback (most recent call last):
File “”, line 25, in
Exception: The symbol is not active.
Parameter name: symbol”
Please see attached the Python script.
Note that I am using Revit 2019. Could it be am issue with the new version?
Error says that your family symbol is not active in the current document. You can solve this by 2 methods. Here is the process in action:
and the script here:
import clr
clr.AddReference('RevitAPI')
from Autodesk.Revit.DB import *
import Revit
clr.ImportExtensions(Revit.Elements)
clr.ImportExtensions(Revit.GeometryConversion)
import RevitServices
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager
from Autodesk.Revit.DB.Structure import *
doc = DocumentManager.Instance.CurrentDBDocument
famtype = UnwrapElement(IN[0])
elementlist = list()
TransactionManager.Instance.EnsureInTransaction(doc)
# To Make sure the familysymbol is active
if famtype.IsActive == False:
famtype.Activate()
doc.Regenerate()
for i in range(0,100,10):
newobj = doc.Create.NewFamilyInstance(XYZ(i,0,0),famtype,StructuralType.NonStructural)
elementlist.append(newobj)
TransactionManager.Instance.TransactionTaskDone()
OUT = elementlist
Thank you for posting this.
I was also going through the tutorial and it was not working either.
@Kulkul’s script, however, did not work for me as is. It works, though, if I only add the the snippet of code that activates the familytype. For some reason I cannot understand my Python node was disliking the new loaded modules.
my full script below.
# Enable Python support and load DesignScript library
import clr
clr.AddReference('ProtoGeometry')
from Autodesk.DesignScript.Geometry import *
#Import Revit API
clr.AddReference('RevitAPI')
from Autodesk.Revit.DB import *
#Import Manager Classes
clr.AddReference('RevitServices')
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager
# The inputs to this node will be stored as a list in the IN variables.
familytype = UnwrapElement(IN[0])
output = []
# Place your code below this line
#Assign Document
doc = DocumentManager.Instance.CurrentDBDocument
#Start Transaction
TransactionManager.Instance.EnsureInTransaction(doc)
if familytype.IsActive == False:
familytype.Activate()
doc.Regenerate()
for x in range(0,100,10):
fam = doc.Create.NewFamilyInstance(XYZ(x, 0, 0), familytype, Structure.StructuralType.NonStructural)
output.append(fam)
#End Transaction
TransactionManager.Instance.TransactionTaskDone()
# Assign your output to the OUT variable.
OUT = output
hello it is strange but I get warning telling me there is no Active function available in Revit 2021, am I right? or do I need to create a loop for each item in the list to make it work?
Warning: IronPythonEvaluator.EvaluateIronPythonScript operation failed.
Traceback (most recent call last):
File "<string>", line 430, in <module>
AttributeError: 'list' object has no attribute 'IsActive'
In my case famtype is a list of family types, not a single family type input
I modified that bit of code like that, it worked:
for famt in famtype:
if famt.IsActive == False:
famt.Activate()
doc.Regenerate()