How to create model groups with Python

I am trying to create model groups with doc.Create.NewGroup() but i cant get it to work. What am i doing wrong?

Some background:
I am building a dynamo script to edit Model groups. It works fine, by ungroup->edit->regroup.
But to get nested groups to work i need a recursive function for grouping and ungrouping. Thats why i am struggling with creating groups in python.

@staffan.gustafssonTY ,

check out this node!


KR
Andreas

Thanks, from what package is that?

@staffan.gustafssonTY ,
grafik

Have you looked at the error? I’m guessing it’s something about invalid inputs since NewGroup() requires an ICollection.

A Collection is not the same a a list, but it’s super easy to convert to one.
myCollection = List[ElementId](elem)

4 Likes

@Nick_Boyts ,

is this the right way… or can i simplify it?

import System
import sys
import clr

clr.AddReference('RevitAPI')
from Autodesk.Revit.DB import *
from Autodesk.Revit.DB.Structure import *

clr.AddReference('RevitAPIUI')
from Autodesk.Revit.UI import *

clr.AddReference('System')
from System.Collections.Generic import List

clr.AddReference('RevitNodes')
import Revit
clr.ImportExtensions(Revit.GeometryConversion)
clr.ImportExtensions(Revit.Elements)

clr.AddReference('RevitServices')
import RevitServices
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager

doc = DocumentManager.Instance.CurrentDBDocument
uidoc=DocumentManager.Instance.CurrentUIApplication.ActiveUIDocument

#Preparing input from dynamo to revit
elements = UnwrapElement(IN[0])

myCollection = List[ElementId]()


#Do some action in a Transaction
TransactionManager.Instance.EnsureInTransaction(doc)

for i in elements:
	myCollection.Add(i.Id)
	
grouping = doc.Create.NewGroup(myCollection)

TransactionManager.Instance.TransactionTaskDone()

OUT = grouping

3 Likes

Yup, that’s about it. If you already have a list of Ids you can feed that directly to the collection creation but otherwise you would iterate through to get the Id like you did.

2 Likes

Yes, that did the trick! Thank you, i was not aware of ICollections.

1 Like

Thanks for helping out with the solution. Works perfectly :slight_smile:

1 Like