RhinoCommon API
NurbsCurveKnotListInsertKnot Method (Double) |
Inserts a knot and update control point locations.
Does not change parameterization or locus of curve.
Namespace: Rhino.Geometry.Collections
Assembly: RhinoCommon (in RhinoCommon.dll)

Parameters
- value
- Type: SystemDouble
Knot value to insert.
Return Value
Type: Booleantrue on success, false on failure.

using Rhino.Commands; using Rhino.DocObjects; partial class Examples { public static Rhino.Commands.Result InsertKnot(Rhino.RhinoDoc doc) { const ObjectType filter = Rhino.DocObjects.ObjectType.Curve; Rhino.DocObjects.ObjRef objref; Result rc = Rhino.Input.RhinoGet.GetOneObject("Select curve for knot insertion", false, filter, out objref); if (rc != Rhino.Commands.Result.Success) return rc; Rhino.Geometry.Curve curve = objref.Curve(); if (null == curve) return Rhino.Commands.Result.Failure; Rhino.Geometry.NurbsCurve nurb = curve.ToNurbsCurve(); if (null == nurb) return Rhino.Commands.Result.Failure; Rhino.Input.Custom.GetPoint gp = new Rhino.Input.Custom.GetPoint(); gp.SetCommandPrompt("Point on curve to add knot"); gp.Constrain(nurb, false); gp.Get(); if (gp.CommandResult() == Rhino.Commands.Result.Success) { double t; Rhino.Geometry.Curve crv = gp.PointOnCurve(out t); if( crv!=null && nurb.Knots.InsertKnot(t) ) { doc.Objects.Replace(objref, nurb); doc.Views.Redraw(); } } return Rhino.Commands.Result.Success; } }
Imports Rhino.DocObjects Partial Class Examples Public Shared Function InsertKnot(ByVal doc As Rhino.RhinoDoc) As Rhino.Commands.Result Dim rc As Rhino.Commands.Result Const filter As ObjectType = Rhino.DocObjects.ObjectType.Curve Dim objref As Rhino.DocObjects.ObjRef = Nothing rc = Rhino.Input.RhinoGet.GetOneObject("Select curve for knot insertion", False, filter, objref) If rc <> Rhino.Commands.Result.Success Then Return rc End If Dim curve As Rhino.Geometry.Curve = objref.Curve() If curve Is Nothing Then Return Rhino.Commands.Result.Failure End If Dim nurb As Rhino.Geometry.NurbsCurve = curve.ToNurbsCurve() If nurb Is Nothing Then Return Rhino.Commands.Result.Failure End If Dim gp As New Rhino.Input.Custom.GetPoint() gp.SetCommandPrompt("Point on curve to add knot") gp.Constrain(nurb, False) gp.[Get]() If gp.CommandResult() = Rhino.Commands.Result.Success Then Dim t As Double Dim crv As Rhino.Geometry.Curve = gp.PointOnCurve(t) If crv IsNot Nothing AndAlso nurb.Knots.InsertKnot(t) Then doc.Objects.Replace(objref, nurb) doc.Views.Redraw() End If End If Return Rhino.Commands.Result.Success End Function End Class
import Rhino import scriptcontext def InsertKnot(): filter = Rhino.DocObjects.ObjectType.Curve rc, objref = Rhino.Input.RhinoGet.GetOneObject("Select curve for knot insertion", False, filter) if rc != Rhino.Commands.Result.Success: return rc curve = objref.Curve() if not curve: return Rhino.Commands.Result.Failure nurb = curve.ToNurbsCurve() if not nurb: return Rhino.Commands.Result.Failure gp = Rhino.Input.Custom.GetPoint() gp.SetCommandPrompt("Point on curve to add knot") gp.Constrain(nurb, False) gp.Get() if gp.CommandResult() == Rhino.Commands.Result.Success: crv, t = gp.PointOnCurve() if crv and nurb.Knots.InsertKnot(t): scriptcontext.doc.Objects.Replace(objref, nurb) scriptcontext.doc.Views.Redraw() return Rhino.Commands.Result.Success if __name__=="__main__": InsertKnot()

Rhino for Mac
Supported in: 5.4Rhino for Windows
Supported in: 6.8