# geometry nodes - even thickness boundary

I'm trying to procedurally create a shape with even (horizontal) thickness. I created this geometry nodes test. The left 3 nodes create the shape - and the right 3 nodes scale the generated shape down by 0.8 on only 2 axes to create a hole in the middle using a boolean modifier:

The result is behaving as expected, except the walls have uneven thickness - you can see the top wall is the thickest and the right side walls are thinner:

The desired result should have walls with even thickness:

To create this correct result example - I applied the geometry node modifier - deleted the top and bottom faces and added a solidify modifier.

The question is how to do this completely in geometry nodes without modifier WITHOUT changing the left three nodes. I know you could easily scale each cube individually before the Union modifier on the left in example node setup and it would produce correct result - the left three nodes are just used to create a sample input.

I'm trying to find a solution that does something similar to solidify on only 2 axis so it works with arbitrary input shapes that have a flat top and bottom.

I think I need to do something like iterate around each edge?

There's always this option, to solidify a Mesh shape?

No need for the first Mesh to Curve node if you start with a curve.. or you could generate the shape inside GN...

.. for example, you could take your union of cubes, and intersect with a plane, to create the curve to be swept:

• Nice topology, and since all vertices are on edges, you should be able to bevel to round the edges for an actual constant thickness if you wanted it! Jan 4, 2022 at 17:57
• @MarkusvonBroady just to be even smirkier than you, >8D ... I tried it by filleting the path curve inside GN, but I got nasty overlaps :( . Jan 4, 2022 at 18:01

Use Vertex Normals (it's funny that the question about vertex normals was bumped at the same time this question was asked, was it a hint, @Chris?). Since normals are normalized (...) you want to remove the Z component and normalize again (otherwise the thickness would depend on Z component of the normal - the larger the component, the smaller other components and so thickness), then multiply by thickness to get an offset for the cutter (or a base if you don't want to multiply by a negative number - I did it this way for a nicer noodle layout...).

The Position and connected Vector Math > Multiply nodes are not required, but people with OCD might be unable to cope with a cutter having co-planar faces with the base.

Just in case this answer is not smirky enough, you didn't specify what you mean by even thickness - a truly even thickness would require rounded corners on both sides...