Draft WireToBSpline

    From FreeCAD Documentation

    Draft WireToBSpline.svg Draft WireToBSpline

    Menu location
    Modification → Wire to B-spline
    Workbenches
    Draft, Arch
    Default shortcut
    None
    Introduced in version
    -
    See also
    Draft Wire, Draft BSpline

    Description

    The Draft WireToBSpline.svg Draft WireToBSpline command converts Draft Wires to Draft BSplines and vice versa.

    Draft Wire2BSpline example.jpg

    Converting a Draft Wire to a Draft BSpline, and a closed Draft BSpline to a closed Draft Wire

    Usage

    1. Select a Draft Wire or a Draft BSpline.
    2. There are several ways to invoke the command:
      • Press the Draft WireToBSpline.svg Draft WireToBSpline button.
      • Select the Modification → Draft WireToBSpline.svg Wire to B-spline option from the menu.
    3. A new object is created.

    Notes

    • The command may result in a closed, self-intersecting Draft Wire or Draft BSpline with a face. Such an object will not display properly in the 3D view. Its DataMake Face property, or its DataClosed property, must be set to false.

    Scripting

    See also: Autogenerated API documentation and FreeCAD Scripting Basics.

    To convert a wire to a bspline, or vice versa, pass the Points property of the source object to the make_bspline method, or respectively the make_wire method, of the Draft module.

    Example:

    import FreeCAD as App
    import Draft
    
    doc = App.newDocument()
    
    p1 = App.Vector(1000, 1000, 0)
    p2 = App.Vector(2000, 1000, 0)
    p3 = App.Vector(2500, -1000, 0)
    p4 = App.Vector(3500, -500, 0)
    
    base_wire = Draft.make_wire([p1, p2, p3, p4])
    base_spline = Draft.make_bspline([-p1, -1.3*p2, -1.2*p3, -2.1*p4])
    
    points1 = base_wire.Points
    spline_from_wire = Draft.make_bspline(points1)
    
    points2 = base_spline.Points
    wire_from_spline = Draft.make_wire(points2)
    
    doc.recompute()