Array groups of Nodes

Hello, I have script that involves placing points on columns. The script is already set up in place for where these points should go. The only problem is that I have to keep copying groups in the script to individually place these points on the model. Instead of having to keep copying These groups that i have on, I want to create a arrray command that would already copy these nodes and give me the exact number of points I want and someway to adjust it. If anybody may have a clue, or an idea, or more favorably a picture or video on how to solve this I would greatly appreciate it.

Generally speaking Dynamo doesn’t need to do this, and your graph will actually perform better if you don’t.

Usually you want to utilize list lacing and levels instead. Now these are topics which users often skip past when they are getting started, so it’s worth brushing up on those basics before we get into a bigger workflow.

First check out what the Dynamo primer has to say about lists and lacing here:
https://primer.dynamobim.org/06_Designing-with-Lists/6_designing-with-lists.html

I recommend everyone do all of the exercises in the primer. Do them even if when you read it and think ‘I will never have to do something like layout solar panels on a roof, why am I doing this?’ In all cases the primer is designed to teach concepts not outcomes.

The other place to check is the Dynamo office hour on list lacing and levels here: 05 - Understanding lacing in Dynamo (Dec 2020) - YouTube

In face all three of the sessions on lists are likely worth some review.

Once you understand those basic concepts you can start to consider how you could build nested lists to perform all the actions on all the groups using one node instead of all of the actions on one of the groups n times.

In the graph sample above you add a value to the Z component of the point in each group. A better solution would be to build a range from 0 to the topmost value spacing by the offset distance. This can be done in a code block using this bit of design script: 0..end..spacing;. From there you can add the value to the initial Z value, or better yet use a Geometry.Translate node with the original point list as the geometry input, no input for the X or Y component, and the range for the Z component. No need for any array of node groups this way. :slight_smile:

1 Like

Yeah, levels and lacing are the way to go here. Although I don’t understand what’s wrong because if you feed it same amount of x, y and z coordinates it will give you list of valid results even without any lacing or levels.

Hello, for its bottom location, they send 3 functions (Point.X, Point.Y, Point.Z) to its Point.By.Coordinates, hence the sequence of error generations in series for the other locations
Mr. Jacob’s advice is the right one as usual
Cordially
chrsitian.stan

Could you expand nodes around the error so I can take a look at the outputs?
EDIT:


Also these nodes don’t seam to have inputs connected

I saw this as a group which the original user wanted to use many times in the graph, rather than a ‘why isn’t this graph working’. Hence the ‘use list levels instead’ thought.

These information is extremely helpfull, however its difficult to differentiate on what inputs i need to put in because I am using other values like a/b or c*x;. And the Geometry translate I tried using but the only problem is that the [FamilyInstance.ByPoint] will get errors either because i need to attach another node to accept the [FamilyInstance.ByPoint] or I need to attach it to something else.

When you create graph images zoom in so the nodes are visible and use the ‘export canvas as image’ feature which is accessed by the camera icon or the ‘export’ button just outside the top right corner of the workspace.

Currently we can’t see what the nodes are, so while you’re describing nodes fairly well we don’t have enough context to understand where the issue was introduced.

Could I just send you the Dyn file, I think it would be easier.

1 Like

I put up a new picture, its downloadable