Design-for-Change Patterns#
Overview#
A model is "robust" if you can change its inputs by a large amount and it rebuilds without errors, with its proportions still right. Robustness is designed, not accidental. This page lists patterns that experienced Fusion users apply, and the anti-patterns they replace.
The common theme: reference stable things, express intent explicitly, keep each feature simple, and order features from fundamental to cosmetic.
Where to find it#
These patterns use ordinary tools:
- Sketch constraints and dimensions (Sketch palette, D for dimension).
- Construction planes, axes and points (Solid > Construct).
- Project/Include (Sketch > Project / Include > Project), linked sketch geometry.
- Change Parameters (Modify).
- Timeline grouping and renaming.
Step by step#
Pattern 1: anchor sketches to the origin#
- Start sketches with geometry constrained to the origin point or origin axes, not floating.
- Use symmetry about an origin axis for centered parts: draw a rectangle, add a Symmetry constraint (or center-rectangle), and dimension the overall size once.
- Result: changing size grows the part about the origin in a predictable way.
Pattern 2: fully constrain sketches#
- Aim for fully constrained (black) geometry. Under-constrained geometry can jump unpredictably when parameters change.
- Use constraints (horizontal, vertical, tangent, equal, concentric, symmetric) before dimensions; use fewer dimensions.
- Check with a test edit: change a key dimension and watch the sketch. Drag-test any blue (free) elements.
Pattern 3: reference origin planes and construction geometry, not faces#
- Instead of sketching on the top face of an extrude, create an Offset Plane from the origin plane at
box_h. - Sketch on that plane. The sketch no longer depends on a face that may split or vanish.
- Use this for features at heights, mid-planes and datums.
Sketching on faces is fine for quick work; for design-for-change, prefer datums for anything structural.
Pattern 4: skeleton (layout) sketch#
- Make an early sketch that contains only key points, centerlines and critical dimensions (hole spacing, overall envelope).
- Name it "Layout".
- Sketch features on other planes by projecting geometry from the layout.
- To change the design, edit the layout.
Pattern 5: parameters for intent#
- Create user parameters for all values of intent: wall thickness, clearance, hole size, count.
- Express relationships with equations (
boss_od = screw_d * 2.5). - Use the same parameter everywhere the value applies.
Pattern 6: simple features in sensible order#
- Order: base body, major cuts, bosses and ribs, patterns, then fillets and chamfers, then cosmetic details.
- Fillets last so edge changes upstream do not break them.
- Shell before adding internal features that should stay solid, or vice versa, deliberately.
Pattern 7: pattern, don't copy#
- Use Rectangular/Circular/Path patterns driven by a quantity parameter.
- Pattern the feature, not the body, when you want pattern features to remain parametric (the Pattern Type in the dialog can be Features, Faces, Bodies or Components).
- Use mirror about origin planes for symmetric parts. Build half, mirror last.
Pattern 8: select by rule, not by pick#
- For fillets and chamfers, select entire faces (all edges of a face) or use tangent-chain selection, rather than hand-picking a dozen edges.
- If you must pick edges, pick them in a way that survives changes (edges of a stable face).
Pattern 9: separate bodies for separate intent#
- Model parts in their own components.
- Use joints for assemblies rather than moving things manually.
- Share parameters via Derive or Configurations rather than duplicating numbers.
Pattern 10: name and group#
- Rename key sketches, features, planes, and parameters.
- Group timeline stages.
- Comment parameters.
Options reference#
| Pattern | Replaces | Benefit |
|---|---|---|
| Origin-anchored sketches | Floating sketches | Predictable growth |
| Fully constrained sketches | Loosely dragged sketches | No jumping |
| Offset planes | Sketching on faces | No face-dependency breaks |
| Layout sketch | Scattered dimensions | One place to edit |
| Intent parameters | Magic numbers | One source of truth |
| Late fillets | Early fillets | Fewer broken references |
| Parametric pattern | Manual copies | Count becomes a variable |
| Face-based selections | Edge picking | Survives edge changes |
| Naming and grouping | Default names | Faster debugging |
Tips and pitfalls#
Tip: After building, stress-test: change each key parameter to roughly half and double its value. Anything that breaks is a fragility you can fix now.
Tip: Avoid projecting geometry from late-stage features into early-stage sketches. References should point backward in the timeline only.
Warning: Do not add dimensions to fix a sketch that is wrong in intent. Over-constraint errors or conflicting constraints signal a design error; read them.
Warning: Projected geometry creates dependency. If you project the edges of a face and later delete the face, the sketch breaks. Project from origin or construction geometry when possible.
Warning: Heavy dependence on sketch-on-face references and manual edge picking is the single largest cause of broken timelines when users change early dimensions.
Anti-patterns to avoid:
- One enormous sketch with every profile. It rebuilds slowly and is hard to edit.
- "Phantom" dimensions: driven dimensions in grey that nobody reviews.
- Hard-coded numbers for related features (two holes both typed as 5.2 mm).
- Using Move/Copy tool on bodies to fix position instead of constraining sketches.
- Deleting and redrawing geometry instead of editing it; this orphans references.
Making changes safely#
- Save a version.
- Change a parameter, not geometry.
- If something breaks, undo and use the repair routine in Timeline errors.
- When a change needs new features early in history, roll back and insert, then check later features.
Worked example: a flange that survives a 40 percent size change#
Take a flange with outer diameter flange_od = 100 mm, bore bore_d = 30 mm, bolt_circle_d = 80 mm, bolt_d = 9 mm, n_bolts = 6, thickness flange_t = 12 mm.
Derive every relationship rather than typing it.
- Edge margin of a bolt hole:
edge = (flange_od - bolt_circle_d) / 2 - bolt_d / 2. At the nominal size this is 10 - 4.5 = 5.5 mm. A common minimum is 1 times the hole diameter (9 mm), which already fails at nominal. Makebolt_circle_d = flange_od - bolt_d - 2 * edge_minwithedge_min = 4 mmso it follows the outer diameter: 100 - 9 - 8 = 83 mm (hole centers 41.5 mm from the axis, leaving 4 mm of rim). - Spacing between neighbor holes: chord =
bolt_circle_d * sin(180 deg / n_bolts). With 83 mm and 6 holes the chord is 41.5 mm. With 12 holes it is 21.5 mm, more than the 9 mm hole plus a 9 mm web, 18 mm, so 12 is feasible; 14 holes give 18.5 mm, barely; 16 holes give 16.2 mm and the holes crowd each other. Add a driven check parameterchord_ok = chord - 2 * bolt_dand keep an eye on its sign. - Hub height:
hub_h = flange_t * 1.5; keeps the boss proportional.
Fillets. The flange needs a 3 mm fillet at the hub. If flange_od drops to 60 mm, the hub-to-rim face is only about 10 mm wide, so a 3 mm fillet still fits. Use min(3 mm; face_w / 4) to cap it, where face_w is a parameter you compute from the geometry. Note that multiple arguments in Fusion expressions are separated with a semicolon, not a comma.
Stress test. Change flange_od from 100 to 60 mm, and bore_d from 30 to 50 mm. At 60 mm outer diameter bolt_circle_d becomes 43 mm, so a 45 mm bore would swallow the bolt circle. The ring between bore and hole is (bolt_circle_d - bore_d) / 2 - bolt_d / 2; at nominal it is (83 - 30) / 2 - 4.5 = 22 mm, but it must stay above edge_min. Either limit the bore with min(bore_d; bolt_circle_d - bolt_d - 2 * edge_min) or document the valid range in the parameter comment.
Choosing references#
| Reference type | Stability | When it is acceptable |
|---|---|---|
| Origin planes and axes | Excellent | Always |
| Sketch lines in an early layout sketch | Very good | Skeleton designs |
| Construction planes offset from the origin | Very good | Heights, mid-planes |
| Faces of the first extrude | Good | Simple parts |
| Faces created by fillets, shells, patterns | Poor | Avoid for sketches and joints |
| Edges picked one by one | Poor | Only for quick work |
If a reference must point at a face, choose one created by the earliest feature and check it again after a large change.
Constraint and dimension habits#
- Use constraints for geometry relationships (equal, symmetric, concentric) and dimensions for sizes. A circle's diameter driven by
bolt_dand its position driven by a center constraint is more stable than three redundant dimensions. - Dimension from the origin or a datum, not between two arbitrary points; chain dimensions accumulate tolerance and break when one value changes.
- When a sketch turns over-constrained, read the message and remove the conflicting constraint rather than adding a driven dimension to quiet it.
- A fully constrained sketch is a goal, not a rule; a decorative spline may stay free, but note it.
Stress-test protocol#
- Save a version.
- For each key parameter, set it to 50 percent, 150 percent and 200 percent of nominal, one at a time. Record any red icon and the first failing feature.
- Vary pairs that interact (wall and fillet radius, bolt circle and outer diameter) together.
- For counts, test the minimum (2 or 3), a typical value and the maximum that physically fits.
- After the tests, put a limits table in the parameter comments so the next user knows the safe range.
Failure modes and fixes#
| Symptom | Cause | Fix |
|---|---|---|
| Sketch jumps to a different place after an edit | Under-constrained, free sketch element | Add constraints or dimensions from the origin |
| Pattern holes overlap at high counts | No spacing check | Add chord_ok check parameter and a limit |
| Fillet fails at small sizes | Fixed radius larger than the face | Cap with min() |
| Later feature breaks after an early edit | It referenced a face of a fillet or shell | Rebuild it on a construction plane |
| Layout sketch edits do nothing | Features were not projected from the layout | Project the layout geometry into feature sketches |
| Part is correct but the intent is unclear | No names or comments | Rename and comment |
Practice exercise#
Build the flange above and prove it works across a wide range.
- Create parameters:
flange_od100 mm,bore_d30 mm,flange_t12 mm,bolt_d9 mm,edge_min4 mm,n_bolts6, and derivedbolt_circle_d = flange_od - bolt_d - 2 * edge_min. Check the nominal value (100 - 9 - 8 = 83 mm). - Sketch from the origin: center circles for the outer diameter and bore, and one bolt hole on the bolt circle with a construction line to the origin. Extrude with
flange_t. - Add the bolt holes by a circular pattern of the cut feature, Quantity
n_bolts. - Create an Offset Plane at
flange_tand sketch a hub circle of diameterbore_d + 20 mmon it; extrudehub_h = flange_t * 1.5. - Fillet the hub with a radius of
min(3 mm; flange_t / 3). Name every feature and group the timeline. - Stress test:
flange_od100 to 60 mm;bore_d30 to 45 mm;n_boltsfrom 3 to 12. Compute the chord at each count and note the count at which neighbor holes get within 2 mm of each other. - Fix anything fragile and write the safe ranges into the parameter comments.
Expected result: a flange that rebuilds without errors over the documented range, plus a table of tested limits.
Related#
- Timeline errors
- User parameters and equations
- Best-practice modeling workflows