9c0632b07c
Release workflow: a dry run (Run workflow with publish off) keeps the assets as an artifact instead of releasing
bherbruckandClaude Opus 5.52026-10-09 18:01:08 +00:00
3a1f05bacf
Release workflow: only a tag with a suffix (v0.2.0-rc1) is a pre-release; v0.1.1 notes no longer say pre-release
bherbruckandClaude Opus 5.52026-10-09 17:05:03 +00:00
bd8e8c4809
Web: the viewport shader compiles in browsers (a new design no longer shows a black screen)
bherbruckandClaude Opus 5.52026-10-09 16:22:21 +00:00
4562c8e5ba
Save prompt on quit: "Save changes to <name>?" for every unsaved design
bherbruckandClaude Opus 5.52026-10-09 16:03:31 +00:00
d2bc8e9847
README: a 3x-speed demo GIF at the top (agent builds the enclosure over MCP, then edits parameters)
bherbruckandClaude Opus 5.52026-10-09 15:54:48 +00:00
8601611d0c
MCP demo v3 (enclosure_ui_mcp.py --story v3, default): one standoff placed from the parameters (width/2 - inset, depth/2 - inset) and patterned 2 x 2 in the Rectangular Pattern dialog with spacings width - 2*inset and depth - 2*inset, then width 80 -> 100 and wall 2 -> 3 typed into the Parameters dialog; record_v2.sh is now record_ui.sh STORY. A pattern's Direction can be a straight model edge (an edge along an origin axis points the axis's way), scenario pattern_direction_edge. Dialog rows publish their widgets as dialog:<label> handles (combo items dialog:<label>:<item>, OK), the Parameters dialog its expressions (param:<name>), title and close button
bherbruckandClaude Opus 5.52026-10-09 15:09:29 +00:00
3b9a975299
Release workflow: Linux tar.gz and AppImage, Windows zip, universal macOS app, web zip, SHA256SUMS
v0.1.0
bherbruckandClaude Opus 5.52026-10-09 14:41:42 +00:00
1d11898a2c
MCP demo v2: examples/demo/enclosure_ui_mcp.py builds the enclosure through the UI like a person (toolbar clicks, real dialogs, sketches on the model's faces, Look At and back out, orbits between features) with the parameters and their dimensions over MCP; record_v2.sh and overlay.py record it with captions (UI click / MCP call) and a drawn pointer with click ripples. Toolbar buttons, drop-down items and panel labels publish handles (toolbar:<id>, panel:<tab>:<panel>); control method ui.handles lists them
bherbruckandClaude Opus 5.52026-10-09 14:22:08 +00:00
78dd776152
ROADMAP refreshed: parity 328/541 in scope, oracle 76/76, 596 tests; persistent naming, fillet corners, Split Face, Fold and modelled threads no longer listed as missing
bherbruckandClaude Opus 5.52026-10-09 13:11:25 +00:00
2c3fec087e
Drop the vendored truck-meshalgo's VTK export (unused): removes vtkio and lz4_flex 0.7.5 (Dependabot high: uninitialised memory in decompression)
bherbruckandClaude Opus 5.52026-10-09 13:01:14 +00:00
025380277a
MCP demo: examples/demo/enclosure_mcp.py builds an electronics enclosure in the running app over MCP, one execute call per step of enclosure_steps.json (rounded box, shell, USB port cut, four screw bosses, then width 80 -> 100 mm rebuilt), ending on an orbit; record.sh and captions.py record it with ffmpeg and burn in captions
bherbruckandClaude Opus 5.52026-10-09 12:56:58 +00:00
517b7a911c
Split Face cuts with the sketch's exact segments (lines and arcs, kernel::SplitTool::Curves now takes Seg2); a test fillet gets its style
bherbruckandClaude Opus 5.52026-10-09 12:33:38 +00:00
334cb5f498
face.delete help text without the word fillet (MCP list_commands filter test)
bherbruckandClaude Opus 5.52026-10-08 19:36:40 +00:00
846bb112e2
Construction axes, points and planes from model geometry (SOLID ▸ CONSTRUCT): axes through a cylinder/cone/torus, perpendicular to a face at a point, through two planes, two points or an edge; points at a vertex, through two edges, three planes, at the centre of a circle/sphere/torus, at an edge and a plane, along a path; midplane, planes through two edges or three points, tangent to a face, along a path. References (doc::construct::GeoRef) keep picked faces and edges by persistent name and resolve on each evaluation (they follow the model); results live in ModelState.construct, in the component's frame; view::construction_axes/points/planes for the viewport; kernel::face_surface for a face's analytic surface
bherbruckandClaude Opus 5.52026-10-08 19:28:52 +00:00
68271137a5
Split Face (FusionSplitFaceCommand): a timeline feature dividing the picked faces where a plane, another body's face (its surface extended) or a sketch's curves meet them, through kernel::split_faces; the solid is unchanged and the pieces take the face's name with #k. Rebase fixes: duplicate Chamfer and Combine specs; the Delete selection's face test expects Delete Face's refusal
bherbruckandClaude Opus 5.52026-10-08 18:44:32 +00:00
3db6119cc6
Delete Face (face.delete, and faces in the Delete selection): a timeline feature that removes faces and heals the gap from the neighbouring planes through kernel::delete_faces; a picked face brings the rest of its surface (both halves of a hole's wall); face picks are stored by persistent name; a face its neighbours can't close is refused with the kernel's reason
bherbruckandClaude Opus 5.52026-10-08 17:45:28 +00:00
141a5fea8a
Modelled threads (Thread with modeled: true): the ISO 68-1 profile cut along a helix, M3 to M20, on shafts and in bores; running out past a free end of the face, stopping square at a set length. The groove is a watertight screw-sweep mesh (kernel::sweep_helix_mesh) cut by kernel::faceted_boolean (BSP on the faceted body, tolerance ladder checked by A−B + A∩B = A); the polygon rebuild welds vertices across grid cells, splits pinched loops, finds T-junctions through a grid, and takes the group's plane for a loop a hair off flat
bherbruckandClaude Opus 5.52026-10-08 17:28:21 +00:00
1f619e49cc
Extrude and Revolve To Object on curved faces follow the face: the tool runs through the target body and is cut back to its surface (the piece that starts at the profile); tests against a cylinder and a sphere (volumes by integration) and a revolve ending on a post; Shell Outside/Both on a cylinder through the exact curved offsets
bherbruckandClaude Opus 5.52026-10-08 15:52:33 +00:00
1e515547d8
Boundary Fill (SurfaceSculpt): solids from the cells tool bodies enclose (inside some tools, outside the rest), each picked by a point, as new bodies or joined/cut/intersected, tools optionally removed
bherbruckandClaude Opus 5.52026-10-08 15:31:21 +00:00
0daeb0c9fc
Align with snap points: from/to as {snap: vertex|edge_mid|face_center|circle_center, at}
bherbruckandClaude Opus 5.52026-10-08 15:29:20 +00:00
3ee03ac597
Combine: new_component puts the result into a new component (keep_tools already kept the tools)
bherbruckandClaude Opus 5.52026-10-08 15:27:58 +00:00
214dcf7524
Hole To Object (drill to the face the axis meets there, or a point's depth; kept by persistent face name, copies in patterns move it too) and holes at every point of a sketch (standalone points and circle centres) when only the sketch is given
bherbruckandClaude Opus 5.52026-10-08 15:27:02 +00:00
8e36d5d2fe
Shell Outside and Both (walls grown out of the faces, or half out and half in: an offset body less a cavity) and tangent-chain face selection (open faces joined smoothly to the picked ones, by the surface normals either side of each edge)
bherbruckandClaude Opus 5.52026-10-08 15:22:47 +00:00
a46d00f361
Revolve Two Sides (angle2), Symmetric (angle split either side) and To Object (turn until a face, vertex or point, kept by persistent face name)
bherbruckandClaude Opus 5.52026-10-08 15:16:29 +00:00
ab328ae018
Extrude To Object (a face, vertex or point; parallel faces by their plane, others where the profile's middle meets them; to_offset past it) and From Object (start at a face or point); both kept by persistent face name
bherbruckandClaude Opus 5.52026-10-08 15:14:06 +00:00
9ee8ba5dd7
Imported looks outlive later features: a body's imported colour, opacity and face colours (kernel paint, dropped by operations) are carried to the next version of the body, its faces by persistent name (split faces keep the colour, new faces take the body's); assigned face appearances already follow their faces by name
bherbruckandClaude Opus 5.52026-10-08 14:19:04 +00:00
2ea9955621
CONTRIBUTING.md for outside contributors; README status and a Contributing section
bherbruckandClaude Opus 5.52026-10-09 12:32:41 +00:00
d10312b7fd
Command ids are SolveCraft's own: 173 ids that were another product's internal command ids become dotted, lower-case ids (<area>.<thing>[.<variant>]: solid.extrude, sketch.rectangle.two_point, sheet.flange, joint.drive, ...), in the registry, toolbar, dialogs, shortcuts, palette, control channel, MCP, examples, scenarios and docs
bherbruckandClaude Opus 5.52026-10-09 12:17:23 +00:00
740360d7c3
Fillet corners: a radius per edge (kernel::fillet_radii), rounds next to earlier rounds of another radius, and smooth corner patches where three rounds meet
bherbruckandClaude Opus 5.52026-10-08 22:04:30 +00:00
7820ee405b
Chamfer dialog: Chamfer Type (Equal Distance, Two Distances, Distance and Angle) with the second distance or the angle and Flip, sent as the engine's distance2 / angle / flip; Edit Feature restores them
bherbruckandClaude Opus 5.52026-10-08 16:49:41 +00:00
dffa1c79bf
Provenance of sweeps and lofts: swept_origins (start cap in the profile's plane, walls by the profile segment under their start edge, end caps) and sweep_origins for sweep_path tools (walls in profile order, once per station), cross-checked in tests
bherbruckandClaude Opus 5.52026-10-08 18:36:37 +00:00
c9ed3d154d
Web files: designs live in the browser (OPFS), files come in by picker or drop and go out as downloads
bherbruckandClaude Opus 5.52026-10-08 17:32:05 +00:00
d191ae571e
Pending scenario: a root-active sketch on a face of a moved component projects the face where it is (today at the body's own coordinates); harness check linked_world_range
bherbruckandClaude Opus 5.52026-10-08 18:43:55 +00:00
c450619b0a
View animations turn smoothly to the very end: the camera blends heading (the shorter way) and elevation instead of slerping orientations (whose roll-free heading spun near straight up or down, so moves to Top or Bottom snapped in their last frames); test samples every view-cube move at 60 fps for jumps
bherbruckandClaude Opus 5.52026-10-08 15:41:11 +00:00
3f44110b59
One frame for every window (frame.rs): command dialogs dock right and shrink to their content (260 to 380 px, 560 for table dialogs), floating windows are centred and capped (460 px, 760 for tables); header and footer rows right-align without stretching the dialog, long texts wrap; all windows migrated; tests: no egui::Window outside frame.rs, every command's dialog and the floating windows measured within limits
bherbruckandClaude Opus 5.52026-10-08 15:35:42 +00:00
74c7259825
Face provenance (kernel/src/provenance.rs): trace(result, inputs) tells per result face which input faces it lies on (surface and trimmed region, either side) and whether it was kept, modified, split, merged or generated, and per edge its faces and the input edge it lies on; extrude_origins and revolve_origins name a tool's caps and the profile segment each side sweeps, compose carries them through the boolean, blend_origins gives fillet/chamfer faces their edge and offset_origins gives shell walls the face they offset
bherbruckandClaude Opus 5.52026-10-08 18:20:16 +00:00
288bdf7f0f
Sketch on a face: Look At centres on the picked point instead of the plane's origin (a corner of the face), which left the face filling the view off-centre like a big grey square
bherbruckandClaude Opus 5.52026-10-08 18:13:56 +00:00
acc7b83625
UI scenarios are found, not listed: build.rs makes one test per tests/scenarios/*.json, named after the file, and a scenario waiting for a fix says so in its own file with a {"pending": "why"} step (its test is ignored with that reason). No shared list to edit, no numbering required
bherbruckandClaude Opus 5.52026-10-08 16:52:00 +00:00
305c1c9a9b
Dragging sketch geometry snaps like Fusion: a dragged point (or a line dragged by its body, by its ends) snaps onto other points, line midpoints and curves, and letting go there adds the coincident, midpoint or point-on-curve constraint in the drag's undo step; it lines up horizontally and vertically with other points (dashed guides, no constraint). Snap distances in screen pixels; Ctrl or Alt held turns snapping off, also while drawing. Ring and Pt/Mid/On label on the snap. Scenario s42 (coincident and DOF, exact H alignment without a constraint, Ctrl-drag, undo, line body drag); ui.drag hold_end; synthetic drags keep their modifiers
bherbruckandClaude Opus 5.52026-10-08 16:33:51 +00:00
b8d00aea13
Surface Extend: a planar surface's straight edges pushed out (FusionExtendCommand)
bherbruckandClaude Opus 5.52026-10-08 17:20:30 +00:00
69d7bcfe7d
split_faces: faces chosen by position stay chosen when a neighbour's split cuts their edges
bherbruckandClaude Opus 5.52026-10-08 16:03:22 +00:00
f8a4ffbc67
Kernel: split faces by a plane, another face's surface or sketch curves
bherbruckandClaude Opus 5.52026-10-08 16:00:58 +00:00
0670de3f57
Shell and Offset Face on drill tips and tori: samples skip points where the normal is undefined (a cone's apex), the apex moves with its cone, tori offset their tube (the tube circle scaled and revolved again); a box with a drilled hole now shells to its analytic volume
bherbruckandClaude Opus 5.52026-10-08 13:57:13 +00:00
7e2d45602b
kernel::delete_faces(body, faces): Delete Face with healing. The body is rebuilt from its own topology: faces away from the gap stay, planar neighbours keep their other edges, loops that ran along deleted faces (hole rims, boss footprints) go, corners on the gap move to where the neighbouring planes meet across it, and the gap closes with straight edges. Fillets, chamfers, through and blind holes and bosses come off exactly; curved neighbours and gaps the neighbours cannot close are refused naming the face
bherbruckandClaude Opus 5.52026-10-08 12:55:33 +00:00
b8cd3d71e5
Regression test for components as frames (user bug #4, on 7a2eb05): a fillet picked in the world on a moved component with the root active, a sketch on a moved body's face, a body moved into a moved component keeping its place, and a fillet picked on a pasted instance; in its own test module
bherbruckandClaude Opus 5.52026-10-08 15:30:26 +00:00
7a46436158
Scenario s41: a value typed after picking an edge goes into Fillet's heads-up radius (as Extrude and Hole)
bherbruckandClaude Opus 5.52026-10-08 16:01:22 +00:00
c45f3173fa
QA targets for the newest UX reports (pending until their owners land): s37 browser chevrons on every node kind (all toggle; no Joints folder yet), s38 view animations to Top/Bottom end without a jump (the last frame turns 22.5 degrees today), s39 view cube edge/corner hover lights 2/3 patches, s40 toolbar Pin/Remove/reorder survive a restart and the workspace switcher spans the toolbar; ui_layout tests: every command dialog docked right at 260-380 px (or 480-560 for tables; the exploded view is 635), other windows fit on screen. Harness: published rects and counts, browser rows/fold arrows as handles, camera and view_anim steps, ui.at cube points, settings carried over a close restart, an adhoc scenario runner
bherbruckandClaude Opus 5.52026-10-08 15:48:03 +00:00
1e8fc25976
X and the toolbar's Construction no longer start a pick tool (Fusion has none): with a selection they convert it, with nothing selected they switch construction mode, outside a sketch they say so. Center Rectangle draws both diagonals as construction, the centre at their crossing, with only the first carrying the midpoint constraint (the second is implied), so a fresh one stays at 4 DOF. Scenarios s30 (pattern a hole) and s32 (cut in the active component) enabled now that b36b332 is on main
bherbruckandClaude Opus 5.52026-10-08 15:31:10 +00:00
90873e51bb
Construction mode like Fusion: with nothing selected, X (or the toolbar's Construction, or the Sketch Palette's Linetype) switches the drawing line type, so new curves are construction (or centerline) until switched back, the active mode highlighted in the palette and named in the status bar; with a selection they convert it as before; the line type is part of the drawing's undo step. Scenarios: s35 construction mode, s36 the Sketch Palette shows while sketching (also over the tools, back after a window closes, both themes) and goes with the sketch; harness shown/not_shown checks
bherbruckandClaude Opus 5.52026-10-08 15:19:07 +00:00
35ac9569dc
Holes as deep as the material: a drilled hole whose drill point would start exactly on the exit face is cut through (QA: depth = plate thickness failed with coincident faces on curved bodies)
bherbruckandClaude Opus 5.52026-10-08 14:19:29 +00:00
c0f6aeb574
Regression test: lips, grooves and outside lips after bosses (to the rim, ribbed to the walls, against a wall, drafted and filleted) on a shelled enclosure
bherbruckandClaude Opus 5.52026-10-08 14:25:16 +00:00
8497542a3d
Chamfers with two distances or a distance and an angle (distance2 / angle, flip for which face comes first), on straight edges between planar faces; pattern copies keep them
bherbruckandClaude Opus 5.52026-10-08 13:16:04 +00:00
38a6ae3d38
Topology counts: a horn torus pinched to a point is one face (smoothness ignores an edge's ends and points without a normal), with a degenerate loop at the pinch counted as Fusion does (two edges and a vertex); oracle 50 passes, 76/76
bherbruckandClaude Opus 5.52026-10-08 15:02:01 +00:00
109b8acbb5
Topology counts weld coincident vertices and edges, and merge two pieces of one surface only across an edge that just those two share: tangent holes touching along a line keep the wall cut at the pinch, the same way at every pinch (oracle 42 passes; 75/76)
bherbruckandClaude Opus 5.52026-10-08 14:44:33 +00:00
c0725ebc86
Dialog parity: Mirror has Object Type (Bodies / Features, a hole mirrored as a feature; Edit Feature keeps it); Thread has Full Length (a length only when off)
bherbruckandClaude Opus 5.52026-10-08 13:48:10 +00:00
551d068ae2
Chamfers with two distances or a distance and an angle (distance2 / angle, flip for which face comes first), on straight edges between planar faces; pattern copies keep them
wip/solvecraft-kernel
bherbruckandClaude Opus 5.52026-10-08 13:16:04 +00:00
b36b332619
Patterns and mirrors of holes drill each copy afresh (its spot moved by the instance transform and found on the surface there), so a blind hole's depth counts from the face at the copy instead of from the bottom of the original hole (QA s30: three blind holes now remove three holes)
bherbruckandClaude Opus 5.52026-10-08 13:49:54 +00:00
83a10c813a
Unit-less parameters used as lengths read in the design's units (feature evaluation and parameter values; bare numbers stored in inputs stay mm); document.units checks what the geometry reads (Document::length_inputs) and writes the old unit (with it as the parameter's unit) into bare unit-less parameters that would move; cached results keyed on the design's units
bherbruckandClaude Opus 5.52026-10-08 13:48:25 +00:00
e30309be0d
Insert Fastener (FusionFastenersCommand) on SOLID > INSERT, icon "fastener": the Insert Part dialog's command (same as parts.insert)
bherbruckandClaude Opus 5.52026-10-08 13:08:10 +00:00
f7c26d8dfe
Standard parts library (parts.library, parts.insert, parts.resize): ISO 4762 socket head cap screws, ISO 4014/4017 hex bolts, ISO 4032 nuts, ISO 7089 washers, ISO 4026 set screws, ISO 8734 dowel pins and 6000/6200/600-series bearing envelopes, M3–M20, built in code from the standards' dimensions as their own components with cosmetic threads; inserted at a hole's rim they get a rigid joint that puts them on the hole's axis seated on its face; resize rebuilds in place. Circle joint origins are named after the cylindrical wall
bherbruckandClaude Opus 5.52026-10-08 13:04:37 +00:00
b2d0452656
Fold: with no fixed side the larger side stays, whichever side of the line it is on (the side areas were measured from the wrong point for one side; QA s22)
bherbruckandClaude Opus 5.52026-10-08 12:53:25 +00:00
05b38e0f5f
Persistent naming for sheet metal: base panel edges are named after the base sketch line they lie on, flange edges after their flange (F<feature>.<k>) and side (far / side0 / side1, top or bottom face); flanges and hems store edge names and pick by name first (a name that is gone keeps the point with a warning)
bherbruckandClaude Opus 5.52026-10-08 12:51:32 +00:00
23e50e4540
Persistent naming: shell inner faces named after the wall face they offset (F<shell>:inner:<face>), sweep and loft faces by start/end caps and the profile curve each side sweeps
bherbruckandClaude Opus 5.52026-10-08 12:47:08 +00:00
7c611aec0c
Booleans stay in their component: a join, cut or intersect without explicit targets changes only its own component's bodies (and what it made), auto join/cut looks only at the active component; any feature takes participants: [bodies] to reach other components ("*" = every body); file format 5 gives older features in designs with components participants ["*"] so they keep their shape
bherbruckandClaude Opus 5.52026-10-08 12:44:38 +00:00
2886399215
Bare lengths typed into features (commands and parameter edits) mean the design's units: they are stored with the unit written in (2 in an inch design is "2 in"); lengths with units, angles and mm designs are unchanged
bherbruckandClaude Opus 5.52026-10-08 11:15:48 +00:00
a762391697
Move triad handles published for scenarios (move_x, move_rz…); s33 (Move opens at 0, the X arrow moves along X only) enabled
bherbruckandClaude Opus 5.52026-10-08 13:46:27 +00:00
8fa566af33
Continuous orbit (navigation bar): the view turns about the vertical until the next click or key
bherbruckandClaude Opus 5.52026-10-08 13:40:34 +00:00
1970b8c680
Viewport: a soft ground shadow under the model, seen from above (ui groundShadow, on by default)
bherbruckandClaude Opus 5.52026-10-08 13:37:33 +00:00
54c7690271
Viewport: silhouette outlines on curved surfaces (back faces pushed out on screen, drawn behind the model) in the styles with edges; new visual style Shaded with Hidden Edges (edges behind the model drawn faintly)
bherbruckandClaude Opus 5.52026-10-08 13:34:10 +00:00
aee1e941bf
Camera: Fit (F6, navigation bar) frames the selection when there is one; the wheel zooms toward the model's surface under the cursor
bherbruckandClaude Opus 5.52026-10-08 13:27:46 +00:00
a3d187ccd1
Appearances in the viewport: per-face looks colour their faces, and see-through bodies and faces (opacity below 1) draw as glass: far sides first, then near sides, blended over the model
bherbruckandClaude Opus 5.52026-10-08 13:24:42 +00:00
2b9ed16cc8
Move/Copy like Fusion: opens with nothing moved and a full triad at the bodies' centre (X/Y/Z arrows, plane squares, rotation rings, free-drag centre ball; snapped drags, Alt/Ctrl free), Move Type (Free Move, Translate, Rotate, Point to Point, Point to Position), X/Y/Z distances and angles with live preview, a pivot input; the triad is one shared module (gizmo.rs); UI scenario s27
bherbruckandClaude Opus 5.52026-10-08 12:42:03 +00:00
fba397ff65
Pattern Features also picked on the canvas: a face stands for the feature that made it (traced through the timeline states, cached per revision)
bherbruckandClaude Opus 5.52026-10-08 11:37:50 +00:00
8045904c54
Lofts through three or more sections are smooth: each side is one B-spline surface through every section (the middle sections leave no edges); two sections stay ruled
bherbruckandClaude Opus 5.52026-10-08 13:39:47 +00:00
06186be555
Press Pull on a fillet's or chamfer's face edits that feature's size by the distance (found through the face's persistent name); on another curved face it offsets the face, with the rest of its surface (both halves of a hole's wall)
bherbruckandClaude Opus 5.52026-10-08 13:12:08 +00:00
59b59a83e6
UI scenarios: the user's four open bugs as ignored targets (s31 sketch on a face projects its loops, s32 a cut in the active component leaves others alone, s33 Move opens at 0 and its X arrow moves along X, s34 moving a component carries its sketches); Fold, configurations, motion study and autosave/recovery enabled against the landed features (s22–s25); retests: fillets follow their edge after a sketch edit (s06 volume, s15 widens the sample plate), one canvas panel (s19); s30 patterns a hole as a feature (ignored: one hole results). Harness: manipulator handles published by name (scenario::publish_handle; ui.at {handle}; timeline items as timeline:<name>), restart after a crash or close, autosave into the scenario's folder, exact widget text before menu-label prefixes, checks for sketch curves, body volume and sketch points in the world
bherbruckandClaude Opus 5.52026-10-08 13:00:01 +00:00
0a1b6f0fff
STEP export: pieces of a plane or extruded cylinder written as one face
bherbruckandClaude Opus 5.52026-10-08 12:54:44 +00:00
c009bb2c2a
Menus take the keyboard (Up/Down choose a row, Enter runs it); F2 renames the selected body, sketch, feature, plane, component or canvas
bherbruckandClaude Opus 5.52026-10-08 12:47:31 +00:00
0ee343b9e6
Shell and offset faces on cones and spheres too (a dome moves to a smaller sphere about its centre, a cone's apex slides along its axis); surface fitting robust to poles and half cylinders; a shell retries on the unhealed body when the healed one won't cut
bherbruckandClaude Opus 5.52026-10-08 12:24:15 +00:00
fec99468d2
Capture Position question: starting a command or saving while components were moved without capturing asks Capture Position / Revert / Cancel, then goes ahead; ui.capture control method
bherbruckandClaude Opus 5.52026-10-08 12:40:28 +00:00