List combine function and Robot Structural Analysis

Hello Dynamo-users,

I’m trying to automate a construction calculation in RSA in combination with Dynamo and Revit. I made my script where i load my profiletypes from Excel, generate geometry based on a revit surface and after this translate is into robot.

The translation to robot is made in a custom node. This custom node is used as a function for list combine. This combination makes the profiletypes different every calculation. After it worked out a couple caclulations it does not return all the results. This is visible in the pictures below.



The custom node inputs are:
DirectoryPath
All loaded profiles
Requierd profiles
Profile on each bartype
Forces
Material type
Construction geometry in the form of lines.
Support node points
Construction surface
Profile distance. (just for the save)

Can anyone help me or at least explain why this proces is going wrong in the first place?

I can upload the script if thats necessary.

Vincent.

Custom nodes sometimes seem to be reading the length of all of the inputs, and only return results that match the length of the shortest input. Essentially they are following lacing conventions, even if the contents of the node do not. (I ran into a similar situation where a group of nodes not put in a custom node returned 15 values, yet when packaged up in a custom node only returned 6 - this was the issue.) Simply adjust the lacing behaviour of the custom node to longest or cross-product and I imagine it will work out.

I will test this tonight and post the results tomorrow. Hopefully this is the issue.

Thanks in advance Ben!

Vincent

@Ben_Osborne

Unfortunately, it did not work. I made some changes in the script and try it again tonight.
Hopefully I will fix this on time. Friday is the school deadline

Vincent

Depending on your particular case List.LaceShortest and List.LaceLongest might be of help

Does this do the same as List.combine? I use List.CartesianProduct to make a combination of all variables.

Basically List.Combine gives you nulls when the lengths of the lists are not the same

I use it to fill in the empty spots in the custom node. How does that work with list.LaceLongest?
The lists i’ll put in the combine node got the same length but those in the custom node are single inputs.

I don’t know how to fix this with your nodes?

Thanks in advance,

Vincent

How does your custom node look like? Have you defined the data types correctly as shown by Dimitar in this thread?

this is how the input ports look like. I added nodes with what type of material comes in. How should i define my input ports?

I added the script in this post.

Thanks in advance

Vincent
ParametricRun.EAELasttry.dyf (100.9 KB)

Maybe this example helps?

@Einar_Raknes,

I made this from my script input. Thanks for your advice. I will test it later today!
Does it matter that all input ports are var?

Vincent

No :slight_smile:

@Einar_Raknes,

Does it matter for a custom node to have different type of inputs? Or do they need to be the same? I was wondering this with the lacing of the node in combination with List.Combine. I still get a bunch of Null values add the end of the calculation.

Vincent.

Have your tried to skip the list combine node and connect the inputs directly to the custom nodes? When the single inputs are defined as single input (:var) Dynamo should be able replicate the lists correctly. Maybe play with lacing options and levels.

It is supposed to work with different types, yes.

1 Like

The direct input works well. I tried up to 16 variants. The next try is 81. Hopefully the results will be the same!

Thanks Einar!

1 Like

By the way, i used the list.combine node because i saw an example that used the same work around. The 81 variants worked fine. 260 is up next!