# Load the Python Standard and DesignScript Libraries import sys import clr # Add Assemblies for AutoCAD and Civil3D clr.AddReference('AcMgd') clr.AddReference('AcCoreMgd') clr.AddReference('AcDbMgd') clr.AddReference('AecBaseMgd') clr.AddReference('AecPropDataMgd') clr.AddReference('AeccDbMgd') # Import references from AutoCAD from Autodesk.AutoCAD.Runtime import * from Autodesk.AutoCAD.ApplicationServices import * from Autodesk.AutoCAD.EditorInput import * from Autodesk.AutoCAD.DatabaseServices import * from Autodesk.AutoCAD.Geometry import * # Import references from Civil3D from Autodesk.Civil.ApplicationServices import * from Autodesk.Civil.DatabaseServices import * # The inputs to this node will be stored as a list in the IN variables. AssemblyName = IN[0] out_offsetAssembly_list=[] out_offsetAssemblyID_list=[] out_offsetAssemblyGroup_list=[] out_offsetAssemblyGroupID_list=[] outlist=[] adoc = Application.DocumentManager.MdiActiveDocument editor = adoc.Editor with adoc.LockDocument(): with adoc.Database as db: with db.TransactionManager.StartTransaction() as t: try: _civilDoc = CivilApplication.ActiveDocument #bt = t.GetObject(db.BlockTableId, OpenMode.ForWrite) #btr = t.GetObject(bt[BlockTableRecord.ModelSpace], OpenMode.ForWrite) print("============ Assembly ===============") print(AssemblyName) assemblyIdColl = _civilDoc.AssemblyCollection[str(AssemblyName)] assemblyId = t.GetObject(assemblyIdColl, OpenMode.ForRead) # OffsetAssembly offsetAssemblies = assemblyId.OffsetAssemblies print("=== Get offsetAssemblies") for offsetAssembly in offsetAssemblies: print("offsetAssembly: "+ offsetAssembly.Name) out_offsetAssembly_list.append (offsetAssembly.Name) out_offsetAssembly_list.append (offsetAssembly) out_offsetAssembly_list.append (offsetAssembly.AssemblyId) for offsetAssemblyGroup in offsetAssembly.Groups: print("offsetAssemblyGroup: " + offsetAssemblyGroup.Name) print(dir(offsetAssemblyGroup)) out_offsetAssemblyGroup_list.append (offsetAssemblyGroup) out_offsetAssemblyGroup_list.append (offsetAssemblyGroup.Name) #out_offsetAssemblyGroupID_list.append (offsetAssemblyGroup.GetSubassemblyIds) # Commit before end transaction t.Commit() print('Completed') except: t.Dispose() print("The process failed") # Assign your output to the OUT variable. OUT = out_offsetAssembly_list,out_offsetAssemblyGroup_list #ssel = Autodesk.AutoCAD.DynamoNodes.SelectionByQuery.GetObjectByObjectHandle(str(oid.Handle)) #outlist.append (ssel) #for subassemblyid in offsetAssemblyGroup.GetSubassemblyIds(): # subassembly = t.GetObject(subassemblyid, OpenMode.ForRead) # print(subassembly.Name) # out_subassembly_list.append (subassembly)