* claim: #5641
* Cone primitive: solid.cone with base and top radius (#5641)
A cone or truncated cone placed like the cylinder: base centre, axis,
base radius (or diameter), top radius (0, the default, is a full cone)
and height, with the new body / join / cut / intersect choice. It is
built from what the kernel already exposes, a revolve of its half
section about +Z through the origin, moved into place. Toolbar entry
after Torus, a Cone dialog that also places it on a picked face, Edit
Feature, a timeline icon, pending UI strings and attribution, and one
pending design-format change.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
* Frames: a Weldments ribbon tab (#4003)
- WELDMENTS joins the ribbon after SHEET METAL and is built the same way:
Sketch (New Sketch), Create (Frame Member) and Configure (Parameters,
Configurations). Frame Member's home moves there from MODEL > Create.
- Always shown, as a frame starts from a sketch of its lines. It selects
itself and takes the contextual style when the selected body (or the last
body of the active component) is a frame member; sheet metal comes first.
- It uses the default accent until the palette has a colour for it.
- The tab label is in every catalog; docs/ribbon-layout.md, docs/frames.md
and the tab list in docs/control-protocol.md follow.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Frames: Weldments keeps the ordinary tab look (#4003)
Weldments still selects itself when a frame member is the active body, but
no longer takes the solid contextual fill or the 2 px accent line under the
tab row: selected, it looks like a selected Model tab. Only Sketch and Sheet
Metal (on a sheet body) are contextual.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
* claim: #4003
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Frames: the profile library (#4003)
The first slice of frames and weldments: the cross-sections structural members
will be made of, each SolidCraft's own parametric definition built in code
(no vendor or standard size tables are shipped).
- solidcraft_doc::frame: bar, round bar, rectangular and round tube, angle,
channel, I-beam and a generic T-slot extrusion as exact line/arc regions,
with defaults worked out from the profile's size, refusals that name the
dimension that does not fit, anchors and placement, and exact section
properties (area, centroid, Ixx/Iyy/Ixy by Green's theorem).
- frame.profile.list, frame.profile.properties (with mass per metre for a
density) and frame.profile.insert (draws a profile into a sketch, locked by
default, at a point, anchor and angle).
- Tests against hand-computed values (rectangles, circles, composite
rectangles by the parallel-axis theorem, fillet spandrels), hostile input,
extrusion volume, undo; catalog entries in every locale; docs/frames.md;
ROADMAP M15.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Frames: drop the built-in T-slot profile (#4003)
Aluminium extrusions and other vendor sections come from the user's own
sketch (drawn or inserted from the vendor's DXF), so the library keeps the
plain steel shapes only.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Frames: members along frame sketch lines (#4003)
frame.member lays one body per straight line of a frame sketch (2D lines or
3D sketch lines), its cross-section square to the line from end to end:
- profile: a built-in profile, or profile_sketch, a sketch whose material
(nested loops alternating, so two circles make a tube) is the section in
its own x and y around its origin; profiles picks override it.
- anchor (origin, centre, centroid or a bounding-box corner or edge middle),
angle (an angle expression, so a parameter), mirror.
- Orientation: the profile's y as near world up as the line allows, x
square to both; a vertical member's x is world X (frame::member_axes).
- Members follow sketch and parameter edits, undo as one step, save and
reopen (format: pending/frame-members.rs), and are named after the profile
(Rect Tube 40x40x3, (2)…), numbering on past names already taken.
Tests against hand-computed volumes and bounding boxes (rectangle, 3D
tower lines, parameter edit, sketch tube profile and picks, anchor/angle/
mirror), refusals, undo/redo and reopen; walk fixtures and goldens; docs.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Frames: fixes from the adversarial review (#4003)
- Default member lines are what was drawn: projected and other linked curves
and 3D wires (a face sketch's edges) and lines of no length are left out.
- A profile sketch's material starts from its drawn profiles, as
solid.extrude's "all" does, so a section sketched on a face works; the
even-odd test uses outlines and boxes worked out once, capped at 256.
- Member names are pinned to their lines (`names`, by line id; `body_name`
is the base): deleting or adding a line, or deleting another feature, no
longer renames other members, and frame.member stores every name it gives.
body.rename renames a member on its line (also for later member features);
a copy whose body_names were set still names its members by position.
- Built-in profile dimensions are expressions (ProfileSpec): they follow
parameters, bare numbers take the design's units, and they are feature
inputs. frame.profile.properties/insert read them the same way.
- Default root/toe radii shrink to the room a thick section leaves; radii
given are checked by name; a radius must be 0 or at least 0.01 mm; error
messages report the wall or flange value given, not twice it.
- A line within 1e-6 rad of vertical orients as vertical, so rounding never
turns a post a quarter turn.
- A 2D frame sketch in a differently placed component is mapped into the
member's frame, and member features recompute when placements change.
- Caps before lookups for a design's `lines`; a line listed twice is
refused; a 3D wire that runs back on itself is not a line.
Regression tests for each, from the review's scenarios.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Frames: the Frame Member dialog on the ribbon (#4003)
- Frame Member (MODEL > Create) opens a dialog: the frame sketch's lines
picked in the view (or All Lines), a built-in profile and its dimensions or
a section picked in another sketch, anchor, angle, mirror and name, with a
live preview. Edit Feature reopens it filled in.
- Lines picked in the view keep their sketch (a SKETCH_LINES input picks
ExternalSketchCurve): line ids are each sketch's own, so two 3D sketches
both have a `w2`, and the members went on the newer sketch's lines.
- timeline.redefine takes frame.member. Members keep their names through an
edit unless it gives them a new body_name; frame.member takes `names`.
- A member whose section is a whole profile sketch keeps it when edited
(the dialog shows the sketch instead of picking every region, which would
fill a tube's hole).
- An original frame_member icon, open for review, on the ribbon, timeline
and browser.
- The angle profile is listed as L-Angle, and web and flange as Web/Flange
thickness, so they translate apart from the existing Angle, Web and Flange;
the dialog's labels are in en, ja and zh. en-GB no longer repeats the frame
command labels it spells the same.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Sketches drive surface extrudes, revolves, sweeps and lofts, so the Surface
tab gets the same Sketch panel as Model and Sheet Metal. A sketch started
there keeps the tab until it opens.
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
* Ribbon: New Sketch on the Sheet Metal tab again; tests pin sketch enter/exit
Before the ribbon redesign the Sheet Metal tab started with New Sketch. It
gets its own Sketch panel again, like the Model tab's, and a sketch started
there keeps the tab until it opens.
Workspace tests pin the ways into and out of a sketch: New Sketch then a
plane, a double-click in the timeline or the browser, and the browser's Edit
Sketch all open the SKETCH tab looking at the sketch. Finish Sketch from the
palette or the ribbon lands on MODEL with the earlier view back. Escape and
Enter keep the sketch open (#1804), and Undo after Finish reopens it.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* docs: ribbon layout lists Sheet Metal's Sketch panel
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Workspace test: press the keys well apart
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
* ui: spacing, radius and type tokens, per-tab accents, agent and on-accent tokens
* ui: per-tab accent behaviour and a larger application bar with a Start page button
* icons: silhouette master and flat assistant and agent link icons (open for review)
* icons: apply review notes (sparkle assistant, refined plug, silhouette halo)
* icons: wire the silhouette master to inspect.silhouette; record the accepted icons
* ui: application bar to the design: separators, Save, house, assistant icon, readable hovers
* ui: ribbon structure: Model to View tabs, contextual Sketch and Sheet Metal, migrated pins
* ui: ribbon painting to the compact design
* ui: smaller icon button highlight and assistant mark on the bubble corner
* ui: short ribbon labels that wrap at spaces
* ui: ribbon buttons fit their labels and Finish Sketch shows its full name
* ui: constraint gallery, workspace menu, section list headings and richer tooltips
* ui: lighter selected tab label, ribbon surface and dimmer bar separators match the dark design
* ui: document tabs as rounded chips with a dimmer inactive label
* ui: document tabs fit their names and show close only when active or hovered
* icons: close and plus masters for the document tabs (open for review)
* ui: centre the new-tab plus and overflow button on the bar
* ui: a quiet rule under the ribbon tabs on non-contextual tabs
* ui: the application bar mark separates its faces with the bar colour, not white
* ui: open ribbon section label uses the selected tint and a chevron
* ui: dim the tab close and plus icons until hovered
* ui: every ribbon dropdown uses the chevron, the workspace card included
* ui: the active document tab uses the design's surface colour
* ui: the bug button's right padding mirrors its icon side
* ui: square constraint cells and a rule before the grid
* ui: constraint cells back to their earlier size, keeping the rule
* ui: smaller constraint cells and icons, centred in the section
* ui: constraint cells fit the height of the large buttons' icon and label
* ui: sketch Create titles share the other labels' line
* ui: format the application bar and ribbon changes
* ui: active tab surface token and the colour and hover tests that follow the redesign
* tests: the merged parameter and narrow toolbar tests follow the compact ribbon
* i18n: the Malay Gap label has an English source and its Japanese and Chinese translations
* apply_off_thread tests: the evaluation lingers in tests, so still computing never depends on machine speed
---------
Co-authored-by: bherbruck <brennen.herbruck@gmail.com>