How to create a cut list of parts in a grid

Hello, I am having trouble creating a cut list of parts for a project that I am working on and was wondering if anyone can help?
I need to create a cutting list of the lengths of parts. The parts are all 22mm x 22mm and varying lengths. They are layed out in a grid. Within the grid cells there will either be 0, 1 or 2 parts. I need to create a list of the lengths of the parts and what grid cell they are in.
As you can see in the image grid cell a1 has 2 parts with lengths of 40mm and 369mm. I would also need to keep the measurements in order so for a1 the 369mm first then the 40mm second.
I would then like to round the measurement up of down to the nearest 5mm.
I would really apreciate if anyone could help me with this problem.
many thanks, Tom


Hi, Thanks alot for your help. I managed to get to much the same point as this myself, although in a more crude mannor of just deconstructing the breps and measureing an edge.
The problem is asigning the lengths to the particular grid cells. I need to know which length or in some cases which 2 lengths are for which grid cell.
I need to end up with a list or matrix of the grid cells and the length of the parts inside. Wheather it be none, one or two. I then know where to put the parts when phsyically building the piece.
Do you have any idea how I could do this?

this takes a good part of the work already done by @Rajeev2 and adds info about the location of each piece (there are for sure better ways to do that… but yeah :smiley: )


the two final lists are:
on top, a legend of where each piece goes, where pieces are called by their length
in the bottom, a list of lengths which are multiples of 5mm, indicating how much per type you’ll need to cut (very similar to what Rajeev already did)

note that data trees use numbers to identify branches, so it has to be read as:
{ in_which_column ; in_which_row }
for instance, because rows are letters and columns are numbers, the branch {3;5} will indicate the position 4F (both start counting at 0, so “3” is the 4th value → 4; and 5 is the 6th letter → F)

I noticed that you always have a first piece in the front in order to have a second piece on the bottom: because of that, whenever the same position contains more than one length, the first one in the list is the front one, and the second one in the list is the back on (this also means that if you will have other arrangments where pieces on a particular spot are only in the bottom of the spot, this definition won’t be able to tell you that)

1 Like

Hi Inno, thanks alot for this.
Just trying to get my head around what you have done and having trouble matching the lengths to the first column.
As I understand my 1a is {0,0} 1b {0,1} 1c {0,2} etc. is this right?

If so these are my lengths.
1a=40mm and 370mm
your first column lengths are
{0,0}=370 and 40mm
Can you check and let me know where I am going wrong?
Thanks again for your help

I seem to be able to get it working for a single row but not more than one. Although I think row and column have flipped.
Any help with this would be much apreciated.


yes, you are right, I did a rookie mistake in data tree matching :slight_smile:

what did not work was using list item on these two trees:

the List item was just taking points from the wrong branches, sorry for that, I should have tested deeper

I believe now it works correctly, and you can slide between row and columns to see the result :+1:


[edit] for clarity, this is how you can decode positions depending on their branch:

Thank you so much, this is fantastic.
I will pull out the row lengths with split tree as this the way it will be glued up.
Is there a way that the path can be displayed as I pull out each row, see screen grab.

nicely done I learned about keySearch here never used it before

this slider indicates which row to show:

I think it’s mostly useful in top view


there is a component for which I don’t remember the name, it should be something like “filter paths” or something like that, which should be able to filter data tree… that single component should be able to replace this entire group… when I’ll remember its name I’ll edit this :slight_smile:

1 Like

fantastic, thanks alot, this is great. Youre a star.
Would you ever be interested in any remote freelance work on various grasshopper projects that we have?
I am working on a few other projects that could do with a mind like yours.
if so let me know and I will send over details.
one quite simple current project is another version of this old piece. Ive done most of the definition (very crudely) but need help labeling and laying out the parts to be cut.

1 Like

splitTree ?

1 Like

there is a quite powerful c# feature that allows to sort List s by a custom Comparer.

the great thing is, it also let s you implement a tolerance / threshold quite easy.

and also setting up a new Datatree with the sorted boxes seams more readable as script. (465.0 KB)

(Rhino V8)

kind regards - tom

1 Like