Subset SSM Modification

I’m developing a Dynamo graph that will read and modify our Sheetset. We are using the AMR sheetset nodes for this graph but it’s not accessing drawings below the second level. The drawing circled in the attached photo doesn’t get read or written when executing the graph. We are using SheetSet.Subsets but that only allows access to the first level. Is there a way to reach all levels of the sheet set?

Not sure what the AMR Sheetset nodes are. But what are you trying to accomplish with the script?

AMR Sheetset is a package for managing sheet sets in Civil 3D where often 100’s if not 1000’s of individual DWG files have to be coordinated into a coherent collection for issuing the deliverables.

Yes, I am glad we have Revit for the buildings side of AEC, why do you ask?

There are two graphs that I’m working on, one that will read data from the sheet set manager and export to Excel, and the other will write data from Excel to the sheet set manager.

This will allow us to populate the data in the sheet set manager for the full sheet set and for individual sheets from Excel, rather than the manual task of populating each sheet. Our title block’s attributes are linked to the sheet set, so we can easily update our title block’s fields.

The issue I’m having is that the nodes I’m using don’t look lower than one level in the sheet set manager, so the drawing I have circled isn’t read from or written to.

The package is still missing a Subset.Subset node.

It’s on my list to get to but haven’t quite gotten there yet.

Thanks for the update @AdammReilly. Do you have a timeline when you want to get there, or is it just something you will get to later?

I’ve got several projects that are taking precedence over this right now. The main hold-up on new updates to this is that I want to really dig into finding a way to publish the package in such a way that all the civil 3d version builds could use the same package/version. Right now, once I build it for one C3D release, I can’t build and publish it for the prior release and I don’t like not being able to provide some backwards compatibility for the package.

Hey Adam! Quick question, how are people doing this now? I feel like this must have come up in the past and there’s a workaround people use?

Right now, I’m loading in the specific release of Autocad’s SSM API, then building a new dynamo package. when the package manager consumes it, I am versioning it to match the autocad version and stepping the minor version (ie, 2025.35) Because that major version is tied to the software version, the package data stores that version but because I went with doing it like that, the package manger won’t let me do an update to 2024.X because it sees the 2025.x as newer. So, once I do a 2026.x release, all the prior versions are unable to be updated.

Someone told me, at AU, there’s a new mechanism for multi version updates, or something like that, but I haven’t had the time to look into or for this yet.

Hello, thanks for the reply! So, how are people doing this now? Python? Any other nodes from other packages you can use? Just wondering what options there are and what others have done in the past to overcome this.

Subset.Subsets.dyf (10.2 KB) Take it for a snip

@qliebbe I only got around to testing you code out late last week. I’ve got about 6 levels of subsets, and I was able to access them all. Thanks!

@JBroad Glad it is working. Here are my final documents. I gave this to all 70 of my CAD users and no issues so far.

Sheet Data - Export to Excel.dyn (64.9 KB)

Subset.Subsets.dyf (10.2 KB)

SheetSet.GetAllSheets.dyf (10.3 KB)

Sheet Data - Import from Excel.dyn (67.4 KB)

I’m trying out your Subset.Subsets.dyf, but it only grabs the subsets of a subset. It does not get the original subsets. I’m sure this is a simple solution, but how can I get a list of sublists with the nested sublists also in it?

I have a sheet set with 9 sublists. Within those, there is a nested sublist of sheets. When I use the Subset.Subsets node it only returns the nested sublists and leaves the others as Empty Lists.


Is there a way to get a list that has the empty lists filled out as well as the sublists while keeping that structure? It’s probably something simple with joining lists that I’m missing.

I ran into this issue too so that is why I made SheetSet.GetAllSheets.dyf (10.3 KB)

That gets all the sheets, but I also need the subsets. I think I got it by using a List.Combine, then List.Clean, then List.Flatten. It looks like this when combined.

That should work. If it gives you issues, maybe mess around with an Index replace or Boolean replace next.