| |
|
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| """Provides functions to create BezCurve objects.""" |
| |
| |
| |
|
|
| |
| |
| import FreeCAD as App |
| import draftutils.utils as utils |
| import draftutils.gui_utils as gui_utils |
|
|
| from draftutils.translate import translate |
| from draftobjects.bezcurve import BezCurve |
|
|
| if App.GuiUp: |
| from draftviewproviders.view_bezcurve import ViewProviderBezCurve |
|
|
|
|
| def make_bezcurve(pointslist, closed=False, placement=None, face=None, support=None, degree=None): |
| """make_bezcurve(pointslist, [closed], [placement]) |
| |
| Creates a Bezier Curve object from the given list of vectors. |
| |
| Parameters |
| ---------- |
| pointlist : [Base.Vector] |
| List of points to create the polyline. |
| Instead of a pointslist, you can also pass a Part Wire. |
| TODO: Change the name so! |
| |
| closed : bool |
| If closed is True or first and last points are identical, |
| the created BSpline will be closed. |
| |
| placement : Base.Placement |
| If a placement is given, it is used. |
| |
| face : Bool |
| If face is False, the rectangle is shown as a wireframe, |
| otherwise as a face. |
| |
| support : |
| TODO: Describe |
| |
| degree : int |
| Degree of the BezCurve |
| """ |
| if not App.ActiveDocument: |
| App.Console.PrintError("No active document. Aborting\n") |
| return |
| if not isinstance(pointslist, list): |
| nlist = [] |
| for v in pointslist.Vertexes: |
| nlist.append(v.Point) |
| pointslist = nlist |
| if placement: |
| utils.type_check([(placement, App.Placement)], "make_bezcurve") |
| if len(pointslist) == 2: |
| fname = "Line" |
| else: |
| fname = "BezCurve" |
| obj = App.ActiveDocument.addObject("Part::FeaturePython", fname) |
| obj.addExtension("Part::AttachExtensionPython") |
| BezCurve(obj) |
| obj.Points = pointslist |
| if degree: |
| obj.Degree = degree |
| else: |
| import Part |
|
|
| obj.Degree = min((len(pointslist) - (1 * (not closed))), Part.BezierCurve().MaxDegree) |
| obj.Closed = closed |
| obj.AttachmentSupport = support |
| if face is not None: |
| obj.MakeFace = face |
| obj.Proxy.resetcontinuity(obj) |
| if placement: |
| obj.Placement = placement |
| if App.GuiUp: |
| ViewProviderBezCurve(obj.ViewObject) |
| |
| |
| gui_utils.format_object(obj) |
| gui_utils.select(obj) |
|
|
| return obj |
|
|
|
|
| makeBezCurve = make_bezcurve |
|
|
| |
|
|