I wish to draw a NURBS curve of degree 7 and with 8 control points. I’ve written the following code but this is not working somehow .Could anyone please help me out with this.Thanks.
import Rhino
import scriptcontext
def TestNurbsCurve():
degree = 7
cv_count = 8
knot_count = cv_count + degree - 1
order = degree + 1
cvs = []
cvs.append(Rhino.Geometry.Point3d(0.0, 0.0, 0.0))
cvs.append(Rhino.Geometry.Point3d(458.0, 0.0, 0.0))
cvs.append(Rhino.Geometry.Point3d(458.0, 229.0, 0.0))
cvs.append(Rhino.Geometry.Point3d(458.0, 458.0, 0.0))
cvs.append(Rhino.Geometry.Point3d(0.0, 458.0, 0.0))
cvs.append(Rhino.Geometry.Point3d(458.0, 686.0, 0.0))
cvs.append(Rhino.Geometry.Point3d(0.0, 915.0, 0.0))
cvs.append(Rhino.Geometry.Point3d(458.0, 915.0, 0.0))
knots = []
knots.append(0.0)
knots.append(0.0)
knots.append(0.0)
knots.append(1.0)
knots.append(2.0)
knots.append(3.0)
knots.append(3.0)
knots.append(3.0)
knots.append(5.0)
knots.append(5.0)
knots.append(5.0)
knots.append(6.0)
knots.append(6.0)
knots.append(6.0)
curve = Rhino.Geometry.NurbsCurve(degree, False, order, cv_count)
for i in xrange(cv_count):
curve.Points.SetPoint(i, cvs[i])
for i in xrange(knot_count):
curve.Knots[i] = knots[i]
if curve.IsValid:
scriptcontext.doc.Objects.AddCurve(curve)
scriptcontext.doc.Views.Redraw()
TestNurbsCurve()