Labeling and laying out parts for cnc machining

Hello, I am having trouble with what I imagine is a very common and simple task. Labelling and laying out parts for CNC machining.
The design is very simple and what I imagine is a very common beginners project, a waved slatted plywood ceiling. But also a good project for me to learn basic opperations.
I have built the main definition to create the rippled surface and joint the parts. I have also sorted the parts into the cassette groups (definition attached) so I could use the path to generate cassette and part labels.
But I am having trouble labeling them well with a single line font and laying them out, ideally each cassette in its row and on its own named layer in rhino.
Preferably I would like to use letters for each row and axis and numbers for the cassette groups and parts. eg. A1-Y1, A1-Y2, A1,X1, A1-X2 see images attached.
Or if this is too difficult I have sorted the parts so I can use what I think is called the index or path, {0;0}(0), {0:0}(1). even if the x and y parts share the same label in the group it is easy to tell the diiference by size.
But people installing would find the first and prefered labelling system much easier to understand and follow.
I need to lay out the parts in their groups (cassettes) on the X Y palne with a single line (engravable) font label on the non-visible lap joint. (see image)
I would greatly apreciate any help that anyone can offer on what i imagine for anyone compitent in grassopper is a simple and common opperation. But not so simple to a novice such as myself.




I have been looking at human for creating the layers for each cassette group. Does anyone know if this would work? or are there better ways to do this?

Hi Tom, which version of rhino are you using?

Rhino 7

I am fumbling through laying out the parts, but still having alot of trouble labeling the parts.
Here is where I am at (see file attached)
I am sure there must be a far better way of aproahing this.
Any help would be greatly apreciated

layout and label of just x axis parts to make file small enough to (17.9 MB)

hi @tom11 To make this work well, you need to be very careful that the data trees keep matching.
I’ve added some components and grouped them with a purple color.
I also added a way to align the text relative to the lower corner of the shape, rather than the lower corner of the boundingbox.

Does that help?
layout and label of just x axis parts to make file small enough to (17.9 MB)

1 Like

Hi Gijs, thanks for this.
I will definitly add this way of aligning the text to the lower corner of the shape as my solution is still lacking this and I was going to do it by hand afterwards.
I got there in the end and it seems to be working well, as you say it was all about matching up the data structure with the parts to lay out, the planes to lay them on and the text to label them.
I am sure there is a more elegant way than I did it, but it seems to work and was a great excersise in data structure for a novice such as myself.
Thanks again for your help

if you have a minute could you explain how the shift path works in this?

some components add extra branches, like the marked two, shift paths allows you to remove those extra paths so that the original data structure is brought back

1 Like

Thanks this will be useful.
I will get my head around it.
I spend alot of time loosing data structure and rebuilding it. In fact the majority of the file on this job (prior to the laying out and labeling part that you have seen) is dealing with this, re-sorting and re-partitioning the parts over and over again.
I have been wondering how to maintain or match the structure better throughout the work flow.

This is the most challenging and essential part of gh to master. It takes time and a lot of practice.


I’ve struggled with this same task and learning about data trees. I’m definitely still learning (I am studying Gijs’ example) It isn’t free, but for me the Data Trees tutorial from Think Parametric was a pretty efficient way to get started.

thanks I will have a look at these turtorials.
The shift path component looks really useful. Im definitly going to try this out further.

By using elefront and attributes, I find I am able to simplify data structures so that my elements are passed around in a flat list, then they can be restructured arbitrarily by any means and their attributes are automatically matching (because they are attached to the object).

I highly recommend this approach. It also makes it easier to break your work up into smaller modules easily. For example your parts could have a name and origin plane attached as elefront attributes from the 3d phase (module 1). Then when laying the parts out for fabrication (module 2) you do not need to match the name and plane data structures to the parts.


Ive found elefront helpful too, but I think the new Rhino components in GH are better, so I am starting to set up my workflows with those instead.

I am very familiar with these types of layouts and projects. Assigning Data to the Objects themselves, however you choose to approach it, is best.

It allows for custom sorting, tagging for both manufacture and install, and should you ever need to replace one of those fins in real life :slight_smile: , your working file can be searched for both the solid object and associated cut files pretty quickly. that way if things gets moved during nesting for CNC or whatever else, you can rely on both the tagged part as well as fact check against the user text attributes.

use the schwartz…Python is an asset here for sure. Most likely will need to also tag where the fins lay into their supports so a lot of cross referencing of data will need to occur and can get messy in a GH sketch.

the tags themselves then become a read function vs trying to follow the same logic for laying out the parts (write function).

Is this relevant? Standard components, no plugins or Python.