GetPointConstrain Method (Curve, Boolean) |
Namespace: Rhino.Input.Custom
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; } }
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()