Increase NURBS Curve Degree
Demonstrates how to increase the degree of a NURBS curve.
partial class Examples
{
public static Result NurbsCurveIncreaseDegree(RhinoDoc doc)
{
ObjRef obj_ref;
var rc = RhinoGet.GetOneObject(
"Select curve", false, ObjectType.Curve, out obj_ref);
if (rc != Result.Success) return rc;
if (obj_ref == null) return Result.Failure;
var curve = obj_ref.Curve();
if (curve == null) return Result.Failure;
var nurbs_curve = curve.ToNurbsCurve();
int new_degree = -1;
rc = RhinoGet.GetInteger(string.Format("New degree <{0}...11>", nurbs_curve.Degree), true, ref new_degree,
nurbs_curve.Degree, 11);
if (rc != Result.Success) return rc;
rc = Result.Failure;
if (nurbs_curve.IncreaseDegree(new_degree))
if (doc.Objects.Replace(obj_ref.ObjectId, nurbs_curve))
rc = Result.Success;
RhinoApp.WriteLine("Result: {0}", rc.ToString());
doc.Views.Redraw();
return rc;
}
}
Partial Friend Class Examples
Public Shared Function NurbsCurveIncreaseDegree(ByVal doc As RhinoDoc) As Result
Dim obj_ref As ObjRef = Nothing
Dim rc = RhinoGet.GetOneObject("Select curve", False, ObjectType.Curve, obj_ref)
If rc IsNot Result.Success Then
Return rc
End If
If obj_ref Is Nothing Then
Return Result.Failure
End If
Dim curve = obj_ref.Curve()
If curve Is Nothing Then
Return Result.Failure
End If
Dim nurbs_curve = curve.ToNurbsCurve()
Dim new_degree As Integer = -1
rc = RhinoGet.GetInteger(String.Format("New degree <{0}...11>", nurbs_curve.Degree), True, new_degree, nurbs_curve.Degree, 11)
If rc IsNot Result.Success Then
Return rc
End If
rc = Result.Failure
If nurbs_curve.IncreaseDegree(new_degree) Then
If doc.Objects.Replace(obj_ref.ObjectId, nurbs_curve) Then
rc = Result.Success
End If
End If
RhinoApp.WriteLine("Result: {0}", rc.ToString())
doc.Views.Redraw()
Return rc
End Function
End Class
from Rhino import *
from Rhino.Commands import *
from Rhino.Input import *
from Rhino.DocObjects import *
from scriptcontext import doc
def RunCommand():
rc, obj_ref = RhinoGet.GetOneObject("Select curve", False, ObjectType.Curve)
if rc != Result.Success: return rc
if obj_ref == None: return Result.Failure
curve = obj_ref.Curve()
if curve == None: return Result.Failure
nurbs_curve = curve.ToNurbsCurve()
new_degree = -1
rc, new_degree = RhinoGet.GetInteger("New degree <{0}...11>".format(nurbs_curve.Degree), True, new_degree, nurbs_curve.Degree, 11)
if rc != Result.Success: return rc
rc = Result.Failure
if nurbs_curve.IncreaseDegree(new_degree):
if doc.Objects.Replace(obj_ref.ObjectId, nurbs_curve):
rc = Result.Success
print "Result: {0}".format(rc)
doc.Views.Redraw()
return rc
if __name__ == "__main__":
RunCommand()