From 567824762885fd7407ddadf14aaab4483af39dff Mon Sep 17 00:00:00 2001 From: wmayer Date: Sun, 27 Oct 2013 12:56:05 +0100 Subject: [PATCH] 0000895: Part.BSplineCurve: allow to set degree and mutliplicites when calling constructor. --- src/Mod/Part/App/BSplineCurvePy.xml | 23 ++++++++++++++++++++++- src/Mod/Part/App/BSplineCurvePyImp.cpp | 4 ++-- 2 files changed, 24 insertions(+), 3 deletions(-) diff --git a/src/Mod/Part/App/BSplineCurvePy.xml b/src/Mod/Part/App/BSplineCurvePy.xml index 2a8510a79..704b25167 100644 --- a/src/Mod/Part/App/BSplineCurvePy.xml +++ b/src/Mod/Part/App/BSplineCurvePy.xml @@ -275,7 +275,28 @@ from the knots table of this B-Spline curve. Builds a B-Spline by a lists of Poles, Mults, Knots. - arguments: poles (sequence of Base.Vector), [mults , knots, periodic, degree, weights (sequence of Base.Vector), CheckRational] + arguments: poles (sequence of Base.Vector), [mults , knots, periodic, degree, weights (sequence of float), CheckRational] + + Examples: + from FreeCAD import Base + import Part + V=Base.Vector + poles=[V(-10,-10),V(10,-10),V(10,10),V(-10,10)] + + # non-periodic spline + n=Part.BSplineCurve() + n.buildFromPolesMultsKnots(poles,(3,1,3),(0,0.5,1),False,2) + Part.show(n.toShape()) + + # periodic spline + p=Part.BSplineCurve() + p.buildFromPolesMultsKnots(poles,(1,1,1,1,1),(0,0.25,0.5,0.75,1),True,2) + Part.show(p.toShape()) + + # periodic and rational spline + r=Part.BSplineCurve() + r.buildFromPolesMultsKnots(poles,(1,1,1,1,1),(0,0.25,0.5,0.75,1),True,2,(1,0.8,0.7,0.2)) + Part.show(r.toShape()) diff --git a/src/Mod/Part/App/BSplineCurvePyImp.cpp b/src/Mod/Part/App/BSplineCurvePyImp.cpp index 845840b55..99fa7aca0 100644 --- a/src/Mod/Part/App/BSplineCurvePyImp.cpp +++ b/src/Mod/Part/App/BSplineCurvePyImp.cpp @@ -904,7 +904,7 @@ PyObject* BSplineCurvePy::buildFromPolesMultsKnots(PyObject *args, PyObject *key Base::Vector3d pnt = v.toVector(); occpoles(index++) = gp_Pnt(pnt.x,pnt.y,pnt.z); } - //Calculate ne number of knots + //Calculate the number of knots if (mults != Py_None && knots != Py_None) { number_of_knots = PyObject_Length(mults); if (PyObject_Length(knots) != number_of_knots) { @@ -1006,8 +1006,8 @@ PyObject* BSplineCurvePy::buildFromPolesMultsKnots(PyObject *args, PyObject *key Standard_CString msg = e->GetMessageString(); PyErr_SetString(PyExc_Exception, msg ? msg : ""); return 0; - } } +} PyObject* BSplineCurvePy::toBezier(PyObject *args)