Draft WireToBSpline

    From FreeCAD Documentation

    Draft WireToBSpline.svg Draft WireToBSpline

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


    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


    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.


    • 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.


    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.


    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)