Part List - for Carpenter - Heading in the right direction?

Hey there i gave it a try. Since i am completely new to coding of any kind i though gh might be visually easier than rhino script or python to learn. Not sure if it is best for what i want.

This is my first Grasshopper Project, be kind with my “code” i have no idea what i am doing i just downloaded all kinds of plugins and just searched for commands i would like to do in order to reach my goal, of a carpenter friendly part list.

I couldn’t figure lunchbox excel out, but TTToolbox worked just fine.

To Do’s:
1st: I still need to find a way to create a minimum bounding box with a object based construction plane (i normally use a downloaded python command that someone else wrote for that)

2nd: I need to count objects with the same length of the bounding box & same name, count them and kick them out of the braches somehow.

I will keep you updated. Since this is my first Project and it took me only 3-4 hour. I am very happy how far i got.

I need no help in solving the puzzle, maybe just a check if my approach makes sense :thinking:

And a suggestion for sorting double objects and counting them.
Stü (17.4 KB)

For Joinery you could give a try this tool for Rhino8: Rhino — compas_wood

1 Like

I created this very bad cubic thingy for testing purposes, Layers contains items of the very same size, and each item is also named progressively regardless of its Layer
cubic_thingy.3dm (248.3 KB)

if each and all of your items are always aligned with the XYZ axes, then a “standard” WorldXY-aligned bounding box might be enough to know the three sizes, for instance:

Stü (23.0 KB)

this taxes the X, Y, Z sizes of each Bounding Box and sort them highest to lowest
so the last value is always the smallest, that could be interpreted as the thickness, and the first values are always the highest and the second highest one, which could be interpreted as width by length

in the above example parts are branched by Layer:

but of course you can sort them by size with something like this, where you take advantage of having joined the length+width+height of each brep as a unique string:

Stü (20.9 KB)

in this last case, you can interpret the results like this:

1 Like

Holy cow so much input. I will dive into it as soon as i find time. Thanks so far!

I will check out compas-wood!

I would like to keep away from boxes only, so that it works with all kind of breps for example a round coned chair legs.

I have to figure out if it is best to orient each part to xyz and useclassic boxes as you did or just create a “minimumboundingbox” that has a local construction plane(brep).

branched by layer or even more branched my material would be interesting, i will try it.

Please don’t solve too much, since it is only for educational purposes. I want to learn and find out. For work we use a different software called Pyhta 3D, a small german woodworking oriented CAD software. Not so versatile but very precise, stable and easy to use, simple more production orientated.

I get very excited to control and deform the part list until it is ready to use.

1 Like

Is there a way to have “showname” as a normal displaymode?

if you also have the central axis-line of those, I guess that would help, expecially if you want to compare them

generally speaking, you can always align a bounding box to a reference plane, in such a way the bounding box is oriented the same way as the plane

of course, if you are building stuff on WorldXY and you only have 90° angles, then things are pretty easy, like here:

but if I rotate the Rhino drawing 15° here’s what happens :upside_down_face: which is probably what you meant

without considering the conical-shaped round legs, and focusing just on shapes that can be considered boxes, if you extract one random plane for each original brep and use that plane as reference to create the bounding boxes, I think you should be ok

for instance, you can isolate the first face of each brep, get the plane it lies on, and use that oriented plane to get the bounding box:

this allows you to easily retrieve their bounding box regardless of their space orientation:

Stü (21.4 KB)

the size labels output always the very same results:

I think you could do a Rhino script that generates for each part an Annotation Dot centered on its Volume centroid, and the object name as text? those can be assigned to a separate Layer in such a way you can easily hide those if not needed… but take care you have to move them together with each object (or group them together)

otherwise a GH Text Tag can display any text centered on a point (right click to change its size)

the thing with conical-shape legs is that you might not have a good reference plane to be used to orient their bounding box, unless some external references (for instance their central axis) is provided
if you have a central axis for those, then you could create a plane given its Normal, and use that as reference… but the thing that those legs would have top and bottom cut on an angle might add a new layer of complexity that somehow would need to be taken care of (feasible for sure, maybe jjust a bit challenging)

Thanks a lot with your help so far, i will come back with new definitions :wink: