Skip to content

Snapping

In one sentence: Snapping magnetises the cursor to geometric features of existing objects — endpoints, midpoints, centres, intersections, and more — so every point you place is precisely connected to the model rather than landing at an arbitrary location.


What snapping does

When a Draft drawing tool is active and you move the cursor over the 3-D view, FreeCAD's snap engine tests each enabled snap type against nearby geometry. The first matching snap is highlighted with a coloured marker. Clicking places the point exactly at the snapped location — not at the raw cursor pixel position.

Without snapping, lines and arcs almost never meet precisely: they appear to connect visually but have tiny gaps that cause problems in downstream operations (Part unions, offset paths, mesh export). Snapping eliminates those gaps.


The snap toolbar

All snap types are controlled from the Draft Snap toolbar. Each button is an independent toggle — click to enable or disable that snap type.

Master toggle: Snap Lock

Snap Lock (Draft_Snap_Lock, shortcut S while a tool is active) is the master on/off switch. When Snap Lock is off, all individual snap types are disabled regardless of their own toggle state.

Snap Lock is easy to toggle accidentally

If all snapping suddenly stops working, check the padlock icon in the Snap toolbar — S is easy to hit while typing in dimension dialogs.


Snap types

Point snaps

Snap type Indicator What it snaps to
Endpoint Yellow square Start/end vertices of lines, arcs, splines
Midpoint Yellow triangle Midpoint of any edge
Center Yellow circle cross-hair Centre of a circle or arc; centroid of a face
Angle Yellow dot on arc 45° increment points on a circle (0°, 45°, 90°, …)
Intersection White cross Crossing of two edges (real or virtual)
Near Yellow dot (sliding) Nearest point on any edge — slides freely along the edge
Special Object-specific Object-specific points (pole, knot, focus)

Direction / extension snaps

Snap type Indicator What it snaps to
Extension Dashed yellow line Along the infinite extension of a line beyond its endpoint
Parallel Dashed yellow line Along a direction parallel to an existing edge
Perpendicular Yellow cross with ⊥ Foot of the perpendicular from the cursor to an edge
Ortho Dashed yellow line 45° grid directions from the last placed point

Grid and plane snaps

Snap type Indicator What it snaps to
Grid Yellow cross Nearest visible grid intersection
Working Plane None (silent) Projects any snap point down onto the working plane

Display aid

Snap type Indicator What it does
Dimensions Δx, Δy, Δz labels Shows live distance labels next to the cursor — informational only, does not change snap behaviour

How the snap engine chooses

When multiple snap types could match the cursor position, the snap engine applies a priority order:

  1. Endpoint and Midpoint — strongest, always preferred when close enough.
  2. Center, Perpendicular, Near — checked next.
  3. Intersection — requires both edges to be close to the cursor.
  4. Grid — lowest priority; only fires when nothing else matches.

The snap tolerance (in pixels) is set in Edit → Preferences → Draft → General → Snap range.


Snap and the working plane

The Working Plane snap type silently projects every other snap point onto the current working plane. This ensures that even when you snap to geometry that is above or below the working plane (e.g. a vertex at Z = 50 mm while working on the XY plane at Z = 0), the placed point lands on the working plane.

To place a point exactly on an object at a different Z level, disable the Working Plane snap — then the snap fires at the 3-D location of the geometry rather than its projection.


Suppressing snapping temporarily

Hold Shift while clicking to suppress all snapping for a single click. The cursor reverts to free positioning for that one point, then snapping resumes automatically.


Performance considerations

When working with very complex geometry (large assemblies, dense meshes):

  • Disable Near and Intersection — these require the snap engine to test every edge in the scene for each cursor movement.
  • Disable snaps you are not actively using.
  • Use Snap Lock to turn off all snapping during rapid geometry placement and re-enable when precision is needed.

Typical snap workflow

1. Set the working plane (select a face or named plane)
2. Enable Snap Lock (S)
3. Enable snap types: Endpoint + Midpoint (always on)
                      + Center (for arcs/circles)
                      + Grid (for floor plans)
4. Draw — the cursor snaps automatically
5. Hold Shift for a single free-placement point
6. Disable Near/Intersection if the scene is slow

Python API

Snap behaviour is a UI feature — it is controlled interactively, not via the Python API. The snap toolbar state is not exposed to scripting. To place points programmatically, use explicit coordinates:

import FreeCAD as App, Draft

# Place a line from explicit vertex to explicit vertex — no snapping needed
line = Draft.make_line(
    App.Vector(0, 0, 0),
    App.Vector(100, 50, 0)
)
App.ActiveDocument.recompute()

See also