The Tolerance tab answers two everyday precision-engineering questions: given a chain of toleranced dimensions, how much can the result vary? And given a feature of size toleranced at MMC, how much position tolerance does it really get, and what are its worst-case boundaries?
Linear stack-ups
A stack-up follows a chain of dimensions from one side of a gap (A) to the other (B). Katydid follows the method of B. R. Fischer, Mechanical Tolerance Stackup and Analysis (2nd ed., CRC Press, 2011), chapters 4, 7 and 8.
Dimensions
Each Dimension component holds one link of the chain:
N Nominal |
The drawing value. |
U Upper, L Lower |
The deviations, with their signs: |
D Direction |
|
S Distribution |
|
Nm Name |
The label in reports. |
Every dimension is first converted to equal-bilateral form, a mean value with a symmetric tolerance (Fischer, ch. 4):
So 8.50 +.25/−.10 becomes 8.575 ± .175, and a limit dimension 9.55 – 10.00 becomes 9.775 ± .225. The Dimension outputs M and T show these two numbers.
Worst case, RSS and adjusted RSS
The Stack-up component takes the whole chain (list access, so wire every Dimension into its D, adding wires with Shift) and computes, with d = ±1 the direction of each dimension:
| Result | How to read it |
|---|---|
Worst case |
Every dimension at its limit in the unluckiest direction at once. The gap can never fall outside these limits. |
RSS |
Root-sum-square: the probable range when dimensions vary independently and their processes are centred, each tolerance being the same number of standard deviations. |
Adjusted RSS |
RSS multiplied by a factor F (1.5 by default, as in Fischer’s examples) to allow for processes that are not perfectly centred or independent. |
The Report output lists every dimension with its share of the worst-case total, which shows at a glance which tolerance to tighten first, followed by the three results with their minimum and maximum.
Monte Carlo
Monte Carlo Stack-up builds the assembly many times with random dimensions (10,000 by default) and reports the mean, the standard deviation, the percentage of builds outside the optional spec limits LSL and USL, and a text histogram.
| Distribution | How a dimension with tolerance ±t is drawn |
|---|---|
normal |
Mean ± t is k standard deviations (k = 3 by default, input k) |
uniform |
Equally likely anywhere in mean ± t |
triangular |
Most likely at the mean, falling linearly to mean ± t |
The same Seed gives the same builds every time, so results are reproducible; change it to see how much the reject rate varies between samples. When numpy is available (FreeCAD bundles it) the simulation is about 50 times faster than the pure-Python fallback; the two use different random streams, so a seed reproduces results only on the same one.
| With every tolerance normal and k = 3, the Monte Carlo standard deviation comes out close to RSS / 3, and about 0.27 % of builds fall outside nominal ± RSS. That is a good sanity check of a model. |
Verified against the book
tests/test_tolerance.py reproduces Fischer’s Examples 4.1–4.4 (equal-bilateral conversion), the chain of Figures 8.9–8.14, the report of Figure 8.15 to four decimals (including each line’s percentage contribution) and Example 8.1. Where the book rounds an intermediate value the test says so: in Figure 8.14 Fischer multiplies the rounded RSS 1.94 by 1.5 (±2.91, exact ±2.9047), and in Example 8.1 he rounds √0.54 = 0.7348 up to 0.74.
GD&T calculators
The three GD&T components follow G. R. Cogorno, Geometric Dimensioning and Tolerancing for Mechanical Design (3rd ed., McGraw-Hill, 2020), chapter 3, for features of size.
Bonus Tolerance
With an MMC modifier (Ⓜ) in the feature control frame, a feature gains bonus tolerance as its actual size departs from MMC towards LMC:
With an LMC modifier the bonus is measured from LMC instead; with RFS (no modifier) there is no bonus. An actual size outside the MMC–LMC range is an error: that part is rejected, not given a bonus. The component’s results match Cogorno’s Table 3-2 row by row (see the GD&T tutorial). To see the bonus in 3D, load the flange with tolerance zones: each bolt hole’s zone grows as you drag its actual size.
Virtual & Resultant Condition
For a feature toleranced at MMC, with size tolerance = |LMC − MMC|:
| Internal feature (hole) | External feature (pin) | |
|---|---|---|
Virtual condition |
MMC − tolerance |
MMC + tolerance |
Resultant condition |
LMC + tolerance + size tolerance |
LMC − tolerance − size tolerance |
Inner boundary |
virtual condition |
resultant condition |
Outer boundary |
resultant condition |
virtual condition |
The virtual condition is the constant boundary a mating part must clear (the size of a functional gauge pin or hole). The resultant condition is the opposite worst case, used for minimum wall thickness.
Position to ±
A stack-up needs ± values, while a drawing gives a diametral position tolerance. Position to ± converts them as Fischer does: ± position = position tolerance / 2, and the bonus available from a size tolerance becomes ± size tolerance / 2.
Limits
Stacks are one-dimensional: every dimension acts along the same direction. Two-dimensional and angular stacks, datum feature shift and datum reference frames are on the roadmap. The Monte Carlo model assumes independent dimensions.