Successive use of offset curve component corrupts result

I had a bit of a disaster on a project recently. The source of the problem was that in creating a notch for some bent plywood to sit in, I’d used Offset Curve on the output of a previous Offset Curve.


  • Blue is the original curve.
  • White is the original curve offset 0.125 units
  • Red is the error, which is an offset of the white curve of 0.335 units, creating a non-arc that made my notch too tight.
  • green is the desired result, achieved by a single offset of 0.46 units.

Is this an error that happens only in certain circumstances? The original curve here is a polycurve comrised of arcs and lines.

Do I need to make sure all my offsets are done from the original curve using addition, rather than successive offsets in order to avoid this problem?

Why did this happen?

Attached, for reference, is the definition, which was intended to quickly make polycurves into CNC routed pedestals, with markups pointing at the good and bad offsets. Curve+Straight Pedestal (72.9 KB)

Sounds to me like you’ve answered your own question.
“Why did this happen?” often isn’t as useful as “What can I do about this?”, a problem you have solved.

The conditions it’s likely to happen in matter too. Like, is it only for polycurves made of degree 1 and degree 2 curves? or is it for every curve?

What is your Rhino document absolute tolerance?

Offset typically does not create an exact result, because that would require a Nurbs curve with thousands upon thousands of control points. So it generates something which is supposedly correct just within tolerance.

Ideally anyway, it could be there’s a bug as well of course. I’ll have to check that once I get in to the office.

You could try using the offset curve loose component instead. It preserves your control point structure and so it can keep things from getting needlessly messy. Just be sure the control point structure of your starting curve is amenable to this type of operation and this kind of offset is what you actually want.

1 Like