M_Rhino_Geometry_Collections_NurbsCurveKnotList_InsertKnot - mcneel/rhinocommon-api-docs GitHub Wiki
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) Version: Rhino 6.0
C#
public bool InsertKnot(
double value
)
VB
Public Function InsertKnot (
value As Double
) As Boolean
- value
- Type: System.Double
Knot value to insert.
Type: Boolean
true on success, false on failure.
VB
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
C#
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;
}
}
Python
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()
Supported in: 6.0.16224.21491, 5D58w
NurbsCurveKnotList Class
InsertKnot Overload
Rhino.Geometry.Collections Namespace