Overview
TDT's 3D tolerance analysis lets you work with familiar GD&T symbols from your drawings. Enter your position, perpendicularity, runout, and other callouts, and TDT automatically converts them to a 6-DOF analysis.
Most tolerance tools require you to understand torsor theory before specifying tolerances. TDT works the other way: enter your GD&T as it appears on the drawing, and we handle the math.
What You Get
- Automatic DOF mapping - GD&T symbols map to the correct degrees of freedom based on geometry
- Material condition bonuses - MMC/LMC bonus calculations are automatic
- Datum reference frames - ASME Y14.5 3-2-1 rule is applied automatically
- Validation - TDT warns if your GD&T changes but torsor bounds are stale
GD&T Symbol Reference
TDT supports these GD&T symbols. The table shows which degrees of freedom each symbol affects based on your geometry type.
Position and Location
| Symbol | GD&T | Geometry | Affects DOF | Formula |
|---|---|---|---|---|
| ⌖ | position |
cylinder | u, v | ±(tol / 2) |
| ⌖ | position |
sphere, point | u, v, w | ±(tol / 2) |
| ⌖ | position |
plane | w | ±(tol / 2) |
| ◎ | concentricity |
cylinder, sphere | u, v | ±(tol / 2) |
| ⌀ | symmetry |
plane | u or v | ±(tol / 2) |
Orientation
| Symbol | GD&T | Geometry | Affects DOF | Formula |
|---|---|---|---|---|
| ⟂ | perpendicularity |
cylinder, cone | α, β | ±(tol / length) |
| ⟂ | perpendicularity |
plane | α or β | ±(tol / extent) |
| ∥ | parallelism |
cylinder | α, β | ±(tol / length) |
| ∥ | parallelism |
plane | α or β | ±(tol / extent) |
| ∠ | angularity |
any | α, β | ±(tol / length) |
Form
| Symbol | GD&T | Geometry | Affects DOF | Formula |
|---|---|---|---|---|
| ⏥ | flatness |
plane | w | ±(tol / 2) |
| ○ | cylindricity |
cylinder | u, v | ±(tol / 2) |
| ○ | circularity |
cylinder, sphere | u, v | ±(tol / 2) |
| ⌒ | straightness |
cylinder, line | α, β | ±(tol / length) |
Runout
| Symbol | GD&T | Geometry | Affects DOF | Formula |
|---|---|---|---|---|
| ↗ | circular_runout |
cylinder | u, v, α, β | radial + angular |
| ⇗ | total_runout |
cylinder | u, v, α, β | radial + angular |
Profile
| Symbol | GD&T | Geometry | Affects DOF | Formula |
|---|---|---|---|---|
| ⌓ | profile_line |
any | w (normal) | ±(tol / 2) |
| ⌓ | profile_surface |
any | w (normal) | ±(tol / 2) |
Material Condition Modifiers
| Modifier | Code | Bonus Calculation |
|---|---|---|
| MMC (Ⓜ) | mmc |
bonus = |actual_size - mmc_size| |
| LMC (Ⓛ) | lmc |
bonus = |actual_size - lmc_size| |
| RFS | rfs |
No bonus (default) |
Quick Start Workflow
Here's the typical workflow for 3D tolerance analysis with GD&T:
Create a feature and add your GD&T controls directly from the drawing.
tdt feat new --title "Bore" --component CMP@1 --feature-type internal --no-edit
Then edit the feature file to add GD&T:
title: Bore
feature_type: internal
geometry_class: cylinder
geometry_3d:
origin: [0.0, 0.0, 0.0]
axis: [0.0, 0.0, 1.0]
length: 25.0
dimensions:
- name: diameter
nominal: 20.0
plus_tol: 0.021
minus_tol: 0.0
# GD&T from drawing
gdt:
- symbol: position
value: 0.25
datum_refs: [A, B]
material_condition: mmc
- symbol: perpendicularity
value: 0.05
datum_refs: [A]
Let TDT convert your GD&T to torsor bounds automatically.
# Preview the computed bounds
tdt feat compute-bounds FEAT@1
# Compute and save to feature file
tdt feat compute-bounds FEAT@1 --update
# Include MMC bonus (if you know actual size)
tdt feat compute-bounds FEAT@1 --actual-size 20.015 --update
Add features to a tolerance stackup and run 3D analysis.
# Create stackup
tdt tol new --title "Shaft-Bore Fit" --target-name "Clearance" \
--target-nominal 0.02 --target-upper 0.05 --target-lower 0.005 --no-edit
# Add contributors
tdt tol add TOL@1 +FEAT@1 ~FEAT@2
# Run 3D analysis
tdt tol analyze TOL@1 --3d
TDT validates that your torsor bounds match your GD&T.
# Check for stale bounds
tdt validate
# Auto-fix stale bounds
tdt validate --fix
After modifying GD&T values, run tdt validate to ensure your torsor bounds are current. Use --fix to automatically update stale bounds.
Feature Setup
Features need geometry information for 3D analysis. This tells TDT what type of geometry and where it is in your assembly.
Required Fields
| Field | Description | Example |
|---|---|---|
geometry_class |
Type of geometry | cylinder, plane, sphere, cone, point, line |
geometry_3d.origin |
Position in assembly coordinates | [0.0, 0.0, 50.0] |
geometry_3d.axis |
Direction vector (normalized) | [0.0, 0.0, 1.0] |
geometry_3d.length |
Feature length (for angular tolerances) | 25.0 |
geometry_3d.length_ref |
Optional: reference another feature's dimension | "FEAT-01ABC:depth" |
Use length_ref to link a feature's length to another feature's dimension. This ensures values stay in sync. Format: "FEATURE_ID:dimension_name".
CLI command: tdt feat set-length FEAT@2 --from FEAT@1:depth sets the length and reference automatically.
Run tdt validate to check for stale values, or tdt validate --fix to update them.
Geometry Examples
Cylinder (Bore or Shaft)
geometry_class: cylinder
geometry_3d:
origin: [0.0, 0.0, 0.0] # Center at one end
axis: [0.0, 0.0, 1.0] # Along Z axis
length: 25.0 # Depth of bore
Plane (Face or Datum Surface)
geometry_class: plane
geometry_3d:
origin: [0.0, 0.0, 0.0] # Point on surface
axis: [0.0, 0.0, 1.0] # Surface normal
Sphere (Ball or Locating Feature)
geometry_class: sphere
geometry_3d:
origin: [50.0, 25.0, 10.0] # Center point
axis: [0.0, 0.0, 1.0] # Reference direction
Coordinate System
Use a consistent coordinate system for all features. A common convention:
Datums
Add datum_label to features that serve as datums:
title: Mounting Face
geometry_class: plane
# ... geometry ...
# This feature is datum A
datum_label: A
TDT applies the ASME Y14.5 3-2-1 rule automatically:
- Primary datum (A) - Constrains 3 DOF
- Secondary datum (B) - Constrains 2 additional DOF
- Tertiary datum (C) - Constrains final 1 DOF
When you specify datum_refs: [A, B] in your GD&T, TDT only applies tolerances to DOFs not already constrained by those datums.
Running Analysis
tdt tol analyze TOL@1 --3d
Example Output
How Bounds Are Used
The 3D analysis uses torsor bounds to determine geometric deviation for each contributor:
- GD&T torsor_bounds - If a feature has
torsor_bounds(computed from GD&T viacompute-bounds), these are used directly - Derived bounds - If no torsor_bounds exist, bounds are derived from the contributor's dimensional tolerance
The analysis output shows which source was used:
For accurate 3D analysis, always define GD&T controls on your features and run tdt feat compute-bounds --update to generate proper torsor bounds. This ensures your analysis uses the actual geometric tolerances from your drawing rather than approximations from dimensional tolerance.
Analysis Options
| Flag | Description |
|---|---|
--3d | Enable 6-DOF SDT analysis |
--visualize | Show ASCII chain diagram |
--iterations N | Monte Carlo iterations (default: 10000) |
--no-gdt | Ignore GD&T position tolerances |
Understanding Results
- WC [min, max] - Worst-case deviation range
- RSS ±3σ - Statistical 3-sigma spread
- Cp/Cpk - Process capability indices
- Zero DOFs - Fully constrained by geometry or datums
Theory Deep Dive
This section explains the underlying math for those who want to understand how TDT works internally.
Small Displacement Torsor (SDT)
A torsor represents the small deviation of a feature from its nominal position using 6 parameters:
| Component | Symbol | Description |
|---|---|---|
u | u | Translation along local X |
v | v | Translation along local Y |
w | w | Translation along local Z |
alpha | α | Rotation about local X |
beta | β | Rotation about local Y |
gamma | γ | Rotation about local Z |
Geometry Class DOF Constraints
Different geometry types constrain different degrees of freedom:
| Geometry | Constrained | Free |
|---|---|---|
plane | w, α, β | u, v, γ |
cylinder | u, v, α, β | w, γ |
sphere | u, v, w | α, β, γ |
cone | u, v, w, α, β | γ |
line | u, v | w, α, β, γ |
point | u, v, w | α, β, γ |
Jacobian Propagation
TDT uses Jacobian matrices to propagate deviations through the tolerance chain. For each contributor, the deviation at position P is:
GD&T to Torsor Mapping
The compute-bounds command applies these rules:
- Parse GD&T controls from feature
- For each control, determine affected DOFs based on geometry class
- Compute bounds: translation tolerances → ±(tol/2), angular tolerances → ±(tol/length)
- Apply material condition bonus if actual size provided
- Merge multiple controls (tightest bound wins for same DOF)
Reference
CLI Commands
| Command | Description |
|---|---|
tdt feat compute-bounds FEAT@1 | Show computed torsor bounds from GD&T |
tdt feat compute-bounds FEAT@1 --update | Compute and save to file |
tdt feat compute-bounds FEAT@1 --actual-size 20.01 | Include MMC/LMC bonus |
tdt tol analyze TOL@1 --3d | Run 3D SDT analysis |
tdt tol analyze TOL@1 --3d --visualize | With chain visualization |
tdt validate | Check for stale torsor bounds |
tdt validate --fix | Auto-fix stale bounds |
GD&T Field Format
gdt:
- symbol: position # GD&T symbol name
value: 0.25 # Tolerance value
datum_refs: [A, B, C] # Datum references (optional)
material_condition: mmc # mmc, lmc, or rfs (default)
Supported Symbols
position, concentricity, symmetry, perpendicularity, parallelism, angularity, flatness, cylindricity, circularity, straightness, circular_runout, total_runout, profile_line, profile_surface