Well, I don’t think you will be able to make it automatically foolproof - Rhino’s Offset is classically unreliable with these types of forms. In this case, because you have joined lines and arcs, making it a degree 2 polycurve, plus those two small jogs in the middle of your “V” sides, plus perhaps the fact that the curve seam starts at one of the arc segments, it is a cocktail for disaster.
Offsets of less than the ‘jog’ of 1mm seem to work fine.
With manual testing, I find that moving the curve seam away from one of the arc segments to any corner where there are just two line segments also makes the offset work. So it might be possible to concoct a script running inside a script component in GH that will offset, check the result, if it is bad, move the curve seam, offset again etc. until it is OK… maybe. But that may not work for other curves.
Another thing that you could try in this case is extrude the curve, OffsetSrf the extrusion and then extract the offset border… that seems to work in normal Rhino here. Edit, ah, crap, you can’t offset a multiface brep in standard GH… only a single surface.
Edit 2:
OK, this seems to work - with at least with your curve:
- Offset Loose - reliable, but makes a self-intersecting curve
- Boundary Surface
- BrepEdges
- Join (En)
OLoose.gh (5.0 KB)
Edit 3: On closer inspection, it doesn’t work all that well on the uppermost arcs, which are multispan. Offset Loose offsets the control points, whereas Offset should have offset the arc exactly plus added some straight segments. So those offset arcs are actually no longer arcs, they are degree 2 splines and the offset distance is not correct in that area.
Edit 4… Well, I should have tested your original premise first - with the GH standard offset component, I am getting a correct offset - better than Rhino native. Hmmm…
ONormal.gh (4.8 KB)