HistCAD: Constraint-Aware Parametric CAD Histories for Evaluating Editability
Organizations: University of Science and Technology of China, Hefei, Anhui, P. R. China
Abstract
Sketch constraints specify geometric conditions for constructing and modifying parametric CAD models. We study whether predicted constraints allow a given history to reproduce the required initial model and support prescribed dimensional edits. We introduce HistCAD, an executable representation and dataset whose Academic and Industrial collections contain 180,495 parametric construction histories with entity-referenced sketch constraints and retained feature operations. Predictors receive these histories with the geometry and feature definitions retained and explicit sketch constraints removed. They generate constraints for every sketch without seeing the edit request. The benchmark compares models built with alternative constraint sets for the same history under the same dimensional edit. An edit succeeds when the model reproduces the required initial geometry, reaches the target value, preserves specified relations and unedited dimensions in the target sketch, and rebuilds through the complete history. A predictor trained on both collections and supplied with descriptions of the input histories achieves overall edit success of 52.4% on Academic and 29.0% on Industrial. Models retaining only endpoint-connectivity constraints in the target sketch and the history's constraints elsewhere can reach the target and rebuild while failing preservation. For all-sketch predictions, we retain the target-sketch prediction and restore the history's constraints in other sketches. More models then reproduce the required initial geometry, and some of these newly matched models complete the edit. HistCAD connects constraint learning to the construction and revision of parametric CAD models.
Figures & tables
| Collection | Histories | Sketch constraints | Mean steps | Median steps | 95th pct. steps | Distinct op. families |
|---|---|---|---|---|---|---|
| DeepCAD | 153,534 | 2,755,327 | 1.47 | 1 | 3 | 1 |
| Fusion 360 | 8,609 | 155,603 | 2.23 | 2 | 6 | 1 |
| Industrial | 18,352 | 565,984 | 6.23 | 3 | 19 | 5 |
| Academic (500 tasks) | Industrial (500 tasks) | ||||||||
|---|---|---|---|---|---|---|---|---|---|
| Training | Condition | ER | Pres. | OES | ER | Pres. | OES | ||
| Academic only | History only | 50.8 | 44.4 | 87.8 | 39.0 | 25.8 | 20.4 | 70.6 | 14.4 |
| Academic only | Same-history description | 59.8 | 55.8 | 91.8 | 51.2 | 28.2 | 24.6 | 80.5 | 19.8 |
| Academic only | Shuffled description | 26.6 | 24.8 | 79.8 | 19.8 | 15.6 | 13.4 | 71.6 | 9.6 |
| Joint | History only | 52.6 | 45.8 | 88.2 | 40.4 | 48.8 | 29.2 | 76.0 | 22.2 |
| Joint | Same-history description | 61.8 | 57.6 | 91.0 | 52.4 | 51.8 | 34.2 | 84.8 | 29.0 |
| Full | Connectivity | ||||||
|---|---|---|---|---|---|---|---|
| Task set | ER | Pres. | OES | ER | Pres. | OES | OES [95% CI] |
| Academic | 99.6 | 100.0 | 99.6 | 100.0 | 53.0 | 53.0 | 46.6 [42.4, 50.6] |
| Industrial | 79.2 | 100.0 | 79.2 | 82.4 | 44.4 | 36.6 | 42.6 [35.8, 49.6] |
| Task set | Training | ER | Pres. | OES | |
|---|---|---|---|---|---|
| Academic | Academic only | 59.8 74.8 | 55.8 68.6 | 91.8 92.1 | 51.2 63.2 |
| Academic | Joint | 61.8 75.8 | 57.6 69.2 | 91.0 91.6 | 52.4 63.4 |
| Industrial | Academic only | 28.2 39.8 | 24.6 35.0 | 80.5 79.4 | 19.8 27.8 |
| Industrial | Joint | 51.8 68.6 | 34.2 48.4 | 84.8 84.7 | 29.0 41.0 |
| Task set | Training | Pre-edit failure | Reachability failure | Preservation failure | Success | |
|---|---|---|---|---|---|---|
| Academic | Academic only | 282 | 52 | 10 | 15 | 205 |
| Academic | Joint | 275 | 49 | 11 | 13 | 202 |
| Industrial | Academic only | 83 | 13 | 1 | 14 | 55 |
| Industrial | Joint | 253 | 71 | 48 | 15 | 119 |
Appendix figures & tables18 assets
Supplementary material from the paper’s appendix.
Appendix
| Component | Stored content and execution role |
|---|---|
| Coordinate system | Euler angles and a translation vector specify the pose of the local sketch plane in model coordinates. |
| Sketch primitives | Entity identifiers and line, circle, arc, ellipse, elliptical-arc, or NURBS parameters specify the stored sketch geometry. |
| Sketch constraints | Entries are grouped by type. For example, Length: [[line_1, 20.0]] assigns a length to a line, while Perpendicular: [[line_1, line_2]] makes the two lines perpendicular. |
| Feature operation | Feature fields specify the operation family and its parameters, including extrusion extents, a revolution axis and angles, and helical pitch and turns. NewBody, Join, Cut, and Intersect specify body interaction. Fillets and chamfers specify edge references and size parameters. |
| Step order | The sequence determines which body geometry and references are available when each operation executes. |
| Primitive | Identifier prefix | Geometric fields |
|---|---|---|
| Line | line_ | start , end |
| Circle | circle_ | center , radius ; optional taper |
| Circular arc | arc_ | start , middle , end |
| Ellipse | ellipse_ | center , major , minor , angle |
| Elliptical arc | elliptical_arc_ | start , end , major , minor , angle , large_arc , sweep |
| NURBS | nurbs_ | degree , periodic , controls ; weights and knots subject to the conditions below |
| JSON key | Single-entry form | Meaning and argument restrictions |
|---|---|---|
| Coincident | [p1, p2] | Two points coincide. Both operands are point references. |
| Concentric | [c1, c2] | Two center-bearing curves share a center. |
| Equal | [e1, e2] | Compatible entities have equal corresponding sizes: line pairs, round-curve pairs, ellipse pairs, or elliptical-arc pairs. |
| Fix | e or p | An entity or point is fixed. |
| Horizontal | l or [p1, p2] | A line is horizontal or two points share a coordinate. |
| Vertical | l or [p1, p2] | A line is vertical or two points share an coordinate. |
| Panel A: Construction-history length | ||||
| Collection | Histories | Mean | Median | 95th pct. |
| DeepCAD | 153,534 | 1.47 | 1 | 3 |
| Fusion 360 | 8,609 | 2.23 | 2 | 6 |
| Industrial | 18,352 | 6.23 | 3 | 19 |
| Quantity class | Equivalent dimension forms | Target attachment | Addition form |
|---|---|---|---|
| Curve size | Radius or Diameter on the same circle or arc | curve identifier | Radius |
| Line size | Length on a line; or unsigned MINIMUM Distance between its own endpoints | line identifier | Length |
| Other distance | Directional, point–line, cross-entity, and other Distance constraints | canonical entity or point references plus direction and half-space attributes | canonical Distance form |
| Comparison | Quantity | Acceptance |
|---|---|---|
| Solved-sketch position/length | Corresponding parameter residual divided by | |
| Solved-sketch orientation | Unoriented ellipse-axis angular residual | rad |
| Primitive identity | Corresponding identifiers and primitive kinds | Exact |
| Body count | Number of final bodies | Equal |
| Paired-body bounding box | Maximum corresponding-corner distance divided by | |
| Paired-body volume | Relative-volume residual |
| Constraint type | Geometric quantity | Tolerance |
|---|---|---|
| Coincident | Maximum referenced-point separation | 0.01 mm |
| Concentric | Maximum center separation | 0.01 mm |
| Midpoint | Point-to-segment-midpoint separation | 0.01 mm |
| Parallel / Perpendicular | Line-direction deviation from or | |
| Angle | Circular angular difference | |
| Horizontal / Vertical | Line-to-axis angle; absolute - or -coordinate difference between the two referenced points | for lines; for points |
| Setting | Value |
|---|---|
| Base model | Qwen3-8B |
| Chat format and thinking mode | Qwen3 chat format; training and inference configured with thinking disabled |
| LoRA rank / alpha / dropout | 256 / 128 / 0.05 |
| LoRA modules | query/value projections |
| Optimizer | AdamW |
| Learning-rate schedule | Peak , 1% warmup, cosine decay to 10% of peak |
| All types | Non-Coincident | |||||
| Training | Prediction condition | Micro-F1 | P | R | F1 | Available, (%) |
| Academic prediction test set ( ) | ||||||
| Academic only | History only | 67.40 | 40.88 | 53.73 | 46.43 | 6,300 (98.72) |
| Academic only | Same-history description | 72.98 | 51.57 | 60.88 | 55.84 | 6,299 (98.70) |
| Academic only | Shuffled description | 61.46 | 33.20 | 41.35 | 36.83 | 6,078 (95.24) |
| Joint | History only | 68.31 | 42.34 | 54.30 | 47.58 | 6,288 (98.53) |
| A. Joint minus Academic-only training | |||
|---|---|---|---|
| Task set | Prediction condition | [95% CI] | [95% CI] |
| Academic | History only | [-1.00, 4.80] | [-1.40, 4.20] |
| Academic | Same-history description | [-0.80, 5.00] | [-1.60, 4.00] |
| Academic | Shuffled description | [-4.00, 1.80] | [-2.20, 3.00] |
| Industrial | History only | [12.96, 32.64] | [1.88, 14.42] |
| Industrial | Same-history description | [15.07, 32.40] | [3.30, 15.90] |
| Task set | Training | Matched | OES (%) | Pre-edit failure success |
|---|---|---|---|---|
| Academic | Academic only | 299 374 | 51.2 63.2 | 60 |
| Academic | Joint | 309 379 | 52.4 63.4 | 55 |
| Industrial | Academic only | 141 199 | 19.8 27.8 | 40 |
| Industrial | Joint | 259 343 | 29.0 41.0 | 60 |
| Task set | Training | Input | Pre fail | Reach fail | Pres fail | Success |
|---|---|---|---|---|---|---|
| Academic | Academic only | History only | 246 | 32 | 27 | 195 |
| Academic | Academic only | Same-history | 201 | 20 | 23 | 256 |
| Academic | Academic only | Shuffled | 367 | 9 | 25 | 99 |
| Academic | Joint | History only | 237 | 34 | 27 | 202 |
| Academic | Joint | Same-history | 191 | 21 | 26 | 262 |
| Academic | Joint | Shuffled | 372 | 10 | 17 | 101 |
| A. All tasks | |||||
|---|---|---|---|---|---|
| Task set | Training | Prediction condition | [95% CI] | Failed tasks F1 | Successful tasks F1 |
| Academic | Academic only | History only | 0.528 [0.455, 0.595] | 76/215 (35.3) | 0/12 (0.0) |
| Academic | Academic only | Same-history description | 0.595 [0.533, 0.653] | 77/282 (27.3) | 0/14 (0.0) |
| Academic | Joint | History only | 0.473 [0.394, 0.546] | 79/218 (36.2) | 0/12 (0.0) |
| Academic | Joint | Same-history description | 0.605 [0.543, 0.661] | 73/275 (26.5) | 0/13 (0.0) |
| Industrial | Academic only | History only | 0.416 [0.331, 0.501] | 17/47 (36.2) | 0/221 (0.0) |
| A. Academic | |||
|---|---|---|---|
| Full / Connectivity | Success | Reachable; preservation failure | Not reachable |
| Success | 264 | 234 | 0 |
| Reachable; preservation failure | 0 | 0 | 0 |
| Not reachable | 1 | 1 | 0 |
| B. Industrial | |||
| Full / Connectivity | Success | Reachable; preservation failure | Not reachable |