# Sketcher Workbench

The **Sketcher Workbench** is used to create 2D geometries intended for use in the **Part Design Workbench** and other workbenches.
Generally a 2D geometry is considered the starting-point for most CAD models - a simple 2D sketch can be "extruded" into a 3D shape, further 2D sketches can be used to create pockets in the surface of this shape and sketches can be used to define 'pads' (extrusions) on the surface of 3D objects. Along with Boolean operations, the Sketcher forms the core of generative solid shape design.

The Sketcher workbench itself features constraints - allowing 2D shapes to be constrained to precise geometrical definitions. And a constraint solver which calculates the constrained-extent of 2D geometry and allows interactive exploration of sketch degrees-of-freedom.

*A basic, fully-constrained sketch.*

### Basics of constraint sketching

To explain how the Sketcher works, it may be useful to compare it to the "traditional" way of drafting.

#### Traditional Drafting

The traditional way of CAD drafting inherits from the old drawing board. Orthogonal (2D) views are drawn manually and intended for producing technical drawings (also known as blueprints). Objects are drawn precisely to the intended size or dimension. If you want to draw an horizontal line 100mm in length starting at (0,0), you activate the line tool, either click on the screen or input the (0,0) coordinates for the first point, then make a second click or input the second point coordinates at (100,0). Or you will draw your line without regard to its position, and move it afterwards. When you've finished drawing your geometries, you add dimensions to them.

#### Constraint Sketching

The **Sketcher** moves away from this logic. Objects do not need to be drawn exactly as you intend to, because they will be defined later on by constraints. Objects can be drawn loosely, and as long as they are unconstrained, can be modified. They are in effect "floating" and can be moved, stretched, rotated, scaled, and so on. This gives great flexibility in the design process.

#### What are constraints?

Instead of dimensions, Constraints are used to limit the degrees of freedom of an object. For example, a line without constraints has 4 Degrees Of Freedom (abbreviated as " DOF "): it can be moved horizontally or vertically, it can be stretched, and it can be rotated.

Applying a horizontal or vertical constraint, or an angle constraint (relative to another line or to one of the axes), will limit its capacity to rotate, thus leaving it with 3 degrees of freedom. Locking one of its points in relation to the origin will remove another 2 degrees of freedom. And applying a dimension constraint will remove the last degree of freedom. The line is then considered **fully-constrained**.

Multiple objects can be constrained between one another. Two lines can be joined through one of their points with the coincident point constraint. An angle can be set between them, or they can be set perpendicular. A line can be tangent to an arc or a circle, and so on. A complex Sketch with multiple objects will have a number of different solutions, and making it **fully-constrained** means that just one of these possible solutions has been reached based on the applied constraints.

There are two kinds of constraints: geometric and dimensional. They are detailed in the 'The tools' section below.

### What the Sketcher is not good for

The Sketcher is not intended for producing 2D blueprints. Once sketches are used to generate a solid feature, they are automatically hidden. Constraints are only visible in Sketch edit mode.

If you only need to produce 2D views for print, and don't want to create 3D models, check out the Draft workbench (keep in mind though that the Draft workbench can also be useful to create 2D geometry not available in the Sketcher at this time, like B-Splines.)

### Sketching Workflow

A Sketch is always 2-dimensional (2D). To create a solid, a 2D Sketch of a single enclosed area is created and then either Padded or Revolved to add the 3rd dimension, creating a 3D solid from the 2D Sketch.

If the Sketch has segments that cross one another, places where a Point is not directly on a segment, or places where there are gaps between endpoints of adjacent segments, Pad or Revolve won't create a solid. The exception to this rule is that it doesn't apply to Construction (blue) Geometry.

Inside the enclosed area we can have smaller non-overlapping areas. These will become voids when the 3D solid is created.

### The tools

The Sketcher Workbench tools are all located in the Sketcher menu that appears when you load the Sketcher Workbench.

#### Sketcher Geometries

These are tools for creating objects.

- Point: Draws a point.
- Line by 2 point: Draws a line segment from 2 points.
- Arc: Draws an arc segment from center, radius, start angle and end angle.
- Arc by 3 Point: Draws an arc segment from two endpoints and another point on the circumference.
- Circle: Draws a circle from center and radius.
- Circle by 3 Point : Draws a circle from three points on the circumference.
- Conic sections:
- Ellipse by center : Draws an ellipse by center point, major radius point and minor radius point. (v0.15)
- Ellipse by 3 points : Draws an ellipse by major diameter (2 points) and minor radius point. (v0.15)
- Arc of ellipse : Draws an arc of ellipse by center point, major radius point, starting point and ending point. (v0.15)
- Arc of hyperbola: Draws an arc of hyperbola. (v0.17)
- Arc of parabola: Draws an arc of parabola. (v0.17)

- Polyline (multiple-point line): Draws a line made of multiple line segments. Pressing the M key while drawing a Polyline toggles between the different polyline modes.
- Rectangle: Draws a rectangle from 2 opposite points.
- Triangle: Draws a regular triangle inscribed in a construction geometry circle. (v0.15)
- Square: Draws a regular square inscribed in a construction geometry circle. (v0.15)
- Pentagon: Draws a regular pentagon inscribed in a construction geometry circle. (v0.15)
- Hexagon: Draws a regular hexagon inscribed in a construction geometry circle. (v0.15)
- Heptagon: Draws a regular heptagon inscribed in a construction geometry circle. (v0.15)
- Octagon: Draws a regular octagon inscribed in a construction geometry circle. (v0.15)
- Slot: Draws an oval by selecting the center of one semicircle and an endpoint of the other semicircle.
- Fillet: Makes a fillet between two lines joined at one point. Select both lines or click on the corner point, then activate the tool.
- Trimming: Trims a line, circle or arc with respect to the clicked point.
- External Geometry: Creates an edge linked to external geometry.
- Construction Mode: A construction object will be shown in blue and will not be used in a 3D geometry operation. It is only visible while editing the Sketch that contains it. Selecting existing Sketcher geometry and then clicking this tool toggles that geometry between regular and construction mode. Selecting this tool when no Sketcher geometry is selected changes the mode (regular vs. construction) in which future objects will be created.

#### Sketcher Constraints

Constraints are used to define lengths, set rules between sketch elements, and to lock the sketch along the vertical and horizontal axes. Some constraints require the Helper constraints

**Not associated with numeric data**

- Coincident: Affixes a point onto (coincident with) one or more other points.
- Point On Object: Affixes a point onto another object such as a line, arc, or axis.
- Vertical: Constrains the selected lines or polyline elements to a true vertical orientation. More than one object can be selected before applying this constraint.
- Horizontal: Constrains the selected lines or polyline elements to a true horizontal orientation. More than one object can be selected before applying this constraint.
- Parallel: Constrains two or more lines parallel to one another.
- Perpendicular: Constrains two lines perpendicular to one another, or constrains a line perpendicular to an arc endpoint.
- Tangent: Creates a tangent constraint between two selected entities, or a co-linear constraint between two line segments. A line segment does not have to lie directly on an arc or circle to be constrained tangent to that arc or circle.
- Equal Length: Constrains two selected entities equal to one another. If used on circles or arcs their radii will be set equal.
- Symmetric: Constrains two points symmetrically about a line, or constrains the first two selected points symmetrically about a third selected point.
- Constrain Block: v 0.17 Basically allows to block a geometric element in place with a single constraint. It should be particularly useful to work with B-Splines. See https://forum.freecadweb.org/viewtopic.php?f=9&t=26572

**Associated with numeric data**

For these constraints you can use the expressions. The data may be taken from a spreadsheet.

- Lock: Constrains the selected item by setting vertical and horizontal distances relative to the origin, thereby locking the location of that item. These constraint distances can be edited later.
- Horizontal Distance: Fixes the horizontal distance between two points or line endpoints. If only one item is selected, the distance is set to the origin.
- Vertical Distance: Fixes the vertical distance between 2 points or line endpoints. If only one item is selected, the distance is set to the origin.
- Length: Defines the distance of a selected line by constraining its length, or defines the distance between two points by constraining the distance between them.
- Radius: Defines the radius of a selected arc or circle by constraining the radius.
- Internal Angle: Defines the internal angle between two selected lines.
- Snell's Law: Constrains two lines to obey a refraction law to simulate the light going through an interface. (v 0.15)
- Internal Alignment: Aligns selected elements to selected shape (e.g. a line to become major axis of an ellipse).

- Toggle Constraint: Toggles the toolbar or the selected constraints to/from reference mode. v0.16

#### Other

- New sketch: Creates a new sketch on a selected face or plane. If no face is selected while this tool is executed the user is prompted to select a plane from a pop-up window.

- Edit sketch: Edit the selected Sketch.

- Leave sketch: Leave the Sketch editing mode.

- View sketch: Sets the model view perpendicular to the sketch plane.

- View section: Creates a section plane that temporarily hides any matter in front of the sketch plane. available in version 0.18

- Map sketch to face: Maps a sketch to the previously selected face of a solid.

- Reorient sketch : Allows you to change the position of a sketch

- Validate sketch: It allows you to check if there are in the tolerance of different points and to match them.

- Merge sketches: Merge two or more sketches. [v 0.15]

- Mirror sketch: Mirror a sketch along the x-axis, the y-axis or the origin [v 0.16]

- Close Shape: Creates a closed shape by applying coincident constraints to endpoints [v 0.15]

- Connect Edges: Connect sketcher elements by applying coincident constraints to endpoints [v 0.15]

- Select Constraints: Selects the constraints of a sketcher element [v 0.15]

- Select Origin: Selects the origin of a sketch [v 0.15]

- Select Vertical Axis: Selects the vertical axis of a sketch [v 0.15]

- Select Horizontal Axis: Selects the horizontal axis of a sketch [v 0.15]

- Select Redundant Constraints: Selects redundant constraints of a sketch [v 0.15]

- Select Conflicting Constraints: Selects conflicting constraints of a sketch [v 0.15]

- Select Elements Associated with constraints: Select sketcher elements associated with constraints [v 0.15]

- Show/Hide internal geometry: Recreates missing/deletes unneeded geometry aligned to internal geometry of a selected element (applicable only to ellipse so far). [v 0.15]

- Symmetry: Copies a sketcher element symmetrical to a chosen line [v 0.16]

- Clone: Clones a sketcher element [v 0.16]

- Copy: Copies a sketcher element [v 0.16]

- Rectangular Array: Creates an array of selected sketcher elements [v 0.16]

- Switch Virtual Space: v 0.17 Allows you to "hide" constraints and make them visible again. See https://forum.freecadweb.org/viewtopic.php?f=9&t=26614

#### Preferences

- Preferences...: Preferences disposable in Sketcher Tools.

### Best Practices

Every CAD user develops his own way of working over time, but there are some useful general principles to follow.

- A series of simple sketches is easier to manage than a single complex one. For example, a first sketch can be created for the base 3D feature (either a pad or a revolve), while a second one can contain holes or cutouts (pockets). Some details can be left out, to be realized later on as 3D features. You can choose to avoid fillets in your sketch if there are too many, and add them as a 3D feature.
- Always create a closed profile, or your sketch won't produce a solid, but rather a set of open faces. If you don't want some of the objects to be included in the solid creation, turn them to construction elements with the Construction Mode tool.
- Use the auto constraints feature to limit the number of constraints you'll have to add manually.
- As a general rule, apply geometric constraints first, then dimensional constraints, and lock your sketch last. But remember: rules are made to be broken. If you're having trouble manipulating your sketch, it may be useful to constrain a few objects first before completing your profile.
- If possible, center your sketch to the origin (0,0) with the lock constraint. If your sketch is not symmetric, locate one of its points to the origin, or choose nice round numbers for the lock distances. In v0.12, external constraints (constraining the sketch to existing 3D geometry like edges or to other sketches) are not implemented. This means that to locate following sketches geometry to your first sketch, you'll need to set distances relative to your first sketch manually. A lock constraint of (25,75) from the origin is more easily remembered than (23.47,73.02).
- If you have the possibility to choose between the Length constraint and the Horizontal or Vertical Distance constraints, prefer the latter. Horizontal and Vertical Distance constraints are computationally cheaper.
- In general, the best constraints to use are: Horizontal and Vertical Constraints; Horizontal and Vertical Length Constraints; Point-to-Point Tangency. If possible, limit the use of these: the general Length Constraint; Edge-to-Edge Tangency; Fix Point Onto a Line Constraint; Symmetry Constraint.