Repository navigation
OM9 add-on: Vietnamese interface and the full Curve menu (58 commands) as in Matrix 9 - #3
Merged
Merged
Conversation
- om9-addons: package install/enable/settings/keymap host (Blender-style extensions) with a native runtime that loads add-on libraries through a small C ABI (om9-addon-abi) and validates every returned mesh. - addons/gem_on_curve: round stones spaced along selected curves (BuilderGemOnCrv, BuilderGemCountOnCrv); addons/ring_sizes data library. - om9-app: Tools > Add-ons window, Install Add-on from Disk and drag-drop; add-on commands light up the existing menu, icon, F6 and CMD names, and unsupported commands stay visible and disabled. Gems are inserted in one transaction with the om9.gem slot, so one Undo removes them. - om9-core: an Insert now charges and validates the inserted entity's extensions, so an entity can be created together with its semantic slot. - CI: build-addons-windows.ps1 builds, packages, validates and smoke-installs the Windows packages and uploads the om9-addons artifact. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DqTCtKBxsZaijGAGathCSb
Opening a document builds a replacement controller; the add-on host and its command-name table were left behind, so after File > Open the Gem commands reported "unknown command". Found while testing the CI build on Windows. adopt_contract_state now carries the host, names and pending messages; the add-on test opens a saved ring through File > Open and runs Gem Count On Crv again. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DqTCtKBxsZaijGAGathCSb
… preview A command declared `builder = true` no longer runs on click. It opens a builder that shares one state between three places: - command line: prompt plus option tokens (Size=1.5 Spacing=0.2 ...); typing Size=2 or clicking a token changes a value, Enter accepts, Esc cancels, another command closes the builder; - BUILDERS panel below Projects: command thumbnail with a live sketch of diameter/gap and count, Accept/Cancel/Defaults, every parameter as a drag/type field and one slider for the selected parameter; - viewports: cyan outline preview of the result for the selected curves (never a document object; the curve can be picked while open). Accepting creates the result in one transaction and stores the values as the add-on's defaults, so the Add-ons window no longer edits settings; it lists commands (clickable), enable state and uninstall. Host: [[commands]] builder, [[settings]] option / choice_labels, command_info, invoke_with (per-call overrides, validated) and store_settings (all-or-nothing). The host now reports "đã đặt N viên" after commit, so a preview never claims placement. gem_on_curve 0.4.0. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DqTCtKBxsZaijGAGathCSb
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DqTCtKBxsZaijGAGathCSb
… Gem Cutter add-ons - ABI: optional om9_addon_session symbol with a stateless JSON step protocol (prompt, command-line options, wanted input, preview, rubber band, created geometry or transforms). - Host/app: interactive commands run step by step from CMD, F6 and their OM9 icons; clicks, typed points and sub-options; one transaction on finish; builder panels combine with sessions (Gem Cutter). - Icons whose catalog code an enabled add-on provides become active in menus and toolbars. - New add-ons: curves (13 commands), transform (11), gem_cutter; shared geom maths. - gem_on_curve 0.4.1 records the gem frame so transforms and cutters follow placed stones. - CI packages all native add-ons and fails when one cannot be enabled. - docs/matrix9-commands.md: generated catalog of the Matrix-style menus with status. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DqTCtKBxsZaijGAGathCSb
…ixes Upstream now implements most Curve, Surface and Solid commands and the Top 11 buttons in OM9 itself. Built-in commands keep their typed names and icons; add-on commands fill the remaining icons (Controller::icon_target decides for menus, toolbars and the catalog). - Snaps also serve points an interactive add-on asks for; hover events are sent only when the pointer moves. - Interactive add-on panels close when their session finishes, keeping the accepted values. - Builds without OCCT (--no-default-features) compile again: kernel-only solid helpers report the missing kernel. - The command catalog is generated and checked by crates/om9-app/tests/command_catalog.rs with the real icon resolution. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DqTCtKBxsZaijGAGathCSb
One add-on (om9_matrix) links every menu crate into one library and carries a generated manifest, a help page per command and an index. Enabled add-on commands take over the icon and typed name from OM9's own command. The session protocol gains mesh data for selected objects, per-object transforms, deletions, geometry replacement and gem record updates. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DqTCtKBxsZaijGAGathCSb
Orient, Shear, Symmetry, Remap, Move UVN, Make Down Facing, deformations (Bend, Taper, Twist, Stretch, Maelstrom, Soft Move, Set Points, Project, Flow Along Curve/Surface, Smart Flow, Splop, Cage Edit) and placements along curves and surfaces. The session protocol gains NURBS surfaces and the exact definition of selected curves and surfaces. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DqTCtKBxsZaijGAGathCSb
Primitives, mesh booleans (BSP), extrusions with holes, boss/rib/slab, holes, move face, cap holes, extract surface, shell and fillet edge (signed distance grid, marching tetrahedra). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DqTCtKBxsZaijGAGathCSb
Rebuild, refit, blends, curves from two views, project, pullback, intersections, offsets, isocurves, fillets and chamfers, UV curves, extend, seam, continue, divide, curve boolean, tween, duplicate edge/border, cross sections, sketches, curves on surfaces, section, match, silhouette, wireframe and soft edit. A command's own code now always resolves to it even when another command shares its feature. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DqTCtKBxsZaijGAGathCSb
Gem on Curve Advanced, Gem List and Multi on curves, Gem Profile, Orient to Gem, Gem on Surface, Pave Builder, Auto Pave, Pave Sphere, Pave prongs and azure cutters, tapered baguettes, clusters, Gem Springs, Follow, Control, Positioner, Gem Flow and Splop, Match Attributes and Save / Load Style. Stones now remember the settings and cutters built on them. Settings: SubD bezel, Pull to Rail, Prong Editor, Prong and Bead on Surface, Metal from Gems. A command receives only its own settings. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DqTCtKBxsZaijGAGathCSb
Eternity band, signet and SubD signet, SubD ring, text on curve, raised band, award ring top, rope, jump ring, freeform and grid knots, pattern and nautilus builders, and mill work along curves and over areas. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DqTCtKBxsZaijGAGathCSb
Ring rail, profile placer, outside rail, custom rails, four-rail profile, profile, merge and end cap, smart targets and blends, join, metal weights, ring resizer, surface pullback, our own parametric settings and findings libraries, image trace (PNG, BMP, PGM), object checker, mesh repair, reducer and conversion, 3D printing sprues, object on curve, surface inset, curve transform and center line. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DqTCtKBxsZaijGAGathCSb
Sweeps (1 rail, 2 rails, profile, four profiles, multi rail), loft, curve network, patch, edge curves, planar curves, plane, exact revolve, rail revolve, extrude, blends, fillets and chamfers (variable too), offsets, tween, merge, match, drape, heightfield, split, extend, extrude normal to surface, unroll and smash, soft edit, cutting plane, seam, tangent, rebuild, refit, shrink and untrim. Geometry: surfaces fitted through point grids; ear clipping no longer stalls on the doubled corners of hole bridges (planar faces with holes were wrong). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DqTCtKBxsZaijGAGathCSb
Polygon cages with Catmull-Clark smoothing (boundaries and creases stay sharp). Primitives, pipe, sweeps, loft, revolve, from curves, surfaces and meshes, to NURBS, a library of shapes. Edits: item move / scale / rotate, divide, split sides, inset, knife, offset, extrude, bridge, append face, crease, flip, project, collapse, match, weld, symmetry, wrap, fill, shell, extract, subdivision level, isocurves. OM9 selects whole objects, so the add-on keeps a face selection per object (loop, ring, UV, paint, grow, shrink, invert, all, none, naked, creased, coplanar, sets) that the edits use. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DqTCtKBxsZaijGAGathCSb
Edit points and control points (pick a point, place it, repeat), explode, join, split (curves at a point, meshes along a line), trim (click the parts between crossings) and ring rail. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DqTCtKBxsZaijGAGathCSb
The Windows add-on build makes om9_matrix-<ver>-windows-x64.zip (one DLL, help pages, icons, README) instead of separate packages and smoke-lists the Gems, Clayoo, Surface and Tools menus. The command catalog now reports both OM9's own commands and the package's: every slot of the 11 Matrix menus is covered by the package. Version 0.9.0. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DqTCtKBxsZaijGAGathCSb
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DqTCtKBxsZaijGAGathCSb
…unds Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DqTCtKBxsZaijGAGathCSb
Each of the package's commands runs on a small scene (curve, circle, box, stone, NURBS plane) with and without a selection: start, hover, clicks, a number, Enter, cancel, undo. None panics and the scene always comes back. Cage Edit, Intersect Two Sets and Smart Flow Pull Down keep their guidance in the prompt after a refused Enter. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DqTCtKBxsZaijGAGathCSb
…t editor Solid > Solid Points On and Transform > Solid Points ON now open the Top 11 point editor on the selected solids (mesh vertices / NURBS control points) instead of only explaining it. When points are stacked along the view, the one nearest the viewer is picked. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DqTCtKBxsZaijGAGathCSb
Found on the Windows PC: a builder command started with the stone already selected (icon click) previewed the head but kept ✔ disabled and Enter went nowhere, because the panel read the session's preview only when the values or the selection changed. The panel now follows the session every frame, and the command line takes the keyboard when a builder opens so Enter ends it as in Matrix. Orient on Surface / Orient Perpendicular to Curve behave like Rhino: Copy=Yes (default) places a copy at every click until Enter, Undo takes the last back, Copy=No moves once, Flip turns the objects over; only the objects are previewed, not the target. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DqTCtKBxsZaijGAGathCSb
The panel showed 'Ring size 7.0 mm' and a length setting would be unit-scaled in inch documents. Found while testing Ring Rail on the Windows PC. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DqTCtKBxsZaijGAGathCSb
A window selection around a ring also catches the gem layout circle, which was swept as a fifth profile and twisted the shank. Found testing Profile Placer + Profile Sweep on the Windows PC. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DqTCtKBxsZaijGAGathCSb
OM9 closed without a message on the Windows PC during Boolean Builder on a ring of 18 stones with its metal and cutters. The BSP boolean recurses as deep as the meshes have faces, and the host ran the add-on on the UI thread (1 MiB stack on Windows). The native runtime now runs each session step on a 256 MiB thread, and csg::boolean itself works on a 512 MiB thread, so other hosts are covered too. Boolean Builder also recomputed the whole boolean on every cursor move; it keeps the last result by objects x cutters x mode, and sorts the cutters so the same selection always gives the same solid. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DqTCtKBxsZaijGAGathCSb
On the PC, Uninstall of OM9 Matrix failed with "Access is denied": Windows keeps a library that was loaded mapped until OM9 exits, so its folder can be neither deleted nor renamed, and an update of the same add-on fails the same way. Locked files are now renamed into extensions/user/.trash (Windows allows renaming a mapped file), the folder is removed, the trash is emptied at the next start, and an update says to restart OM9 to use the new library. The Add-ons window shows Uninstall above the command list (the package lists 337 commands) and opens the list only for small add-ons. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DqTCtKBxsZaijGAGathCSb
- om9-addons: i18n module (lang/<code>.toml tables: menus, commands, options,
values, phrases with {} holes), Host::translator(), add-on-wide settings
(scope = "addon") that never appear in command panels or the command line.
- OM9 Matrix package: lang/vi.toml with Vietnamese names for every menu cell
(428 codes + Top 11), Curve sub-options and prompts; language setting
(Tiếng Việt / English) chosen in Preferences > Add-ons.
- om9-app: prompts, sub-option tokens, history lines, menu and category
names and icon tooltips follow the language; English and Vietnamese
option names (with or without accents) are both accepted when typed.
- Tests: i18n unit tests, package coverage, native install, controller test
for Vietnamese display with English typing; CI packs the lang folder.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017AChfY1X8M1iXCrsZMoDud
…ngle, Circle, Ellipse Checked against the Matrix 9 command-line prompts (user's recording) and the Rhino 5 help of each command; every variant creates real geometry and is tested. - Polyline: Mode=Line/Arc (tangent arcs, Direction, Center), Helpers guide lines, Length from the 2nd point, Close from the 3rd, prompts as in Matrix. - Line (typed name "Line" now works): BothSides, Normal (surface, polysurface or mesh normal, IgnoreTrims), Angled, Vertical, FourPoint, Bisector, Perpendicular (from curve / Point / PointOnCurve / 2Curves), Tangent (on curve / Point / 2Curves), Extension. BothSides doubles the typed length. - InterpCrv: Knots submenu (Uniform, Chord, SqrtChord), StartTangent, EndTangent, Close = smooth periodic seam, Sharp = kinked seam, AutoClose and PersistentClose smooth. - Rectangle: 3Point, Vertical, Center, Rounded with Corner=Arc/Conic and Rho, radius typed or a point the corner passes through, Enter = square. - Circle: Deformable (Degree, PointCount=10), Vertical, 2Point, 3Point, Tangent (2 curves + radius, or 3 curves), AroundCurve, FitPoints, Radius/Diameter/Circumference/Area, Orientation. - Ellipse: Deformable, Vertical, Corner (box or from the center), Diameter, FromFoci with MarkFoci, AroundCurve. - geom: interpolation with knot styles, end tangents and periodic closing (clamped by knot insertion), deformable circle/ellipse, conic corners. - Vietnamese prompts for all of the above; a test checks every prompt of these commands has a translation. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017AChfY1X8M1iXCrsZMoDud
…d, Match as in Matrix 9 Curves are now picked by clicking them, as in Matrix: the host sends the click point with the selection (Event.pick) and the commands keep the picked side (Fillet, Chamfer) or use the picked end (Extend, Blend, Match). - Fillet/Chamfer: Radius=1 / Distances=1,1, Join, Trim, ExtendArcsBy; short curves are extended, Radius=0 makes a sharp corner. - Offset: Distance, Corner=Sharp|Round|Smooth|Chamfer, ThroughPoint, Tolerance, BothSides, InCPlane, Cap; lines/arcs stay exact. - Extend: boundaries, typed length or dynamic; Type=Natural|Line|Arc|Smooth. - Blend (quick), BlendCrv (Continuity1/2 up to G4, Flip, Bulge, Join), ArcBlend (exact biarcs, RadiusDifference, AlternateSolution), Match. - geom: exact join, sub-curves, natural extension, Bézier blends, biarcs; Flow gains curve picks, Enter-to-confirm and Rhino-style number options. - Vietnamese prompts and option names for all of them. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017AChfY1X8M1iXCrsZMoDud
…an, CSec, Section as in Matrix 9 - Rebuild: PointCount, Degree, DeleteInput, PreserveTangents with a live preview and the maximum deviation; uniform knots, least squares, ends kept (closed curves stay smooth across the seam). - FitCrv: fewest control points within FittingTolerance. - Divide: Number of segments or Length, Split, MarkEnds. - Convert (Curve to Lines): Output=Lines|Arcs, Angle, Tolerance, MinimumLength, MaximumLength, DeleteInput. - TweenCurves: pick start and end curves; Number, MatchMethod, SampleNumber, Flip. - CurveBoolean: click the regions to keep (planar map of the curves, holes included); CombineRegions, AllRegions, DeleteInput=None|All|Used; the result follows the exact input curves. - CSec and Section: repeated section lines until Enter. - geom: least-squares B-spline fitting (open and periodic). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017AChfY1X8M1iXCrsZMoDud
…trol Point Curve as in Matrix 9 - Arc: Center/Start/Angle with Length and Direction; StartPoint (start, end, point; Direction before or after the end; ThroughPoint; Radius and side); Tangent (two picked curves and a radius); Extension (tangent to a picked end); Deformable (Degree, PointCount). "Arc Start End Direction" opens at StartPoint with the direction after the end. - Polygon: Mode=Inscribed|Circumscribed, Edge (Flip), Star (second radius, Automatic), Vertical, AroundCurve. - Helix and Spiral: Diameter/Radius, Mode=Turns|Pitch, Turns, Pitch, ReverseTwist, Flat, Vertical, AroundCurve (rotation-minimising frames). - Control Point Curve: Close is smooth (periodic) unless Sharp=Yes. - geom: the tangent-circle solver is shared by Fillet and Arc Tangent; periodic control-point curves. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017AChfY1X8M1iXCrsZMoDud
…rve, SoftEditCrv and the rest as in Matrix 9 - Project / Pull: curves and points first, then the targets (two selections, as in Rhino); Loose keeps the control structure, DeleteInput; projections refine onto exact surfaces and split where the curve leaves. - OffsetCrvOnSrf (pick curve, surface, side; Distance, ThroughPoint) walks along the surface; OffsetNormal offsets along the surface normal. - ExtractIsocurve: pick the surface, then click locations until Enter; Direction=U|V|Both, Toggle, ExtractAll. - SoftEditCrv: pick the curve, the point and the target; Distance, Copy, FixEnds; control points move with a falloff and the picked point lands on the target. - Crv2View picks two curves; CurveThroughPt uses the points as control points (Degree); CrvStart/CrvEnd make points only; Continue curves from the picked end; Sketch has OnSurface/OnMesh; Rhino prompts for Intersect, IntersectTwoSets, CrvSeam, DupEdge, DupBorder, Silhouette, ExtractWireframe, CreateUVCrv, ApplyCrv, PolylineOnSrf, InterpCrvOnSrf. - Rhino typed names added as aliases (CurveThroughPt, CrvStart, CrvEnd, TweenCurves, CurveBoolean, OffsetNormal, gvCrv2ViewHistory, gvPolylineOnSurface); Vietnamese for every new prompt and option. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017AChfY1X8M1iXCrsZMoDud
…cks pick curves in Line/Circle/Ellipse - Project lands on every crossing along the active view's CPlane normal (both ways, as in Rhino): a curve over a ring gives its top and bottom; points too. Loose projects layer by layer. - Reply.track (ABI): the host keeps the state of hover replies, so Sketch draws while the pointer moves: click to start, move, click to end. - Line Perpendicular/Tangent: the click on the curve is the start; 2Curves makes the line on the second pick. Circle and Ellipse AroundCurve: the click on the curve is the center. - Controller test: Fillet by two clicks and a sketched stroke. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017AChfY1X8M1iXCrsZMoDud
Upstream split session.rs into modules and rewrote the command-option bar; the add-on hooks move with it: - dispatch_geometry.rs: an enabled add-on runs instead of the built-in. - submit_effect: an open add-on session/builder reads the line first; a typed add-on command name runs the add-on. - prompt_with_options shows the add-on prompt (prompt_text is an alias). - feature_icon resolves icons through icon_target (add-on first), keeping upstream's Solid special cases; builder_slot_ui shows an open add-on builder; the add-on option tokens sit next to upstream's option bar. - The add-on builder prompt is renamed addon_builder_prompt (upstream has its own builder_prompt); upstream's no-kernel solid stubs replace ours. - docs/matrix9-commands.md regenerated. Tests: addon_session 11, addon_smoke 2, command_catalog, addon_command. om9-app unit tests: 212 pass; the same 4 fail on upstream main as well (menu catalog icon list, sphere options, icon size audits). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017AChfY1X8M1iXCrsZMoDud
…art on the surface - Grips (F10 control points / edit points): click, Shift/Ctrl+click and window-drag pick grips; picked grips are drawn yellow and carry the gumball (move/rotate/scale), dragging a picked grip moves the whole group, with a live preview of the edited curve. Esc drops the picked grips first. Grip drags follow object snaps. - A joined curve (polyline) shows one grip per joint, and moving it moves both segments, so the join no longer opens. - Several grip moves commit as one transaction (one Undo). - Snaps work while an add-on command asks for a point. - Curve display samples every NURBS knot, so polygon corners are drawn sharp instead of cut. - Project/Pull: the curve is split exactly where it leaves the surface (the piece through a closed curve's seam stays one piece), corners stay sharp, straight spans stay lines, so a polygon projects to a polyline. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017AChfY1X8M1iXCrsZMoDud
…ct for curves, shape audit Compared every Curve command's options with the Rhino 5 command help (Matrix 9 runs on Rhino 5) and the Matrix toolbar variants: - CurveThroughPt: CurveType=ControlPoint/Interpolated and Knots=Uniform/Chord/SqrtChrd. - Extend Type=Arc: Center and ToPoint at the end of a dynamic extension. - Rebuild: SelectMasterCurve (point count and degree from a master curve); the PreserveTangents option, which Rhino 5 does not have, is removed. - Blend: Continuity1 / Continuity2 per end, as Rhino 5. - Match: AverageCurves and Merge. - Sketch: Closed and Planar. - Intersect / IntersectTwoSets: points where curves cross curves or surfaces (they only handled surfaces before). - Curve display: NURBS with many spans (spirals, helixes) get 24 samples per span. - Shape audit: with OM9_AUDIT_DIR set, the add-on tests record every finished command's input and output curves so the shapes can be drawn and inspected; a scenario test covers the commands the other tests did not finish. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017AChfY1X8M1iXCrsZMoDud
…nd helixes within tolerance - Shape audit of the creation commands: every Line variant (BothSides, Vertical, Angled, FourPoint, Bisector, Tangent, Tangent Point, Perpendicular Point, Perpendicular 2Curves, Extension, typed lengths), Point, Polyline, Rectangle (corner, Center, 3Point, Vertical), Circle (radius, Diameter, 2Point, 3Point, Vertical), Ellipse, Polygon 3 to 8 sides, Spiral along an axis and Helix, each compared with its exact geometry. - Spiral and Helix were interpolated through 16 points per turn, up to 0.003 mm off the exact shape at larger radii; points per turn are now added until the curve is within 0.0005 mm (Rhino's default absolute tolerance is 0.001), around a curve too. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017AChfY1X8M1iXCrsZMoDud
Click the start, type the length, Enter: the line goes along its fixed direction (Vertical, Bisector, Angled …) or the CPlane x axis. Enter used to end the command without a line. A test runs the click-then-type flow of Circle, Polygon, Arc, Ellipse, Rectangle and Line. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017AChfY1X8M1iXCrsZMoDud
Review of PR MYuitsu#3: - Turns = axis length / Pitch; Pitch, Turns and radii must be finite and positive, and at most 1000 turns are allowed (tiny pitch is refused). - The fit never uses more than 20000 points; the limit is checked before the preview and before the final shape. - If 20000 points still cannot keep the shape within 0.0005 mm, the command says so instead of creating a looser curve. - The preview is fitted to 0.01 mm and shows nothing for refused input, so moving the pointer never hangs. - Curve interpolation uses a banded solver (linear in the point count) instead of a dense one. - Tests: tiny pitch (preview and finish, time bound), non-finite and out-of-range values, a normal 20-turn helix, and the 1000-turn limit. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017AChfY1X8M1iXCrsZMoDud
Keeps the banded interpolation (linear in the point count), so the limits are 1000 turns and 20000 points instead of 512 points; keeps MYuitsu's "Too many turns ... increase Pitch or reduce its length" message and his budget tests (non-finite/excessive turns refused before sampling, refusal when the sample budget cannot meet the tolerance, tiny pitch without preview or commit). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017AChfY1X8M1iXCrsZMoDud
vn-Jay3Designer
pushed a commit
to vn-Jay3Designer/OpenMatrix9
that referenced
this pull request
Nov 5, 2026
package_files_match_the_menu_crates failed on main after the PR MYuitsu#3 integration; regenerated with OM9_UPDATE_PACKAGE=1 (menu slot numbers only). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017AChfY1X8M1iXCrsZMoDud
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Cập nhật sau (đối chiếu Rhino 5)
CurveThroughPt CurveType/Knots, Extend Arc Center/ToPoint, Rebuild SelectMasterCurve,
Blend Continuity1/2, Match AverageCurves/Merge, Sketch Closed/Planar.