Proposal: Simplify option for some commands

As stated in this thread, Fin should provide output within model tolerance, have a Loose option, and have an option for simplification within a tolerance.

Expanding on this,

  1. Other curve/surface-creating commands should not only have a Loose option, but also a Simplify option (available only when Loose=No).
  2. If a tolerance override option is not provided, the sum of the starting geometry and the simplification would be within model tolerance.
  3. The simplification would be controlled by global settings found in Rhino’s application options.

For example, the following could be the global simplification options for curves.

Checkbox to apply simplification to curve data in B-reps.
Radio buttons: Preserve curve end condition: G0, G1, G2, …
Text box: Degrees of NURBS
Text box: Maximum span count of NURBS
Checkbox: Minimize curvature / fair

Allowed items (checkboxes reorderable to indicate priority)

  • LineCurve
  • ArcCurve
  • PolyCurve
    • LineCurve segments
    • ArcCurve segments
  • Rational
  • Multi-span NURBS

NURBS simplfication, single or as part of PolyCurve (more reorderable checkboxes)

  • Rebuild to single-span
  • RemoveKnots to single-span
  • Rebuild to multi-span
  • MakeUniform
  • Remove knots to NURBS with maximum internal knot multiplicity of 1. (Output will likely be non-uniform.)
  • Remove knots to NURBS with maximum internal knot multiplicity of degree - n, where n is user-defined. (This guarantees minimum continuity within the curve.)
  • FitCrv
  • RebuildCrvNonUniform (Degree-3 output only)
  • If rational, set all weights to 1.0