Draft WireToBSpline

From FreeCAD Documentation
Jump to navigation Jump to search
This page contains changes which are not marked for translation.
Under construction icon-blue.svg
This documentation is work in progress. Please don't mark it as translatable since it will change the next hours and days.
Other languages:
Deutsch • ‎English • ‎Türkçe • ‎español • ‎français • ‎italiano • ‎română • ‎svenska • ‎čeština • ‎русский
Arrow-left.svg Previous: Draft Downgrade.svg Downgrade

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 tool converts Draft Wire.svg Draft Wires to Draft BSpline.svg Draft BSplines, and vice-versa.

Draft Wire2BSpline example.jpg

Convert a wire to a B-Spline, and a closed B-Spline to a closed wire


  1. Select a Draft Wire or a Draft BSpline. The tool is disabled if no object is selected.
  2. Press the Draft WireToBSpline.svg Draft WireToBSpline button.

A new object will be created; the original object will not be modified.

Note: if a closed wire with sharp edges is used to create a spline, the new object may have self intersecting curve segments, and may not be visible in the 3D view. If this is the case, manually set DataMake Face to false to see the new shape, or set DataClosed to false to create an open shape.


There are no options for this tool. Either it works with the selected object or not.


See also: Autogenerated API documentation and FreeCAD Scripting Basics.

There is no programming interface available for the WireToBSpline tool; however, creating a new object from the points of another is simple.

The Points attribute of an object is a list with the points that comprise that object; this list can be passed to functions that build geometry. Each point is defined by its FreeCAD.Vector, with units in millimeters.


import FreeCAD, Draft

# Make a spline from the points of a wire
p1 = FreeCAD.Vector(1000, 1000, 0)
p2 = FreeCAD.Vector(2000, 1000, 0)
p3 = FreeCAD.Vector(2500, -1000, 0)
p4 = FreeCAD.Vector(3500, -500, 0)

base_wire = Draft.makeWire([p1, p2, p3, p4])

points1 = base_wire.Points
spline = Draft.makeBSpline(points1)

# Make a wire from the points of a spline
base_spline = Draft.makeBSpline([-p1, -1.3*p2, -1.2*p3, -2.1*p4])

points2 = base_spline.Points
Wire = Draft.makeWire(points2)

Arrow-left.svg Previous: Draft Downgrade.svg Downgrade