Interaction system
The focus of the extension lies on different aspects than blender itself. Extension tools usually work on one specific entity or between a few entities where the order of selection matters. As the existing system of selection isn't ideal in this context the extension defines a generic interaction system which allows for a powerful and flexible workflow.
Stateful Operations
Most tools in the extension are implemented as stateful tools. In this context a state represents one target like a selection or a value. When running a tool you will iterate through these states until all states have valid input.
Let's take the "Add Circle" tool as an example. Since a circle is represented by its center and radius the tool will have two states. One to define the center element and one to set the radius.
State Types
A state can have two different kind of targets:
- Pointer
A pointer target is best described as a selection. Pointer states will prompt the user to select an element of the according type.
- Property
A property target simply represents a value of some kind like an integer or a float or a set of values to represent something like a location.
A state can however define both of those targets. In that case the property will be used to create a new element to satisfy the pointer target. This is often used to be able to place a new point at the mouse location when nothing is hovered but pick an existing point if one is hovered.
Selection vs Action
To be as flexible as possible the interaction system allows to work in different paradigms which can also be freely mixed. Those are:
-
Select -> Invoke Operation (The standard way to work in blender)
-
Invoke Operation -> Select
-
Partial Select -> Invoke Operation -> Select rest (Or set Parameters)
Numerical Edit
In order to precisely edit a states property, it's possible to edit values directly by entering numbers. When the stateproperty is a set of multiple values (e.g. XYZ Location) they will be treated as sub-states, meaning you can iterate (TAB) through them and enter values sequentially.
Description
When learning how a new tool works it's best to take a look at its tooltip, this will list the different states of the tool. For pointer states this will additionally display the accepted types that can be picked.
While running an operation the statusbar will display that information for the currently active state.
Immediate Execution
Most tools support immediate execution which will invoke the tools operations when switching to it and a valid selection is given.
Note that the execution is only triggered when a tool is invoked by its shortcut.
Snapping
When placing a sketch point you can snap it to existing 3D geometry in the scene. Snapping reuses Blender's native snap settings, so it's controlled from the snap dropdown in the 3D viewport header (Snap magnet toggle and the Snap To elements) rather than a separate setting.
Enable the Snap toggle and pick one or more snap elements; the extension reacts to:
- Vertex — mesh vertices and sketch points
- Edge — the closest point along a mesh edge or sketch segment
- Edge Center — the midpoint of an edge or segment
- Face Center — the center of a mesh face, or the centroid of a closed sketch shape (a circle or a shape drawn as a single closed curve)
Only the object directly under the cursor is considered, which keeps snapping responsive even in dense scenes. Snapping works both for other objects (meshes) and for other CAD Sketcher sketches.
Static snap: the snapped location is captured when the point is placed. It does not create a constraint and does not track the target afterwards, so moving the snapped geometry later will not move the sketch point.
Hold Shift while placing or tweaking a point to temporarily bypass snapping.
Face-center snapping to a shape built from several separate lines (rather than one closed curve) is not supported — that region only exists in the generated mesh, which can't be inspected while sketching.






