diff --git a/docs/ux/mockups/gen_offer_mockups.py b/docs/ux/mockups/gen_offer_mockups.py index b2379df846..6ddd4caae4 100644 --- a/docs/ux/mockups/gen_offer_mockups.py +++ b/docs/ux/mockups/gen_offer_mockups.py @@ -491,6 +491,84 @@ def ring_items(A, grouped): # ---------------------------------------------------------------- rendering +def menu(cx, cy, header, rows, submenu=None, sub_at=None): + """Vertical list form of the offer. rows: (glyph, name, key, count, enabled, reason). + + The invariant is unchanged — a verb has one permanent row index, and rows that do not + apply are DISABLED IN PLACE, never removed. What changes against the ring is what an + unavailable slot can say: an empty circle says nothing, a greyed row says its own name + and the reason it is grey, in the words the product already ships. + """ + RW, RH, HD = 324, 34, 38 + # The reason line is the whole point of a disabled row, so it must FIT: at 10px italic a + # glyph is ~4.9px, and anything past the box edge is a promise the layout does not keep. + fit = int((RW - 62) / 4.9) + x, y = cx + 26, cy - 30 + h = HD + len(rows) * RH + 10 + if y + h > H - 44: + y = max(100, H - 44 - h) + g = [f'', + f'', + f'{header.upper()}', + f''] + # a leader from the pick point to the menu, so the list is visibly ABOUT that geometry + g.insert(0, f'') + g.insert(0, f'') + for i, (gl, name, key, count, on, reason) in enumerate(rows): + ry = y + HD + i * RH + op = "1" if on else "0.34" + if on and i == 0: + g.append(f'') + g.append(f'') + g.append(glyph(gl, x + 26, ry + RH / 2, C["text"], 0.72, 1.7)) + g.append(f'{name}') + if key: + kw = 13 + len(key) * 6.6 + g.append(f'' + f'{key}') + elif count and count > 1: + g.append(f'') + g.append(f'{count}') + g.append('') + if not on and reason: + r = reason if len(reason) <= fit else reason[:fit - 1].rstrip(" ,—-") + "…" + g.append(f'{r}') + if submenu: + sy = y + HD + (sub_at or 0) * RH - 6 + sh = 12 + len(submenu) * RH + sx = x + RW + 8 + g.append(f'') + g.append(f'') + for i, (gl, name, key, _c, on, _r) in enumerate(submenu): + ry = sy + 6 + i * RH + g.append(f'') + g.append(glyph(gl, sx + 24, ry + RH / 2, C["text"], 0.72, 1.7)) + g.append(f'{name}') + if key: + kw = 13 + len(key) * 6.6 + g.append(f'' + f'{key}') + g.append('') + return "".join(g) + + OVERFLOWS = [] # (selection, doc state, family, verbs that did not fit the sub-ring) @@ -499,6 +577,41 @@ def svg_doc(inner): f'viewBox="0 0 {W} {H}">{inner}') +def render_list_state(A, sel, doc, expand=None): + """The vertical-list form: every family row always present, in the same order, with the + ones that do not apply disabled and carrying their reason.""" + verbs = eligible(A, sel["id"], doc) + grouped = by_slot(A, verbs) + fresh = doc["bodies"] == 0 and doc["sketches"] == 0 + shape = "origin" if (fresh and sel["shape"] == "empty") else sel["shape"] + art, (ax, ay) = scene(shape, 620, 360) + rows, sub, sub_at = [], None, None + for idx, s in enumerate(A["slots"]): + vs = grouped.get(s["id"], []) + if len(vs) == 1: + v = vs[0] + rows.append((VERB_GLYPH.get(v["id"], "fam_" + s["id"]), v["name"], v.get("key"), 1, True, None)) + elif len(vs) > 1: + rows.append(("fam_" + s["id"], s["label"], None, len(vs), True, None)) + if expand == s["id"]: + sub_at = idx + sub = [(VERB_GLYPH.get(v["id"], "fam_" + s["id"]), v["name"], v.get("key"), 1, True, None) + for v in vs] + else: + # Disabled in place, with the product's own refusal text — the thing an empty + # slot in the ring could never say. + cands = [v for v in A["verbs"] + if v["slot"] == s["id"] and v.get("mode", "model") == sel["mode"]] + why = next((v["refusal"] for v in cands if v.get("refusal")), None) + rows.append(("fam_" + s["id"], s["label"], None, 0, False, why)) + status = ("Right-click the geometry to see what you can do with it" if not expand + else f'{sel["name"]} — pick one') + inner = chrome(f'{doc["name"]} · vertical list', status, sel["mode"], empty_doc=fresh) + inner += art + inner += menu(ax, ay, sel["name"], rows, sub, sub_at) + return svg_doc(inner) + + def render_state(A, sel, doc, capacity=8, secondary=None): verbs = eligible(A, sel["id"], doc) grouped = by_slot(A, verbs) @@ -577,6 +690,17 @@ def main(): "detail": {sid: [v["name"] for v in vs] for sid, vs in grouped.items()}, }) + # Form-factor comparison: the SAME state as a ring and as a vertical list. + for sid in ("face_planar", "edge_str", "body_solid", "sk_line", "none"): + sel = next(s for s in A["selections"] if s["id"] == sid) + d = docs["fresh"] if sid == "none" else docs["rich"] + with open(os.path.join(outdir, f"list__{sid}.svg"), "w", encoding="utf-8") as f: + f.write(render_list_state(A, sel, d)) + for sid, fam in (("face_planar", "add"), ("sk_none", "create")): + sel = next(s for s in A["selections"] if s["id"] == sid) + with open(os.path.join(outdir, f"list__{sid}__{fam}.svg"), "w", encoding="utf-8") as f: + f.write(render_list_state(A, sel, docs["rich"], expand=fam)) + # comparison sheet: 8 vs 12 slots on the same three selections for cap in (8, 12): for sid in ("face_planar", "edge_str", "sk_line"): @@ -665,6 +789,16 @@ def write_atlas(A, rows, files, n_prim, n_sec, mean_fill):
+

Decision 0 — ring or vertical list

+

The live question. Both forms carry the SAME map and the same invariant — fixed order, never + re-sorted, nothing compacted; only the geometry differs. Left-click selects; right-click opens the + offer. What the list buys: a disabled row can state its own reason in the words the product + already ships, where an empty slot in a ring is mute; nine sketch primitives fit without an + overflow; shortcuts line up in a readable column; long translated names fit; and it is navigable + by arrow key and by screen reader, which a radial is not. What it costs: no equidistant flick + gesture, and travel to the last row is longer than to the nearest direction. Pairs below — + list first, the same state as a ring second.

+

Decision 1 — ring capacity

The same three selections at eight and at twelve. Eight keeps 45° between neighbours, which is the reliable eyes-free pointing threshold and maps 1:1 to the numpad; twelve buys direct addresses @@ -710,7 +844,21 @@ def write_atlas(A, rows, files, n_prim, n_sec, mean_fill): s = open(p, encoding="utf-8").read() return s.replace("PreparePreviewDesignFEATURESSketch1Extrude1Hole1Fillet1Sketch2Extrude2Right-click the geometry to see what you can do with itWorking document · vertical listSOLID BODYCreateClick a face or a reference plane in the viewport, t…Add materialCreate a sketch, or pick a solid face, firstRemove3Dress-up2Repeat3MoveShift+YReference3Modify3 \ No newline at end of file diff --git a/docs/ux/mockups/list__edge_str.svg b/docs/ux/mockups/list__edge_str.svg new file mode 100644 index 0000000000..3942000d25 --- /dev/null +++ b/docs/ux/mockups/list__edge_str.svg @@ -0,0 +1 @@ +PreparePreviewDesignFEATURESSketch1Extrude1Hole1Fillet1Sketch2Extrude2Right-click the geometry to see what you can do with itWorking document · vertical listSTRAIGHT EDGECreateClick a face or a reference plane in the viewport, t…Add materialCreate a sketch, or pick a solid face, firstRemovePick a face or a plane to drill intoDress-up2Pattern on CurveTransformTransform needs a body — add or import one firstReference3ModifyDelete Face needs a body — add or import one first \ No newline at end of file diff --git a/docs/ux/mockups/list__face_planar.svg b/docs/ux/mockups/list__face_planar.svg new file mode 100644 index 0000000000..5ff6892902 --- /dev/null +++ b/docs/ux/mockups/list__face_planar.svg @@ -0,0 +1 @@ +PreparePreviewDesignFEATURESSketch1Extrude1Hole1Fillet1Sketch2Extrude2Right-click the geometry to see what you can do with itWorking document · vertical listPLANAR FACESketchShift+SAdd material2Remove2Dress-up3PatternShift+NTransform2Reference5Modify2 \ No newline at end of file diff --git a/docs/ux/mockups/list__face_planar__add.svg b/docs/ux/mockups/list__face_planar__add.svg new file mode 100644 index 0000000000..fb80f2a5c7 --- /dev/null +++ b/docs/ux/mockups/list__face_planar__add.svg @@ -0,0 +1 @@ +PreparePreviewDesignFEATURESSketch1Extrude1Hole1Fillet1Sketch2Extrude2Planar face — pick oneWorking document · vertical listPLANAR FACESketchShift+SAdd material2Remove2Dress-up3PatternShift+NTransform2Reference5Modify2ExtrudeShift+EThicken \ No newline at end of file diff --git a/docs/ux/mockups/list__none.svg b/docs/ux/mockups/list__none.svg new file mode 100644 index 0000000000..1e68606383 --- /dev/null +++ b/docs/ux/mockups/list__none.svg @@ -0,0 +1 @@ +PreparePreviewDesignFEATURESnothing yetRight-click the geometry to see what you can do with itFresh document · vertical listNOTHING SELECTEDSketchShift+SAdd materialCreate a sketch, or pick a solid face, firstRemovePick a face or a plane to drill intoDress-upPick an edge to roundRepeatCreate a solid body to pattern firstTransformTransform needs a body — add or import one firstReference4ModifyDelete Face needs a body — add or import one first \ No newline at end of file diff --git a/docs/ux/mockups/list__sk_line.svg b/docs/ux/mockups/list__sk_line.svg new file mode 100644 index 0000000000..1b1c2e9cd2 --- /dev/null +++ b/docs/ux/mockups/list__sk_line.svg @@ -0,0 +1 @@ +PreparePreviewDesignFEATURESSketch1Extrude1Hole1Fillet1Sketch2Extrude2Right-click the geometry to see what you can do with itWorking document · vertical listSKETCH LINECreate9OffsetOTrimTDress-up2MirrorMMoveReference3Modify2 \ No newline at end of file diff --git a/docs/ux/mockups/list__sk_none__create.svg b/docs/ux/mockups/list__sk_none__create.svg new file mode 100644 index 0000000000..0b41268fa6 --- /dev/null +++ b/docs/ux/mockups/list__sk_none__create.svg @@ -0,0 +1 @@ +PreparePreviewDesignFEATURESSketch1Extrude1Hole1Fillet1Sketch2Extrude2Sketch, nothing picked — pick oneWorking document · vertical listSKETCH, NOTHING PICKEDCreate9Add materialRemoveDress-upRepeatTransformReference2ModifyLineLRectangleRCircleCArcASlotSEllipseESplineBPolygonGPointP \ No newline at end of file diff --git a/docs/ux/offer_atlas.html b/docs/ux/offer_atlas.html index 13ef9beac3..c92f694f28 100644 --- a/docs/ux/offer_atlas.html +++ b/docs/ux/offer_atlas.html @@ -36,6 +36,16 @@

+

Decision 0 — ring or vertical list

+

The live question. Both forms carry the SAME map and the same invariant — fixed order, never + re-sorted, nothing compacted; only the geometry differs. Left-click selects; right-click opens the + offer. What the list buys: a disabled row can state its own reason in the words the product + already ships, where an empty slot in a ring is mute; nine sketch primitives fit without an + overflow; shortcuts line up in a readable column; long translated names fit; and it is navigable + by arrow key and by screen reader, which a radial is not. What it costs: no equidistant flick + gesture, and travel to the last row is longer than to the nearest direction. Pairs below — + list first, the same state as a ring second.

+

Decision 1 — ring capacity

The same three selections at eight and at twelve. Eight keeps 45° between neighbours, which is the reliable eyes-free pointing threshold and maps 1:1 to the numpad; twelve buys direct addresses diff --git a/docs/ux/offer_atlas_inline.html b/docs/ux/offer_atlas_inline.html index 51f7b28f61..36fdccf461 100644 --- a/docs/ux/offer_atlas_inline.html +++ b/docs/ux/offer_atlas_inline.html @@ -36,6 +36,16 @@

+

Decision 0 — ring or vertical list

+

The live question. Both forms carry the SAME map and the same invariant — fixed order, never + re-sorted, nothing compacted; only the geometry differs. Left-click selects; right-click opens the + offer. What the list buys: a disabled row can state its own reason in the words the product + already ships, where an empty slot in a ring is mute; nine sketch primitives fit without an + overflow; shortcuts line up in a readable column; long translated names fit; and it is navigable + by arrow key and by screen reader, which a radial is not. What it costs: no equidistant flick + gesture, and travel to the last row is longer than to the nearest direction. Pairs below — + list first, the same state as a ring second.

+

Decision 1 — ring capacity

The same three selections at eight and at twelve. Eight keeps 45° between neighbours, which is the reliable eyes-free pointing threshold and maps 1:1 to the numpad; twelve buys direct addresses @@ -64,4 +74,4 @@ Split, Pattern on Curve, Align to, Measure, Mass, Interference.

The states

-
PreparePreviewDesignFEATURESnothing yetClick a face or a reference plane, then a toolFresh document · 8 slotsSketchShift+SReference4Nothing selected
Fresh document, nothing selected — the first-run picture
PreparePreviewDesignFEATURESSketch1Extrude1Hole1Fillet1Sketch2Extrude2Click a face or a reference plane, then a toolWorking document · 8 slotsSketchShift+SReference4Nothing selected
Nothing selected
PreparePreviewDesignFEATURESSketch1Extrude1Hole1Fillet1Sketch2Extrude2Planar face selected — pick what to do with itWorking document · 8 slotsSketchShift+SAdd material2Remove2Dress-up3PatternShift+NTransform2Reference5Modify2Planar face
Planar face
PreparePreviewDesignFEATURESSketch1Extrude1Hole1Fillet1Sketch2Extrude2Cylindrical face selected — pick what to do with itWorking document · 8 slotsThreadShift+TReference3Modify2Cylindrical face
Cylindrical face
PreparePreviewDesignFEATURESSketch1Extrude1Hole1Fillet1Sketch2Extrude2Curved face selected — pick what to do with itWorking document · 8 slotsThickenDraftShift+DMeasureModify2Curved face
Curved face
PreparePreviewDesignFEATURESSketch1Extrude1Hole1Fillet1Sketch2Extrude2Straight edge selected — pick what to do with itWorking document · 8 slotsDress-up2Pattern on CurveReference3Straight edge
Straight edge
PreparePreviewDesignFEATURESSketch1Extrude1Hole1Fillet1Sketch2Extrude2Circular edge selected — pick what to do with itWorking document · 8 slotsThreadShift+TDress-up2MeasureCircular edge
Circular edge
PreparePreviewDesignFEATURESSketch1Extrude1Hole1Fillet1Sketch2Extrude2Vertex selected — pick what to do with itWorking document · 8 slotsReference4Vertex
Vertex
PreparePreviewDesignFEATURESSketch1Extrude1Hole1Fillet1Sketch2Extrude2Solid body selected — pick what to do with itWorking document · 8 slotsRemove3Dress-up2Repeat3MoveShift+YReference3Modify3Solid body
Solid body
PreparePreviewDesignFEATURESSketch1Extrude1Hole1Fillet1Sketch2Extrude2Sheet body selected — pick what to do with itWorking document · 8 slotsThicken SurfaceSurface OffsetMoveShift+YMeasureModify3Sheet body
Sheet body
PreparePreviewDesignFEATURESSketch1Extrude1Hole1Fillet1Sketch2Extrude2Two bodies selected — pick what to do with itWorking document · 8 slotsCombineShift+BMateReference2DeleteDelTwo bodies
Two bodies
PreparePreviewDesignFEATURESSketch1Extrude1Hole1Fillet1Sketch2Extrude2Datum plane selected — pick what to do with itWorking document · 8 slotsSketchShift+SRemove2MirrorShift+ZReference3Modify2Datum plane
Datum plane
PreparePreviewDesignFEATURESSketch1Extrude1Hole1Fillet1Sketch2Extrude2Datum axis selected — pick what to do with itWorking document · 8 slotsModify2Datum axis
Datum axis
PreparePreviewDesignFEATURESSketch1Extrude1Hole1Fillet1Sketch2Extrude2Coordinate system selected — pick what to do with itWorking document · 8 slotsMateModify2Coordinate system
Coordinate system
PreparePreviewDesignFEATURESSketch1Extrude1Hole1Fillet1Sketch2Extrude2Text / imported art selected — pick what to do with itWorking document · 8 slotsABCPatternShift+NMoveShift+YModify2Text / imported art
Text / imported art
PreparePreviewDesignFEATURESSketch1Extrude1Hole1Fillet1Sketch2Extrude2Closed sketch loop selected — pick what to do with itWorking document · 8 slotsAdd material8PatternShift+NModify2Closed sketch loop
Closed sketch loop
PreparePreviewDesignFEATURESSketch1Extrude1Hole1Fillet1Sketch2Extrude2Sketch, nothing picked selected — pick what to do with itWorking document · 8 slotsCreate9Reference2Sketch, nothing picked
Sketch, nothing picked
PreparePreviewDesignFEATURESSketch1Extrude1Hole1Fillet1Sketch2Extrude2Sketch line selected — pick what to do with itWorking document · 8 slotsCreate9OffsetOTrimTDress-up2MirrorMMoveReference3Modify2Sketch line
Sketch line
PreparePreviewDesignFEATURESSketch1Extrude1Hole1Fillet1Sketch2Extrude2Sketch arc or circle selected — pick what to do with itWorking document · 8 slotsCreate9OffsetOTrimTMirrorMMoveReference3Modify2Sketch arc or circle
Sketch arc or circle
PreparePreviewDesignFEATURESSketch1Extrude1Hole1Fillet1Sketch2Extrude2Sketch point selected — pick what to do with itWorking document · 8 slotsCreate9MoveReference2DeleteDelSketch point
Sketch point
PreparePreviewDesignFEATURESSketch1Extrude1Hole1Fillet1Sketch2Extrude2Two sketch entities selected — pick what to do with itWorking document · 8 slotsCreate9OffsetOTrimTDress-up2MirrorMMoveReference3Modify2Two sketch entities
Two sketch entities
PreparePreviewDesignFEATURESSketch1Extrude1Hole1Fillet1Sketch2Extrude2Add material — pick oneWorking document · 8 slotsExtrudeShift+EThickenPlanar face · Add material
Planar face · Add material sub-ring
PreparePreviewDesignFEATURESSketch1Extrude1Hole1Fillet1Sketch2Extrude2Reference — pick oneWorking document · 8 slotsCoord SysShift+CProjectMeasurePlaneShift+PAxisShift+APlanar face · Reference
Planar face · Reference sub-ring
PreparePreviewDesignFEATURESSketch1Extrude1Hole1Fillet1Sketch2Extrude2Create — pick oneWorking document · 8 slotsLineLRectangleRCircleCArcASlotSEllipseESplineBMore2Sketch, nothing picked · Create
Sketch · Create sub-ring (the overflow case)
PreparePreviewDesignFEATURESSketch1Extrude1Hole1Fillet1Sketch2Extrude2Remove — pick oneWorking document · 8 slotsShellShift+KCutShift+XSplitSolid body · Remove
Solid body · Remove sub-ring
PreparePreviewDesignFEATURESSketch1Extrude1Hole1Fillet1Sketch2Extrude2Planar face selected — pick what to do with itWorking document · 8 slotsSketchShift+SAdd material2Remove2Dress-up3PatternShift+NTransform2Reference5Modify2Planar face
8 slots — planar face
PreparePreviewDesignFEATURESSketch1Extrude1Hole1Fillet1Sketch2Extrude2Planar face selected — pick what to do with itWorking document · 12 slotsSketchShift+SAdd material2Remove2Dress-up3PatternShift+NTransform2Reference5Modify2Planar face
12 slots — planar face
PreparePreviewDesignFEATURESSketch1Extrude1Hole1Fillet1Sketch2Extrude2Sketch line selected — pick what to do with itWorking document · 8 slotsCreate9OffsetOTrimTDress-up2MirrorMMoveReference3Modify2Sketch line
8 slots — sketch line
PreparePreviewDesignFEATURESSketch1Extrude1Hole1Fillet1Sketch2Extrude2Sketch line selected — pick what to do with itWorking document · 12 slotsCreate9OffsetOTrimTDress-up2MirrorMMoveReference3Modify2Sketch line
12 slots — sketch line
+
PreparePreviewDesignFEATURESnothing yetClick a face or a reference plane, then a toolFresh document · 8 slotsSketchShift+SReference4Nothing selected
Fresh document, nothing selected — the first-run picture
PreparePreviewDesignFEATURESnothing yetRight-click the geometry to see what you can do with itFresh document · vertical listNOTHING SELECTEDSketchShift+SAdd materialCreate a sketch, or pick a solid face, firstRemovePick a face or a plane to drill intoDress-upPick an edge to roundRepeatCreate a solid body to pattern firstTransformTransform needs a body — add or import one firstReference4ModifyDelete Face needs a body — add or import one first
LIST · fresh document — every family present, the unavailable ones say why
PreparePreviewDesignFEATURESnothing yetClick a face or a reference plane, then a toolFresh document · 8 slotsSketchShift+SReference4Nothing selected
RING · the same state — an empty slot cannot say anything
PreparePreviewDesignFEATURESSketch1Extrude1Hole1Fillet1Sketch2Extrude2Right-click the geometry to see what you can do with itWorking document · vertical listPLANAR FACESketchShift+SAdd material2Remove2Dress-up3PatternShift+NTransform2Reference5Modify2
LIST · planar face
PreparePreviewDesignFEATURESSketch1Extrude1Hole1Fillet1Sketch2Extrude2Planar face selected — pick what to do with itWorking document · 8 slotsSketchShift+SAdd material2Remove2Dress-up3PatternShift+NTransform2Reference5Modify2Planar face
RING · planar face
PreparePreviewDesignFEATURESSketch1Extrude1Hole1Fillet1Sketch2Extrude2Sketch, nothing picked — pick oneWorking document · vertical listSKETCH, NOTHING PICKEDCreate9Add materialRemoveDress-upRepeatTransformReference2ModifyLineLRectangleRCircleCArcASlotSEllipseESplineBPolygonGPointP
LIST · sketch Create submenu — all 9 primitives fit, no overflow
PreparePreviewDesignFEATURESSketch1Extrude1Hole1Fillet1Sketch2Extrude2Create — pick oneWorking document · 8 slotsLineLRectangleRCircleCArcASlotSEllipseESplineBMore2Sketch, nothing picked · Create
RING · the same submenu — 2 verbs pushed behind “More”
PreparePreviewDesignFEATURESSketch1Extrude1Hole1Fillet1Sketch2Extrude2Planar face — pick oneWorking document · vertical listPLANAR FACESketchShift+SAdd material2Remove2Dress-up3PatternShift+NTransform2Reference5Modify2ExtrudeShift+EThicken
LIST · planar face, Add material submenu
PreparePreviewDesignFEATURESSketch1Extrude1Hole1Fillet1Sketch2Extrude2Add material — pick oneWorking document · 8 slotsExtrudeShift+EThickenPlanar face · Add material
RING · planar face, Add material sub-ring
PreparePreviewDesignFEATURESSketch1Extrude1Hole1Fillet1Sketch2Extrude2Right-click the geometry to see what you can do with itWorking document · vertical listSOLID BODYCreateClick a face or a reference plane in the viewport, t…Add materialCreate a sketch, or pick a solid face, firstRemove3Dress-up2Repeat3MoveShift+YReference3Modify3
LIST · solid body
PreparePreviewDesignFEATURESSketch1Extrude1Hole1Fillet1Sketch2Extrude2Right-click the geometry to see what you can do with itWorking document · vertical listSTRAIGHT EDGECreateClick a face or a reference plane in the viewport, t…Add materialCreate a sketch, or pick a solid face, firstRemovePick a face or a plane to drill intoDress-up2Pattern on CurveTransformTransform needs a body — add or import one firstReference3ModifyDelete Face needs a body — add or import one first
LIST · straight edge
PreparePreviewDesignFEATURESSketch1Extrude1Hole1Fillet1Sketch2Extrude2Right-click the geometry to see what you can do with itWorking document · vertical listSKETCH LINECreate9OffsetOTrimTDress-up2MirrorMMoveReference3Modify2
LIST · sketch line
PreparePreviewDesignFEATURESSketch1Extrude1Hole1Fillet1Sketch2Extrude2Click a face or a reference plane, then a toolWorking document · 8 slotsSketchShift+SReference4Nothing selected
RING · Nothing selected
PreparePreviewDesignFEATURESSketch1Extrude1Hole1Fillet1Sketch2Extrude2Planar face selected — pick what to do with itWorking document · 8 slotsSketchShift+SAdd material2Remove2Dress-up3PatternShift+NTransform2Reference5Modify2Planar face
RING · Planar face
PreparePreviewDesignFEATURESSketch1Extrude1Hole1Fillet1Sketch2Extrude2Cylindrical face selected — pick what to do with itWorking document · 8 slotsThreadShift+TReference3Modify2Cylindrical face
RING · Cylindrical face
PreparePreviewDesignFEATURESSketch1Extrude1Hole1Fillet1Sketch2Extrude2Curved face selected — pick what to do with itWorking document · 8 slotsThickenDraftShift+DMeasureModify2Curved face
RING · Curved face
PreparePreviewDesignFEATURESSketch1Extrude1Hole1Fillet1Sketch2Extrude2Straight edge selected — pick what to do with itWorking document · 8 slotsDress-up2Pattern on CurveReference3Straight edge
RING · Straight edge
PreparePreviewDesignFEATURESSketch1Extrude1Hole1Fillet1Sketch2Extrude2Circular edge selected — pick what to do with itWorking document · 8 slotsThreadShift+TDress-up2MeasureCircular edge
RING · Circular edge
PreparePreviewDesignFEATURESSketch1Extrude1Hole1Fillet1Sketch2Extrude2Vertex selected — pick what to do with itWorking document · 8 slotsReference4Vertex
RING · Vertex
PreparePreviewDesignFEATURESSketch1Extrude1Hole1Fillet1Sketch2Extrude2Solid body selected — pick what to do with itWorking document · 8 slotsRemove3Dress-up2Repeat3MoveShift+YReference3Modify3Solid body
RING · Solid body
PreparePreviewDesignFEATURESSketch1Extrude1Hole1Fillet1Sketch2Extrude2Sheet body selected — pick what to do with itWorking document · 8 slotsThicken SurfaceSurface OffsetMoveShift+YMeasureModify3Sheet body
RING · Sheet body
PreparePreviewDesignFEATURESSketch1Extrude1Hole1Fillet1Sketch2Extrude2Two bodies selected — pick what to do with itWorking document · 8 slotsCombineShift+BMateReference2DeleteDelTwo bodies
RING · Two bodies
PreparePreviewDesignFEATURESSketch1Extrude1Hole1Fillet1Sketch2Extrude2Datum plane selected — pick what to do with itWorking document · 8 slotsSketchShift+SRemove2MirrorShift+ZReference3Modify2Datum plane
RING · Datum plane
PreparePreviewDesignFEATURESSketch1Extrude1Hole1Fillet1Sketch2Extrude2Datum axis selected — pick what to do with itWorking document · 8 slotsModify2Datum axis
RING · Datum axis
PreparePreviewDesignFEATURESSketch1Extrude1Hole1Fillet1Sketch2Extrude2Coordinate system selected — pick what to do with itWorking document · 8 slotsMateModify2Coordinate system
RING · Coordinate system
PreparePreviewDesignFEATURESSketch1Extrude1Hole1Fillet1Sketch2Extrude2Text / imported art selected — pick what to do with itWorking document · 8 slotsABCPatternShift+NMoveShift+YModify2Text / imported art
RING · Text / imported art
PreparePreviewDesignFEATURESSketch1Extrude1Hole1Fillet1Sketch2Extrude2Closed sketch loop selected — pick what to do with itWorking document · 8 slotsAdd material8PatternShift+NModify2Closed sketch loop
RING · Closed sketch loop
PreparePreviewDesignFEATURESSketch1Extrude1Hole1Fillet1Sketch2Extrude2Sketch, nothing picked selected — pick what to do with itWorking document · 8 slotsCreate9Reference2Sketch, nothing picked
RING · Sketch, nothing picked
PreparePreviewDesignFEATURESSketch1Extrude1Hole1Fillet1Sketch2Extrude2Sketch line selected — pick what to do with itWorking document · 8 slotsCreate9OffsetOTrimTDress-up2MirrorMMoveReference3Modify2Sketch line
RING · Sketch line
PreparePreviewDesignFEATURESSketch1Extrude1Hole1Fillet1Sketch2Extrude2Sketch arc or circle selected — pick what to do with itWorking document · 8 slotsCreate9OffsetOTrimTMirrorMMoveReference3Modify2Sketch arc or circle
RING · Sketch arc or circle
PreparePreviewDesignFEATURESSketch1Extrude1Hole1Fillet1Sketch2Extrude2Sketch point selected — pick what to do with itWorking document · 8 slotsCreate9MoveReference2DeleteDelSketch point
RING · Sketch point
PreparePreviewDesignFEATURESSketch1Extrude1Hole1Fillet1Sketch2Extrude2Two sketch entities selected — pick what to do with itWorking document · 8 slotsCreate9OffsetOTrimTDress-up2MirrorMMoveReference3Modify2Two sketch entities
RING · Two sketch entities
PreparePreviewDesignFEATURESSketch1Extrude1Hole1Fillet1Sketch2Extrude2Add material — pick oneWorking document · 8 slotsExtrudeShift+EThickenPlanar face · Add material
Planar face · Add material sub-ring
PreparePreviewDesignFEATURESSketch1Extrude1Hole1Fillet1Sketch2Extrude2Reference — pick oneWorking document · 8 slotsCoord SysShift+CProjectMeasurePlaneShift+PAxisShift+APlanar face · Reference
Planar face · Reference sub-ring
PreparePreviewDesignFEATURESSketch1Extrude1Hole1Fillet1Sketch2Extrude2Create — pick oneWorking document · 8 slotsLineLRectangleRCircleCArcASlotSEllipseESplineBMore2Sketch, nothing picked · Create
Sketch · Create sub-ring (the overflow case)
PreparePreviewDesignFEATURESSketch1Extrude1Hole1Fillet1Sketch2Extrude2Remove — pick oneWorking document · 8 slotsShellShift+KCutShift+XSplitSolid body · Remove
Solid body · Remove sub-ring
PreparePreviewDesignFEATURESSketch1Extrude1Hole1Fillet1Sketch2Extrude2Planar face selected — pick what to do with itWorking document · 8 slotsSketchShift+SAdd material2Remove2Dress-up3PatternShift+NTransform2Reference5Modify2Planar face
8 slots — planar face
PreparePreviewDesignFEATURESSketch1Extrude1Hole1Fillet1Sketch2Extrude2Planar face selected — pick what to do with itWorking document · 12 slotsSketchShift+SAdd material2Remove2Dress-up3PatternShift+NTransform2Reference5Modify2Planar face
12 slots — planar face
PreparePreviewDesignFEATURESSketch1Extrude1Hole1Fillet1Sketch2Extrude2Sketch line selected — pick what to do with itWorking document · 8 slotsCreate9OffsetOTrimTDress-up2MirrorMMoveReference3Modify2Sketch line
8 slots — sketch line
PreparePreviewDesignFEATURESSketch1Extrude1Hole1Fillet1Sketch2Extrude2Sketch line selected — pick what to do with itWorking document · 12 slotsCreate9OffsetOTrimTDress-up2MirrorMMoveReference3Modify2Sketch line
12 slots — sketch line