Mesh between points?

At the risk of being gibbeted for double posting, I’ll re-ask a question from a comment in a different thread, in the hope that someone picks it up. Apologies in advance.

Working from a suggestion by David Piker for how to model the struts that make up the skeleton of a cell structure, I have ended up with a mesh that is sort of open towards the outer shell of my initial geometry (in this case a simple dodecahedron), like this:

181015_construct-meshes-question1.png2083x1096 55.3 KB

I can switch on the end points of my initial brep to understand between which points my final collection of meshes (or, even better, breps) should stretch:

181015_construct-meshes-question2.png2084x1092 54.7 KB

…but figuring out how to get the geometry between these points is beyond me. This, roughly sketched by hand in Rhino, is what I want to end up with:

181015_construct-meshes-question3.png2083x1084 48.2 KB

Any data tree-sorting whiz kids out there who are up for showing me how to achieve that?

I figured there might be a way to do this with the Mirror Cut Mesh command in Michael Pryor’s Pufferfish, but can’t get that to work either.

Any comments/ideas/suggestions much appreciated. Apologies again for posting this twice. (148.6 KB)

Cell (155.1 KB)

I hate doing this with geometrical calculation rather than maths,
just had limited time answering this,
hope it does what you are after.

Is this what you are after? (156.6 KB)

Hi Zach,

Many thanks for trying to help out. So you’re capping the polylines from entire “inner” mesh to turn it into a brep (nice - I didn’t know you could do this) and then subtracting it from the outer brep to get the skeleton.

That does give the skeleton, but it doesn’t give me the individual members of the skeleton, which is what I need (and can’t figure out how to get). So a baked version of the resulting geometry has one single surface per brep skeleton face, like so:

What I’m trying to get, since this won’t be 3d printed but rather cut as individual timber pieces that are then fastened together, are the individual “bones” of this skeleton (so that selected face needs to be chopped into five pieces and connected to neighbouring faces to create five chunky bones around that surface, and so on).

Any ideas for how I might go about that?


Hi HS_Kim,

Thanks for hanging in there! I really appreciate your help.

If I might just test your patience a tiny bit more.

You just taught me a thing or two (or three) about how to graft points to get nicely unified data trees, and how to construct meshes from those points. The result is a great solid mesh, which would be perfect if this were to be 3d printed.

However, I’m trying (as I just wrote to Zach above) to have the pieces that make up the mesh skeleton cut on a CNC machine, so I need the five individual angled “bones” that make up each thickened pentagon. This one:

I guess I could “cheat” by using lots of list items and typing in the respective points and then use ConMesh to build meshes from those points, but if possible I’d like to find a smarter/more parametric solution than that (one that takes any n-sided cell, for instance, or at least for now takes both a 12-sided and a 14-sided cell). It would be great to be able to essentially define a shape and the dimensions of the material to be used, and in the end get the individual CNC cut pattern that makes up the skeleton of that shape.

You’re so good with this that I have a feeling you can think of a way to achieve that by tweaking the definition you posted. Could we use the end points of the edges from the two ConMeshes and use them to remesh individual “bones”? Please enlighten me!

OK… Here we have one solution but, I can’t guarantee that it would work on every variations of your polyhedron… (168.1 KB)

See if the attached is what you are after,
not a universal appraoch though,
rather an one off solution =0 (162.2 KB)

This looks supercalifragilisticexpialidocious. However, I’m missing the Unify Mesh component after the Clean Mesh (the one in your blue circle) - what is that?

It is unify mesh normals (in GH1 for Rhino 6).

If you only have Rhino 5 Then you can use some plugins which have it. In Pufferfish I have a Rebuild Mesh component which has a lot of options for mesh fixing, one of the options is unify.

Zach - that is what I’m trying to achieve. I’m getting a warning from the PCen component (“Cannot convert input curve to polyline”) and end up with a very fractured version of your nice, clean geometry - but some of the parts are “whole” and would be good enough to use. Wonder what the difference is between your file and my downloaded version though? Here’s the result:

And this is the GH def:

I’m also trying to follow your thinking but am a bit confused - can you explain the basic idea? You’re measuring the surface areas, then grouping and connecting vertices close to each other with polylines that you then use to split the surfaces, merging those into breps, getting the edges of those breps, and then… hm…

Thanks @Michael_Pryor - I am indeed and regrettably on Rhino 5 still. Will try the Pufferfish > Rebuild Mesh > unify route.

Do you think there’s a way of achieving some of this stuff using the Mirror Cut Mesh component, or have I misunderstood what that does?

@HS_Kim, not that I doubted this before, but you are a genius. With a little Pufferfish help from Michael, your def totally works. How it works, however, is something I’ll spend some time trying to understand now… Will also be quite interesting to see what other polyhedra it (or something like it) can be applied to… Thank you so much.

This doesn’t seem like a task for mirror cutting, unless you want a mirror cut geometry like so.

Ummm, I see the problem there…

Try to replace POLYGON CENTRE (the red one) with Area, and then get the centroid.
The reason I normally use polygoncentre over area to get the centroid is that,
polygoncentre eats much less resource, while area component tends to slow down the process a bit.

The logic is quite simple as I said it’s not a universal approach.
Firstly the original data structure is ignored by having them all flattened.
Extract the “pentagon” surfaces by area, cuz you know they are the biggest, then split them into 5 pieces.
After that you can use AREA to get the centroid of all the surfaces, and use POINT GROUP to group them,
basically 4 in a group, controlled by distances.
Once you get the index of the points grouped, use them to restructure the surfaces.
So you get 4 surfaces in a group, then join them, now you will have all the splitted members you need,
except the fact that they are not closed.
Then the last few steps is simply trying to build another 2 triangular suface to join and close the brep into solid.
They way I took to find the edge is to connect the points closest to the centoid of the original cell with the points furthest away from it.

Hope that helps.
I’m sure there will be better ways solving this,
I didn’t really think too much on optimising them, was just doing whatever works :slight_smile:

BTW I was originally trying to split the whole cell geomtry into singled members,
and realised that I can’t because the whole geometry in fact is not mathematically symmetrical(perfect???)
not sure I’m using the right term though…
Yeah so basically each split members is not identical, they are slightly different to some extend.

Just a secret tip, convert surface to mesh, then use area, tiny bit less accurate in some cases but a hell of a lot faster.

1 Like

Right, thanks. I thought since the shape in this particular case is radially symmetrical, perhaps it would be possible to design/control/update only one half of the “strut” parts, and then mirror the other half in place using edges as the mirror plane (thinking out loud: I guess someone with enough mathematical skills could write a definition that uses the centre point and one of those struts and make them fit together seamlessly, but that someone is not me).

Thanks Zach - that helps a lot. Really helpful to get an insight into different approaches of going about something like this; from your solution I picked up a few ideas that I’ll certainly use going forward.

Thanks Michael, that’s a pretty hefty difference. Why is the mesh so much quicker, and why is it at times less accurate?

Because a mesh consists of a limited number of discrete elements (triangles). You can break the calculation up into loose triangles, then combine the results. A surface on the other hand, especially if there’s trimming involved, is a continuous shape which must be sampled iteratively until a solution within a given tolerance can be guaranteed. This is much more complicated, but it better represents the real area.

1 Like