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:
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).
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!
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:
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…
@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.
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
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.
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.
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.