The RhinoSimplifyCurve SDK function replaces each curve segment that has the geometry of a line or an arc with a true line or arc.
Public Overrides Function RunCommand(ByVal context As RMA.Rhino.IRhinoCommandContext) As RMA.Rhino.IRhinoCommand.result
Dim go As New MRhinoGetObject
go.SetCommandPrompt("Select curve")
go.SetGeometryFilter(IRhinoGetObject.GEOMETRY_TYPE_FILTER.curve_object)
go.GetObjects(1, 1)
If (go.CommandResult() <> IRhinoCommand.result.success) Then
Return go.CommandResult()
End If
Dim objref As MRhinoObjRef = go.Object(0)
Dim obj As IRhinoObject = objref.Object()
If (obj Is Nothing) Then
Return IRhinoCommand.result.failure
End If
Dim crv As IOnCurve = OnCurve.ConstCast(obj.Geometry())
If (crv Is Nothing) Then
Return IRhinoCommand.result.failure
End If
Dim dup_crv As OnCurve = crv.DuplicateCurve()
Dim flags As Integer = 0
Dim dist_tol As Double = context.m_doc.AbsoluteTolerance()
Dim angle_tol As Double = context.m_doc.AngleToleranceRadians()
Dim rc As Boolean = RhUtil.RhinoSimplifyCurve(dup_crv, flags, dist_tol, angle_tol)
If (rc = True) Then
context.m_doc.AddCurveObject(dup_crv)
context.m_doc.DeleteObject(objref)
context.m_doc.Redraw()
Return IRhinoCommand.result.success
Else
Return IRhinoCommand.result.failure
End If
End Function