This article provides a detailed technical analysis of the seven documented failure modes of constraint-based CAD systems in CNC machining workflows. Each failure mode is described with its root cause, a real-world example, and the analytic solution that eliminates it.
Background: How Constraint Solvers Work
A constraint solver maintains a set of geometric entities and a set of constraints. When constraints are added or modified, the solver iterates from the current state to find a configuration that satisfies all constraints within a specified tolerance.
The critical dependency: the result depends on the starting state. Different starting states produce different results — even when all constraints are satisfied.
FM 1 — Solution Flip
Symptom: A tangent arc appears on the wrong side of the profile after a dimension change.
Root cause: The solver, starting from a slightly different state after the dimension change, converges to the other valid tangent solution.
Real example: A fillet arc between two lines flips from the inside corner to the outside corner when the adjacent dimension is modified.
Analytic solution: The direction selector (XLarge/XSmall/YLarge/YSmall) is permanently recorded. The solution cannot flip regardless of what other geometry changes.
FM 2 — Under-Constrained Drift
Symptom: A bolt-hole pattern rotates by an unpredictable amount when the file is opened on a different machine.
Root cause: The starting angle of the pattern is under-constrained — it has a free degree of freedom that the solver resolves differently on different machines.
Real example: A 6-hole flange pattern is specified as "6 holes equally spaced" without a starting angle. The solver places the first hole at a different angle on each machine.
Analytic solution: Explicit start angle required. Points/On,C,N,Atangle,0 — the starting angle is specified and recorded. No free degrees of freedom.
FM 3 — Constraint Conflict
Symptom: Adding a new dimension silently changes geometry that was previously correct.
Root cause: The new constraint conflicts with an existing constraint. The solver resolves the conflict by modifying geometry the programmer did not intend to change.
Real example: Adding a dimension to a slot length causes the slot width to change, because the solver resolves the over-constrained system by modifying the width.
Analytic solution: No constraint network. Each operation is independent. Adding a new line does not affect existing lines.
FM 4 — Solver State Dependency
Symptom: Two programmers get different geometry from the same file.
Root cause: The solver converges to different solutions depending on the history of operations on each machine.
Real example: Programmer A creates a tangent circle by adding constraints in one order. Programmer B opens the same file and gets a different tangent solution because the solver history is different.
Analytic solution: Geometry is fully determined by the operator sequence. Circle/Tanto,L,L,R,YLarge always produces the same circle regardless of history.
FM 5 — Tolerance Accumulation
Symptom: A complex profile is not mathematically closed — there is a small gap at the closure point.
Root cause: Each constraint is satisfied within tolerance. Over 40 entities, the accumulated tolerance errors leave a gap.
Real example: A 40-entity profile has a 0.001mm gap at the closure point. The toolpath has a corresponding step in the surface finish.
Analytic solution: All results are exact. Profile closure is exact by construction. No tolerance accumulation.
FM 6 — Regeneration Failure
Symptom: A sketch enters a dangling reference state after a 3D model change.
Root cause: The sketch references a face or edge of the 3D model that no longer exists after the model change.
Real example: A pocket sketch references the top face of a boss. When the boss height changes, the face reference becomes invalid and the sketch cannot regenerate.
Analytic solution: XyzPilot is a 2D system. No 3D face references exist. This failure mode is architecturally impossible.
FM 7 — Version Non-Determinism
Symptom: Geometry changes silently when the file is opened in a new software version.
Root cause: The solver algorithm has been updated in the new version. It now converges to a different solution from the same starting state.
Real example: A previously correct machining program produces wrong geometry after a software update, because the solver now resolves a tangency constraint differently.
Analytic solution: Fixed analytic formulas never change between versions. Point/Intof,L,C always uses the same formula. The result is always the same.
Summary
All seven failure modes share a common root cause: the solver produces different results from the same inputs, depending on the starting state, the solver version, or the constraint history. Analytic geometry eliminates all seven by eliminating the solver.