Offsetting surface parallelly

Hello everyone, hope you all are doing well. I have a bunch of planar surfaces which I want to offset parallelly. I tried offsetting them with the center but the edge surfaces are too bent and i wont be able to fabricate it.

I also tried to offset them in a set of 5 but that is also not working as they are criss crossing after a certain distance. It will be really helpful if you can guide me in how to offset then parallelly so, I get planar faces for fabrication.

Thank you in advance. (46.1 KB)

Offset Brep from Parakeet might help… (57.0 KB)

1 Like

Thank you Jakinta, I have not used Parakeet yet but will download and try this method.

1 Like

Wow, this is great. Thank you so much Joseph, now I feel stupid for not exploring more hahaha.

Here’s another way, similar but using the whole polysurface instead of separate squares. (50.3 KB)

1 Like

Thanks a ton, Joseph. I am actually planning to unroll those breps, laser cut them and assemble like boxes. Then put them on top of each other.

Thank you once again for all your help :slight_smile:

In that case, you’ll want the first solution which builds an enclosed box for each square. 50 boxes is a lot of work! How long is it?

For quad meshes, even when the faces are parallel, it is usually not possible to make a parallel offset of the faces and have the nodes of the faces of the offset mesh still meet.
The offset planes of 3 faces always intersect in a point, but typically when you have 4 faces around a vertex, these points for each combination of 3 of the faces will not coincide. So you end up with non planar faces and twisting beams or extra little corners on the faces.
You can optimize a mesh so that it can be offset like this though- it needs to be a conical mesh (see the links in this thread for more info).

Here’s an example showing how this can be done for your shape.
It turns out what you have is actually already very close to conical, so the vertices only need to move a tiny amount - you can even get away with skipping this optimisation step here, but perhaps it is interesting for others to see an approach which can also work for more general shapes which don’t already have this property.
Then it uses Kangaroo’s FaceFace offset component to create the parallel offset with all faces at the same distance apart and torsion free beams, and makes boxes out of them (50.9 KB)


Hi Joseph,

Yeah the first solution works well for me. The model is 64cm x 32cm x 16cm, it is not 1:1 scale but by making it bigger it will be easy to fold and assemble the model.

1 Like

Thanks a lot Daniel and sorry for late reply. Yes, I agree with quad meshes it is tuff to offset and even with triangular faces, upto some distance it works but beyond that even they are prone to intersect.

I will certainly look into it and see how these components work. A general question, will this work for hexagonal faces as well? I am trying to planarize them but it is hard with hexagons as few of those vertices move inside and deform the hexagon to a double M shaped polygon, apologies for not knowing the name of this polygon.

Hi @karizmar36

While the faces are always planar, triangle meshes are actually more problematic than quad meshes for offsetting - with quad meshes there is this specific conical vertex condition you have to meet, but at least if you can optimize for that it does allow freeform shapes, provided the mesh has the right placement of non-valence-4 vertices and directions. For triangular meshes, if you want planar offsets that node out without the faces clipping each other, you can basically only do spheres, planes and extrusions.

Be aware if you are applying the conical quad mesh definition to other surfaces you’ll usually need to add some more goals to keep it smooth and the faces well shaped. With your shape here it worked even without this, because the vertices only needed to move a tiny distance. If you need help with this post again and I’ll point you towards some more examples.

and yes - the planarizing will work also for hexagons (you can use the FaceBoundaries component and connect the discontinuities to a CoPlanar goal). Note there’s no need to optimize for conicality there - For hexagons meeting 3 around a vertex, the offset and noding out is easy, since 3 planes always intersect in a point (except in a few degenerate cases such as when 2 are parallel).
However, when hexagons are planarized they have to distort into some odd shapes on surfaces which are not purely dome-like (synclastic curvature), and in the developable or anticlastic regions you have to have some of these awkward ‘double M’ shaped concave hexagons . Geometrically it isn’t possible for them all to stay convex. You can apply additional goals to keep the edge lengths and angles reasonable, but the concave shapes can’t be avoided.

Thank you for the detailed explanation Daniel. Oh okay so it seems like quad meshes are much better than triangular faces unless we have a simple form then we can go for triangular faces as well. Interesting!

That will be great, I am working on a few geometries which I want to planarize for laser cutting. Of these one was this shape, I started with this as I thought it was simple to understand.

Yes, I am working on one hexagonal planarization now and it is impossible to remove those odd shaped surfaces. It is good to know that the same technique can be used for hexagonal faces as well. I will keep you posted with what happens with the final output of the hexagonal model.

Thank you for all your help once again :slight_smile:

Hi @Joseph_Oster, sorry to bother you but I am having a trouble in unrolling the polysurfaces. I have two arches with planarized faces and inner beams (which you helped in making, in this post). The arch which has quad faces is working little okay but the other with triangular faces is exploding.

I tried different unroll components from various plugins and it is giving me similar result. It will be really helpful if you could see and let me know what the error is.

PS - I have used Open Nest plugin in this file.

Thank you in advance.

unrollError.3dm (379.0 KB) unrollError (15.0 KB)