Draft Workbench

Introduction
The Draft Workbench allows you to draw simple 2D objects, and offers several tools to modify them afterwards. It also provides tools to define a working plane, a grid, and a snapping system to precisely control the position of your geometry.

The created 2D objects can be used for general drafting in a way similar as is done with Inkscape or Autocad. These 2D shapes can also be used as the base components of 3D objects created with other workbenches, for example, the Part and  Arch Workbenches. Conversion of Draft objects to Sketches is also possible, which means that the shapes can also be used with the  PartDesign Workbench for the creation of solid bodies.

FreeCAD is primarily a 3D modelling application, and thus its 2D tools aren't as advanced as in other drawing programs. If your primary goal is the production of complex 2D drawings and DXF files, and you don't need 3D modelling, you may wish to consider a dedicated software program for technical drafting such as LibreCAD, QCad, or others.



Drawing objects
These are tools for creating objects.


 * [[Image:Draft_Line.svg|32px]] Line: draws a line segment between two points.
 * [[Image:Draft_Wire.svg|32px]] Polyline: draws a line made of multiple line segments (polyline).
 * [[Image:Draft_Fillet.svg|32px]] Fillet: draws a fillet (rounded corner) or a chamfer (straight line) between two simple Lines.
 * [[Image:Draft_Arc.svg|32px]] Arc: draws an arc segment from center, radius, start angle and end angle.
 * [[Image:Draft_Arc_3Points.svg|32px]] Arc 3Points: draws a circular arc segment from three points that are located in the circumference.
 * [[Image:Draft_Circle.svg|32px]] Circle: draws a circle from center and radius.
 * [[Image:Draft_Ellipse.svg|32px]] Ellipse: draws an ellipse from two corner points.
 * [[Image:Draft_Rectangle.svg|32px]] Rectangle: draws a rectangle from two corner points.
 * [[Image:Draft_Polygon.svg|32px]] Polygon: draws a regular polygon from center, radius, and number of sides.
 * [[Image:Draft_BSpline.svg|32px]] BSpline: draws a B-Spline from a series of points.
 * [[Image:Draft_CubicBezCurve.svg|32px]] Cubic Bezier Curve: draws a Bezier curve of third degree by dragging two points.
 * [[Image:Draft_BezCurve.svg|32px]] Bezier Curve: draws a Bezier curve from a series of points.
 * [[Image:Draft_Point.svg|32px]] Point: inserts a point object.
 * [[Image:Draft_Facebinder.svg|32px]] Facebinder: creates a new object from selected faces on existing objects.
 * [[Image:Draft_ShapeString.svg|32px]] ShapeString: inserts a compound shape representing a text string at a given point.

Annotation objects

 * [[Image:Draft_Text.svg|32px]] Text: draws a multi-line text annotation.
 * [[Image:Draft_Dimension.svg|32px]] Dimension: draws a dimension annotation.
 * [[Image:Draft_Label.svg|32px]] Label: places a label with an arrow pointing to a selected element.
 * [[Image:Draft_AnnotationStyleEditor.svg|32px]] Annotation style editor: opens an editor to change the annotation style of these objects.

Modifying objects
These are tools for modifying existing objects. They work on selected objects, but if no object is selected, you will be invited to select one.

Many operation tools (move, rotate, array, etc.) also work on solid objects (Part, PartDesign, Arch, etc.).


 * [[Image:Draft_Move.svg|32px]] Move: moves objects from one location to another.
 * [[Image:Draft_Rotate.svg|32px]] Rotate: rotates objects from a start angle to an end angle.
 * [[Image:Draft_Scale.svg|32px]] Scale: scales selected objects around a base point.
 * [[Image:Draft_Mirror.svg|32px]] Mirror: mirrors the selected objects.
 * [[Image:Draft_Offset.svg|32px]] Offset: offsets segments of an object a certain distance.
 * [[Image:Draft_Trimex.svg|32px]] Trim/Extend (Trimex): trims or extends an object.
 * [[Image:Draft_Stretch.svg|32px]] Stretch: stretches the selected objects.


 * [[Image:Draft_Clone.svg|32px]] Clone: clones the selected objects.
 * [[Image:Draft_Array.svg|32px]] Array tools.
 * [[Image:Draft_OrthoArray.svg|32px]] Ortho Array: creates an orthogonal array from the selected object. It can also create App Link copies.
 * Draft_PolarArray.svg Polar Array: creates an array in a polar pattern, that is, sweeping an angle. It can also create App Link copies.
 * Draft_CircularArray.svg Circular Array: creates an array in a circular pattern, that is, starting from a center and moving outwards radially. It can also create App Link copies.
 * [[Image:Draft_PathArray.svg|32px]] Path Array: creates an array of objects by placing the copies along a path.
 * [[Image:Draft_PathLinkArray.svg|32px]] Path LinkArray: like [[Image:Draft_PathArray.svg|32px]] Path Array, but creates App Links instead of regular copies.
 * [[Image:Draft_PointArray.svg|32px]] Point Array: creates an array of objects by placing the copies at certain points.
 * Draft_PointLinkArray.svg Point LinkArray: like [[Image:Draft_PointArray.svg|32px]] Point Array, but creates App Links instead of regular copies.


 * [[Image:Draft_Edit.svg|32px]] Edit: edits a selected object.
 * [[Image:Draft_SubelementHighlight.svg|32px]] Subelement highlight: enters an edit mode that allows editing different objects.


 * [[Image:Draft_Join.svg|32px]] Join: joins lines together into a single wire.
 * [[Image:Draft_Split.svg|32px]] Split: splits a wire into two at a point.
 * [[Image:Draft_Upgrade.svg|32px]] Upgrade: upgrades objects into a higher-level object.
 * [[Image:Draft_Downgrade.svg|32px]] Downgrade: downgrades objects into lower-level objects.


 * [[Image:Draft_WireToBSpline.svg|32px]] Wire to BSpline: converts a wire to a B-Spline and vice-versa.
 * [[Image:Draft_Draft2Sketch.svg|32px]] Draft to Sketch: converts a Draft object to a Sketcher Workbench Sketch and vice-versa.
 * [[Image:Draft_Slope.svg|32px]] Slope: changes the elevation slope of the currently selected Draft Line or Draft Wire.
 * [[Image:Draft_FlipDimension.svg|32px]] Flip Dimension: flips the orientation of the text of a Draft Dimension.


 * [[Image:Draft_Shape2DView.svg|32px]] Shape 2D View: creates a 2D object which is a flattened 2D view of a 3D object.

Draft Tray
The Draft Tray allows selecting the working plane, defining style settings, toggling construction mode, and specifying the active layer or group.



Its tools are also available in the menu:


 * [[Image:Draft_SelectPlane.svg|32px]] Select Plane: selects the current Draft working plane.


 * [[Image:Draft_SetStyle.svg|32px]] Set style: sets the default style for new objects.


 * [[Image:Draft_ToggleConstructionMode.svg|32px]] Toggle construction mode: switches Draft construction mode on or off.


 * [[Image:Draft_AutoGroup.svg|32px]] AutoGroup: changes the active Draft Layer or, optionally, the active Std Group or group-like Arch object.

Draft annotation scale widget
With the Draft annotation scale widget the Draft annotation scale can be specified.



Draft snap widget
The Draft snap widget can be used as an alternative for the Draft Snap toolbar.



Draft Snap toolbar
The Draft Snap toolbar allows selecting the active snap options. The buttons belonging to active options stay depressed. For general information about snapping see: Draft Snap.


 * [[Image:Draft_Snap_Lock.svg|32px]] Toggle snap: toggles object snapping globally on or off.
 * [[Image:Draft_Snap_Endpoint.svg|32px]] Endpoint: snaps to the endpoints of line, arc and spline segments.
 * [[Image:Draft_Snap_Midpoint.svg|32px]] Midpoint: snaps to the middle point of line and arc segments.
 * [[Image:Draft_Snap_Center.svg|32px]] Center: snaps to the center point of circles, arcs and faces, WP proxies and Building parts
 * [[Image:Draft_Snap_Angle.svg|32px]] Angle: snaps to the special cardinal points of circles and arcs, at 45° and 90°.
 * [[Image:Draft_Snap_Intersection.svg|32px]] Intersection: snaps to the intersection of two line or arc segments. Hover the mouse over the two desired objects to activate their intersection snaps.
 * [[Image:Draft_Snap_Perpendicular.svg|32px]] Perpendicular: on line and arc segments, snaps perpendicularly to the latest point.
 * [[Image:Draft_Snap_Extension.svg|32px]] Extension: snaps on an imaginary line that extends beyond the endpoints of line segments. Hover the mouse over the desired object to activate its extension snap.
 * [[Image:Draft_Snap_Parallel.svg|32px]] Parallel: snaps on an imaginary line parallel to a line segment. Hover the mouse over the desired object to activate its parallel snap.
 * [[Image:Draft_Snap_Special.svg|32px]] Special: snaps on special points defined by the object.
 * [[Image:Draft_Snap_Near.svg|32px]] Near: snaps to the closest point or edge on the nearest object.
 * [[Image:Draft_Snap_Ortho.svg|32px]] Ortho: snaps on imaginary lines that cross the last point, and extend at 0°, 45° and 90°.
 * [[Image:Draft_Snap_Grid.svg|32px]] Grid: snaps to the intersections of the grid lines, if the grid is visible.
 * [[Image:Draft_Snap_WorkingPlane.svg|32px]] Working plane: always places the snapped point on the current working plane, even if you snap to a point outside that working plane.
 * [[Image:Draft_Snap_Dimensions.svg|32px]] Dimensions: shows temporary X and Y dimensions while snapping.
 * [[Image:Draft_ToggleGrid.svg|32px]] Toggle grid: toggles the visibility of the grid on or off.

Draft utility tools toolbar

 * [[Image:Draft_Layer.svg|32px]] Layer: creates a Layer in the current document, to which objects can be added to control object visibility and color. It replaces Draft VisGroup.
 * [[Image:Draft_WorkingPlaneProxy.svg|32px]] Working Plane Proxy: create a proxy object to store the current Working Plane position.
 * [[Image:Draft_ToggleDisplayMode.svg|32px]] Toggle display mode: switches the display mode of selected objects between "Flat Lines" and "Wireframe".
 * [[Image:Draft_AddToGroup.svg|32px]] Add to group: quickly adds selected objects to an existing Std Group.
 * [[Image:Draft_SelectGroup.svg|32px]] Select group contents: selects the contents of a selected Std Group or Draft Layer.
 * [[Image:Draft_AddConstruction.svg|32px]] Add to Construction group: add selected objects to the Construction group.
 * [[Image:Draft_Heal.svg|32px]] Heal: heals problematic Draft objects found in very old files.

Additional tools
The menu contains several tools. Most of them can also be accessed from toolbars or the Draft Tray and have already been mentioned above. For the following tools this is not the case:


 * [[Image:Draft_ToggleContinueMode.svg|32px]] Toggle continue mode: toggles the Draft continue mode on or off.
 * [[Image:Draft_ApplyStyle.svg|32px]] Apply current style: applies the current style to selected objects and groups.
 * [[Image:Draft_ShowSnapBar.svg|32px]] Show snap bar: shows the Draft Snap toolbar.

Additional features

 * Working plane: allows you to select a surface on which to build your shapes.
 * Snapping: place new points on special places on existing objects or on the grid.
 * Constraining: limits the cursor to horizontal or vertical movements relative to a previous point.
 * Construction mode: places created geometry objects in a dedicated group making it easier to switch them on and off.
 * Pattern: Draft objects with a face can display a hatch pattern.

Tree view context menu
The following additional options are available in the Tree view context menu:

Selection options
If there is a selection the context menu contains one additional sub-menu:
 * : a subset of the tools available in the main Draft Utilities menu.

Wire options
For a Draft Wire, Draft BSpline, Draft CubicBezCurve and Draft BezCurve this additional option is available:


 * [[Image:Draft_Edit.svg|32px]] Flatten this wire: flattens the wire based on its internal geometry. This option currently does not work properly.

Layer container options
For a Draft LayerContainer these additional options are available:


 * [[Image:Draft_Layer.svg|32px]] Merge layer duplicates: this option currently does not work.


 * [[Image:Draft_NewLayer.svg|32px]] Add new layer: adds a new layer to the current document.

Layer options
For a Draft Layer these additional options are available:


 * [[Image:button_right.svg|32px]] Activate this layer: makes the selected layer the active layer.


 * [[Image:Draft_SelectGroup.svg|32px]] Select layer contents: selects the objects inside the selected layer.

Working plane proxy options
For a Draft WorkingPlaneProxy these additional options are available:


 * [[Image:Draft_SelectPlane.svg|32px]] Write camera position: updates the camera settings stored in the working plane proxy.


 * [[Image:Draft_SelectPlane.svg|32px]] Write objects state: updates the visibility state of objects stored in the working plane proxy.

3D view context menu
The following additional options are available in the 3D view context menu:

No-selection options
If there is no selection the context menu contains one additional sub-menu:
 * : a subset of the tools available in the main Draft Utilities menu.

Selection options
If there is a selection the context menu contains two additional sub-menus:
 * : tools for drawing objects and modifying objects.
 * : a subset of the tools available in the main Draft Utilities menu.

Obsolete tools
These commands are obsolete but still available:


 * [[Image:Draft_Array.svg|32px]] Array: creates a polar or rectangular array from selected objects.


 * [[Image:Draft_Drawing.svg|32px]] Drawing: writes selected objects to a Drawing Workbench page.

These 3D view context menu options are still available when the Draft Wire, Draft BSpline, Draft CubicBezCurve or Draft BezCurve command is active but will be removed in the near future:


 * [[Image:Draft_UndoLine.svg|32px]] Undo last segment: use the button in the task panel of the command instead.


 * [[Image:Draft_FinishLine.svg|32px]] Finish line: use the button in the task panel of the command instead.


 * [[Image:Draft_CloseLine.svg|32px]] Close line: use the button in the task panel of the command instead.

Preferences

 * [[Image:Preferences-draft.svg|32px]] Preferences: general preferences for the working plane and the drawing tools.
 * [[Image:Preferences-import-export.svg|32px]] Import Export Preferences: preferences available for importing from and exporting to different file formats.

File formats
These are functions for opening, importing or exporting other file formats. Opening will open a new document with the contents of the file, while importing will append the contents of the file to the current document. Export will save the selected objects to a file. If nothing is selected, all objects will be exported. Be aware that the purpose of the Draft Module is to work with 2D objects, so those import routines focus only on 2D objects, and although DXF and OCA formats also support object definitions in 3D space (objects are not necessarily flat), they will not import volumetric objects such as meshes, 3D surfaces, etc., but rather lines, circles, texts or flat shapes. Currently supported file formats are: The Draft module provides FreeCAD with importers and exporters for the following file formats:


 * Autodesk .DXF: imports and exports Drawing Exchange Format files created with 2D CAD applications. See also FreeCAD and DXF Import.
 * Autodesk .DWG: imports and exports DWG files via the DXF importer, when the ODA Converter utility is installed. See also FreeCAD and DWG Import.
 * SVG: imports and exports Scalable Vector Graphics files created with vector drawing applications.
 * Open Cad format .OCA: imports and exports OCA/GCAD files, a potentially new open CAD file format.
 * Airfoil Data Format .DAT: imports DAT files describing Airfoil profiles.

Install importers

 * FreeCAD and DWG Import: Imports and exports DWG files
 * FreeCAD and DXF Import: Imports and exports DXF files

Unit tests
Test Workbench.

To run the unit tests of the workbench execute the following from the operating system terminal.

Scripting
The Draft tools can be used in macros and from the Python console by using the Draft API.

The workbench includes a module to create samples of all objects in a new document.

Use this to test that all objects are produced correctly.

Inspecting the code of this module is useful to understand how to use the programming interface.

Where is the toplevel directory where the software was installed; for example, in Linux it may be.



Tutorials

 * Draft tutorial
 * Draft ShapeString tutorial