Offset surface with constant XY cross section?

I’m trying to come up with a general solution to offset a surface, but only in the XY directions and with a constant cross section.

This is for 3D printing, where a slicer will start at the world XY plane and step upwards in Z. My requirement is for each horizontal slice to have a perimeter that’s the same thickness, so it is printed with the same number and width of outlines. I think a side effect of this will be an offset that has the same Z bounds as the original.

A simple surface offset produces offsets in XYZ depending on the surface normals:

This is a sample with a twisted cone, but I expect actual geometries to be more complex (though I could possibly limit them to closed curves, if that simplifies).

I’m at a loss on even where to start. Advice?

offsetsurface.gh (6.3 KB)

Sometimes you ask a question, and the question suggests an answer. Slicer + closed curves got me to the attached. Somewhat limited, but it’s a start.

offsetsurface.gh (11.7 KB)

It would seem that if need more control over the intermediate areas, you might have to control them yourself, by using intermediate curves that describe the midpoint, or wherever you need it.

You could make a series of curves, perhaps by even doing a Section, and adjust them and perhaps Rebuild them as necessary. A Section might have a surprising amount of nodes, which you might want to rebuild. The curves can be lofted.

Alternatively, you can use Sweep2 to go around it vertically in this case, depending on where you need control over its shape.