Create assemblies from list

Hello All, I have several list, each consisting of varying number of items. How can I get dynamo to create assemblies for all the index numbers at once?


Not 100% sure this will work but it should based on other things that i have seen.

Also what package are you using for those nodes? I do not have them so I just renamed code blocks. They look useful though.

List combine

Plug nothing into Tool.CreatAssembly. Forgot to mention that.

Andre, seems like you should try right clicking on the nodes and changing the Lacing

Steven, the noes I am using are from the “steamnodes” package.

The solution you provided, does work more or less the issue I am having is that components are not being added to the right assembly. I believe this has to do with the fact that i am using nested families.

Vickram, I was not able to get the lacing options to work.

Maybe i am approaching this from the wrong perspective.

here is what I am trying to do,

For example, I have a list of 3 panels. Panel 1 consist of 4 pieces of hardware, Panel 2 consists of 3 pieces of hardware & Panel 3 consists of 5 pieces of hardware. (Hardware qty. can vary per panel). How would one use dynamo to generate an assembly for each Panel with its corresponding hardware?

I am just looking for ideas to approach the situation.

as always, Thank you in advance for the help.


This is a custom python node with a single input. Therefore the right way to replicate its functionality over a list is with a List.Map node:

Thank you for the response Dimitar.

Unfortunately I am not versed with Python therefore please forgive my ignorance. Could you please elaborate on what the the python script would be? can a script be written to tell each piece of hardware to which panel it belongs?


Thanks again

Hi Andre,

You don’t really need the python script. I just used it in the above case to extract the asssembly type name.

As long as each sub-list contains the required elements, it should theoretically create your assembly. If it’s not working as expected, you could post a simplified representation of your objects, so that people could further help you troubleshoot your particular case.


The assembly node is indeed working the way it should. The problem is that I do not know how to build the list of panels with its respective hardware, here is where I need the help.

here is the my situation:

I have been tasked with creating (several hundred) assemblies. Each assembly consists of a panel (generic model) with varying number of hardware (structural connections). In my example below I have

Assembly 1 consists of panel 1 and (9) pieces of hardware.

Assembly 2 consists of panel 2 and (4) pieces of hardware.


How can I generate the sub lists of each panel with its hardware? Using the example below sub list 1= panel 1 + (9) pieces of hardware, sub list 2= panel 2 +pieces of hardware. etc.






Hi Andre,

There is a node from “clockwork” package called “FamilyInstance.Subcomponents” try using that node. I think it will give you what your looking for (hardware). If you can’t make it just drop here dummy rvt file so that we can have closer look at your issue. Good Luck!

This is probably not the best way to do this but you can try this. Not the best way because creating very long lists but I think it will work just might be a little slow. Did not have a lot of time to do it so I may have messed something. You may need to play with it a bit.


I was no successful in getting the suggested node to work.



i will give this a try and report back.


here is a drop box link to a simplified version of my project


Thank You

Hi Andre,

After looking at your file it seems you have lots of nested families in those hardware connections. Use “Tools.GetSurroundingElements” to get structural connections in each Generic Model. See below screenshot for more info.



Steven, Thank you for your input. The workflow you have provided did not quite work but it gave me some ides.

Kulkul, The “Tools.GetSurroundingElements” works to some extent. The issue is that hardware closest to two panel edge often gets included in the wrong assembly, adjusting the tolerance factor did not help this any. I have managed to obtain the centroids for all hardware and all panels.

Using the “BoundingBox.Intersects” I have managed to generate a true/false list for all hardware intersecting with panels. How can iget each panel with the corresponding “true” value into a list? (I do not know how to use nodes with a “bool” output lol). Ifeel like I am so close, just missing a step or two before i can generate the assemblies ass 2 test

Bool is short for Boolean and is true or false.

You will need to remove the subsist separating each true false value. You can do this by using Flatten and List.Map (plug Flatten in the the f(x) of List.Map)(you may need a double List.Map). Then use List.FilterByBoolMask (This node will output all of the True values through “in” and the False values through “out”)

You can extract the connecttions’ placement point with the “FamilyInstance.Location” node. Once you have the placement point, another option for checking if two elements are interacting with each other is the “BoundingBox.Contains” node( it seems like the majority of your connections are partially or fully inside the GMs) . This was my attempt:

Tho I’m not sure if it’s a good idea to add model-in-place families to assemblies. Each instance of a MIP is a unique element, so whenever you revise one of the GM panels, instead if changing all similar assemblies, you’ll get a new and unique assembly.

Thank you Dimitar & Steven, your suggestion worked as expected.

I need to do 1 more thing before i can run the assembly node. how can I get the main index number (which represents the panel) to be apart of the corresponding sublist? (panel and hardware should listed in each sublist).

Thank you.