M_Rhino_Geometry_Collections_NurbsCurveKnotList_InsertKnot - mcneel/rhinocommon-api-docs GitHub Wiki

NurbsCurveKnotList.InsertKnot 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) Version: Rhino 6.0

Syntax

C#

public bool InsertKnot(
	double value
)

VB

Public Function InsertKnot ( 
	value As Double
) As Boolean

Parameters

 

value
Type: System.Double
Knot value to insert.

Return Value

Type: Boolean
true on success, false on failure.

Examples

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()

Version Information

Supported in: 6.0.16224.21491, 5D58w

See Also

Reference

NurbsCurveKnotList Class
InsertKnot Overload
Rhino.Geometry.Collections Namespace

⚠️ **GitHub.com Fallback** ⚠️