| | |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | """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 |
| |
|
| | |
| |
|