Hi @marc.savoieTRPRP,
The original Python script iterate over a list of names and you’re not feeding a list but a singleton and it explains why the script fails.
You can add a conditional check in the python script to be sure to iterate over a list.
Another small improvement is to output the list of created subcategories.
And then the code becomes :
import clr
clr.AddReference('ProtoGeometry')
from Autodesk.DesignScript.Geometry import *
# Import Element wrapper extension methods
clr.AddReference('RevitNodes')
import Revit
clr.ImportExtensions(Revit.Elements)
# Import geometry conversion extension methods
clr.ImportExtensions(Revit.GeometryConversion)
# Import DocumentManager and TransactionManager
clr.AddReference('RevitServices')
import RevitServices
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager
doc = DocumentManager.Instance.CurrentDBDocument
uiapp = DocumentManager.Instance.CurrentUIApplication
app = uiapp.Application
uidoc=DocumentManager.Instance.CurrentUIApplication.ActiveUIDocument
# Import RevitAPI
clr.AddReference('RevitAPI')
import Autodesk
from Autodesk.Revit.DB import *
newsubs=IN[0]
if not hasattr(newsubs, '__iter__'):
newsubs = [newsubs]
fam_subcats=[]
TransactionManager.Instance.EnsureInTransaction(doc)
for newsub in newsubs:
#create new sucategory
fam_subcat = doc.Settings.Categories.NewSubcategory(doc.OwnerFamily.FamilyCategory, newsub)
fam_subcats.append(fam_subcat)
TransactionManager.Instance.TransactionTaskDone()
OUT=fam_subcats
P.S : Clockwork package already has a node for that.