Create Sublists/Shift Indices?


#1

Hello all

Anyone able to chime in on what I’m doing wrong? I want to shift the indice for my Element.GetParameterValueByName node by one - assume I’m to use a List.Sublist for this?

It basically has to match the nomenclature of the List.Flatten node in order for it to correctly execute the Curve.Extrusion node, no?

Dynamo_Room_Extrusion_Area


#2

Get rid of List.Sublists and use List.Combine to create the extrusions:

CombineToExtrude


#3

Ah, a similar answer to last time. Many thanks Andreas. List.Combine appears to be pretty powerful!


#4

Ah, a similar answer to last time. Many thanks Andreas. List.Combine appears to be pretty powerful!

EDIT: Appears I have one other issue to resolve before it will execute. My Element.GetParameterValueByName has data in a non double format [22650.000mm]. I tried using a code block [ X - “.000mm” ], but didn’t figure out the syntax, as well as a String.ToNumber.

 

Dynamo_Room_Extrusion_Area2

 


#5

convert your roomheight to number?


#6

That is what I’m trying to do, yes :slight_smile:


#7

I’ve managed to get it working!! It’s a little clunky though, so I should probably figure out how to get it working in a Code Block.

I also have a query if someone doesn’t mind answering. When I use a node to convert to SIUnits, howcome the number is arbitrary? Or is that an Imperial measurement? I’ve managed to backwards compute a scale factor to get back to where I need with a few math nodes but am wondering if my process is robust.

 

Dynamo_Room_Extrusion_Area3


#8

Just use a Formula node to strip the unit:

StripUnit


#9

So simple. I’m in awe yet again Andreas :slight_smile: Many thanks.


#10

Hey guys and gals,

I’ve got my script very close to where I want it - only thing left is to filter out the null values. I’ve somehow managed to break a room in my current project, which has highlighted an issue with my node setup in Dynamo.

What would be the best way to filter out a Null value? I tried playing around with converting the List.Combine to a string, then excluding etc but didn’t quite get it to work and it seemed like a clunky way of doing things.

Any thoughts? I’m >< this close I can feel it!

Dynamo_Room_Extrusion_Null_Values


#11

whar are your error messages?

keep in mind that the export to excel expects list elements of same length otherwise you receive an error like “out of index”

my workaround is a python script that generates empty list elements


#12

The technique to use depends entirely on the desired outcome:

NullNullNull


#13

Ah, those answers both make sense.

Peter, I do have lists that have a different length so that is totally part of the problem.

My errors are as follows:

The “Surface.Area” node gives - ‘Warning: Dereferencing a non-pointer’

The “Excel.WriteToFile” node gives - ‘Warning: Excel.WriteToFile operation failed’

As such, I’ll probably need to do something along the lines of what you suggested by populating empty list elements.

Andreas, thanks for the visual nodes. I’ll have a play with those first to see if they help my situation.

Many thanks gentlemen.


#14

Interestingly none of your examples worked Andreas, so my assumption is that Peters observation would be correct?

As shown below: Null not taken out.

Dynamo_Room_Extrusion_Null_Values2


#15

published List.GenerateEmptyElements


#16

Brilliant Peter, many thanks. I’ll have a play with that.


#17

… and I’m such a muppet I can’t figure out where to put it :smiley:

I assumed after my List.Combine and before my Surface.Area (To match sublist length), but not. Nor into my List.Join or after it. Using it as the ‘comb’ input into a List.Combine node with my Room Names at List1 and my Areas at List2 also fails. Yesterday was a long day and I fear my brain isn’t functioning at optimum right now…


#18

list


#19

I thought that was supposed to be how it works, but my particular instance is failing for some reason. Please bear with the following long post.

The first image (With coloured boxes) shows my predicament. I have a list of ‘Room Names’ that total 115 inputs (0-114). I’m assuming that as this matches the inputs of the List.Join (115 rooms with sub-list data) that this part doesn’t need to be ran via the List.GenerateEmptyElements node.

Each Room (Of number 115) has between 4 and 68 Walls which each give a sub-list value into my List.Combine node. As such, I believe I must run the List.GenerateEmptyElements node on this to give each sub-list a total value of 68 each (So some have 4x real values and 64 empty values).

The problem being is I can’t seem to connect up your node and have it output correctly within my current wire network. I’m wondering if I’m missing something obvious here.

The remaining attached images showcase placement and options I have tried to, as of yet, no avail.

Apologies for the terrible formatting of this post - I still can’t quite figure out how to attach multiple images correctly in here.

Dynamo_Room_Extrusion_Null_Values4

 

 

 


#20

you’ll have to generate both the surfaces and the areas as equally long lists.

why are you wireing the surfaces to the areas?

i would go like that:

  1. creae your list of surfaces

  2. create the list of areas

  3. generate the empty elements for surfaces

  4. generate the empty list for areaslistprob