Commit Graph
1593 Commits
Author SHA1 Message Date
ramox81 18569687a1 Match DIVIDE marker placement behavior 2026-09-11 10:26:08 +03:00
ramox81 4392244387 Gather reference sets for relative draw order 2026-09-11 10:25:13 +03:00
ramox81 376faec4db Add polyline vertex and multiple-object editing 2026-09-11 10:25:12 +03:00
ramox81 f80e9f742c Reverse selected curves while preserving spline shape 2026-09-11 10:25:11 +03:00
ramox81 60da282654 Add tolerant OVERKILL settings and geometric cleanup 2026-09-11 10:24:39 +03:00
ramox81 88956e306b Apply SETBYLAYER choices and property mask to selected objects 2026-09-11 10:24:15 +03:00
ramox81 f24fdc7965 Implement nested object selection and placement for NCOPY 2026-09-11 10:23:38 +03:00
ramox81 c947e1ce50 Add hatch editing option stages and appearance association workflows 2026-09-11 10:22:55 +03:00
ramox81 9da2a36efa Create regions from exact closed profiles and connected selected edges 2026-09-11 10:22:20 +03:00
Hakan Seven 8e010e305a Merge pull request #1162 from schoeller/ocs_doc_api_remove
# Conflicts:
#	crates/ocs_doc_api/Cargo.toml
2026-09-11 10:22:02 +03:00
Hakan Seven 5f3edf45ef Simplify Modify ribbon extensions 2026-09-11 10:06:51 +03:00
Hakan Seven 13600996d3 Merge pull request #1176 from Ramox81 2026-09-11 09:55:04 +03:00
Hakan Seven 90af02664d Merge pull request #1175 from Ramox81 2026-09-11 09:55:03 +03:00
Hakan Seven c03bd91b85 Merge pull request #1174 from Ramox81 2026-09-11 09:55:03 +03:00
Hakan Seven 188dbb695d Merge pull request #1164 from Ramox81 2026-09-11 09:55:03 +03:00
Hakan Seven 3646c82cd9 Merge pull request #1163 from Ramox81 2026-09-11 09:55:03 +03:00
Hakan Seven 9b58ca8a93 Harden parametric sketch constraints 2026-09-11 09:45:57 +03:00
ramox81 c56ade3f2e Expose Draw Order in the Modify extension 2026-09-11 09:35:37 +03:00
ramox81 e52965cfb0 Expose Delete Duplicate Objects in the Modify extension 2026-09-11 09:35:29 +03:00
ramox81 0af477544d Expose Copy Nested Objects in the Modify extension 2026-09-11 09:35:23 +03:00
ramox81 bf590d7d26 Expose Set to ByLayer in Modify with interactive selection 2026-09-11 09:34:19 +03:00
ramox81 75cc49d629 Return from Draw submenus with Escape and place split tools last 2026-09-11 09:27:59 +03:00
Sebastian fe8397b3cb remove ocs_doc_api crate and DocApi v2 host integration
- Drop crates/ocs_doc_api from workspace and host dependency.
- Remove src/app/doc_api.rs and its module declaration.
- Strip DocApi v2 undo/dispatch plumbing from HostSession.
- Remove HostApi::doc_api_dispatch default method.
- Remove PluginRequest::DocApiRequest / PluginResponse::DocApiResponse.
- Revert plugin API version from 6 back to 5.
2026-09-11 08:07:30 +02:00
Felix Riestra ad718def3f Merge remote-tracking branch 'origin/main' into merge-test/main-into-constraints
# Conflicts:
#	src/app/command_driver.rs
#	src/command.rs
#	src/ui/ribbon/mod.rs
#	src/ui/window/options.rs
2026-09-10 23:34:50 +02:00
Felix RiestraandClaude Sonnet 5 bd9a2d08f7 Add Properties-panel Constraints/Parameters sections, a constraint-pill
value toggle, and redesigned constraint-ribbon icons

Properties panel:
- New "Parameters" section (shown with no selection) listing every named
  parameter with inline name/formula editing, add, and delete, backed by
  new PropValue::ParamRow/ParamAddRow and command_driver handlers
  (resolve_named_parameter_edit, on_prop_param_commit/_delete/_add_new).
  A fresh parameter's formula now defaults to "1", not "0" — a 0-length
  seed value is a genuine solver singularity for a Distance constraint
  driven by that parameter, with no defined direction to grow back out of.
- New "Constraints" section (shown for a single selected entity) listing
  every constraint touching it as a clickable PropValue::EntityLink that
  selects the linked entities in the viewport, danger-tinted when the
  constraint conflicts.

Constraint pills:
- New Options > General toggle, "Show values and parameter names on
  constraint markers" (on by default, persisted). Off, every pill shows
  just its bare glyph instead of glyph+driven-value/parameter-name — the
  glyph alone is enough to see a constraint is present, without the value
  text covering nearby geometry on a dense sketch.

Constraint-ribbon icons:
- Replaced all 18 unicode/letter glyph icons (including the plain "F",
  "L", "M", "S" letters) with proper SVGs under assets/icons/constrain/,
  matching the Modify section's two-color style (#B4B6B9 white / #6DB7ED
  blue, consistent stroke width). Tangent reuses the Draw section's
  white-arc-plus-blue-dots motif.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-10 23:16:11 +02:00
Karim Jerbi f77c337af4 feat(command): add MTP/M2P midpoint-between-two-points modifier
Add MTP (Midpoint Between Two Points) as a keyword that can be typed
during any point-picking command (e.g. LINE) to suspend the current
command, prompt for two points, and return the midpoint to the parent.

- New Mid2PointCommand registered under both "MTP" and "M2P" aliases
- ReturnPoint CmdResult variant feeds the resolved midpoint back to
  the suspended parent command
- MTP/M2P typed during a point step suspends the active command and
  starts the midpoint modifier; Escape restores the parent command
- Preview wires show a rubber-band line with a triangle marker at
  the midpoint
- Character-by-character typing is routed correctly even with dynamic
  input active (digits no longer leak into dyn fields)
- Three automation tests cover the full workflow, ESC restoration, and
  dynamic-input character routing
2026-09-10 20:30:18 +01:00
Hakan Seven 14ef6c7bcd fix(i18n): translate render mode choices 2026-09-10 19:16:30 +03:00
Hakan Seven a8645c2d95 fix(grips): cancel value edits before new commands 2026-09-10 18:37:55 +03:00
MarcelP102 d47e3234d8 Add dynamic input for grip-based geometry editing (#1138) 2026-09-10 18:23:28 +03:00
Hakan Seven 5ffbf598a9 refactor(display): trim isolines follow-up comments 2026-09-10 18:05:42 +03:00
Panos a202a61ffe fix(display): regenerate existing solid isolines
Rebuild cached solid meshes for REGEN and apply Options ISOLINES changes once when the slider is released.
2026-09-10 18:00:53 +03:00
Hakan Seven 4de2792798 fix(doc-api): preserve XDATA and XRecord integrity 2026-09-10 18:00:07 +03:00
Hakan Seven 1b3efb84de Merge pull request #1152 from ramox81 2026-09-10 17:16:01 +03:00
Hakan Seven 9e9664c843 Merge pull request #1147 from ramox81 2026-09-10 17:15:50 +03:00
Hakan Seven 8ef6150790 Merge pull request #1141 from ramox81 2026-09-10 17:15:40 +03:00
Hakan Seven 2f2d894eee fix(surface): refresh construction display 2026-09-10 17:14:44 +03:00
Hakan Seven 4201b0a031 Merge pull request #1131 from ramox81/codex/thicken-surface-grips 2026-09-10 17:05:43 +03:00
Hakan Seven 035d31e201 fix(section): preserve selected slice depth 2026-09-10 17:00:16 +03:00
ramox81 11057cc5e9 Fix extrusion surface properties and snapping 2026-09-10 16:07:05 +03:00
ramox81 786e31e3a7 feat: expose Revision Cloud in the Draw expansion 2026-09-10 15:57:27 +03:00
ramox81 c50610e37b feat: expose Region in the Draw expansion 2026-09-10 15:57:22 +03:00
ramox81 306d998ebf feat: expose Spline CV in the Draw expansion 2026-09-10 15:57:17 +03:00
ramox81 a24d1e6108 Fix live extrusion surface grip editing 2026-09-10 14:53:48 +03:00
ramox81 c0b254950f Restore editable extrusion surface grips 2026-09-10 13:44:10 +03:00
Jonathan 4d3b8d8b79 Merge pull request #1125 from ramox81/codex/sectionplane-wireframe-clipping
Align live section wireframes and SECTIONPLANE grips
2026-09-10 12:34:26 +02:00
Jonathan 26faa56b6c Merge pull request #1127 from schoeller/ocs_doc_api_260910
ocs_doc_api: layer CRUD, per-curve layer assignment, XDATA/XRECORD su…
2026-09-10 11:34:52 +02:00
Felix RiestraandClaude Sonnet 5 3d0a41b69a Extend sketch constraints toward FreeCAD parity, staying DWG-native-compatible
Arcs are now full constraint participants (center/radius via the existing
Circle-shaped solver path, plus real endpoints kept consistent by arc-rules
CurveValue constraints); adds Diameter/DistanceX/DistanceY/ArcLength/Normal
constraint kinds and initial Ellipse entity support (center-based
constraints only). DWG-native class mappings and gaps (ArcLength, Ellipse)
are grounded against real ObjectARX headers rather than guessed, so files
saved with DWG-native constraints stay honest about what AutoCAD can
actually represent.

Also fixes a case-sensitivity bug where a lowercase named-parameter
reference typed at a dimensional constraint's value prompt was rejected
(the command line uppercases SingleToken input before the parameter-name
lookup), and adds a "Used by" column to the Named Parameters panel.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-10 10:58:21 +02:00
Sebastian 8bf5eac3fc ocs_doc_api: layer CRUD, per-curve layer assignment, XDATA/XRECORD support, and bulk SetXDataMany 2026-09-10 10:43:15 +02:00
ramox81 0426df79ca fix(section): add state grip menu 2026-09-10 11:25:33 +03:00
PanosandClaude Opus 5 3093b63113 Stop the test suite reading and writing the developer's own settings
`new_for_test` was `Self::new()`, and `new` loads the real settings file. So
every test ran against whatever the person running it had last set in the
application. It surfaced as `a_selection_past_the_limit_gets_no_grips`
failing on a machine where GRIPOBJLIMIT had been changed by hand: the test
expected the default limit and got 32767. On a clean checkout, and in CI, it
passes — which is the worst shape for this kind of bug.

Tests now start from `AppConfig::default()`.

That alone made things worse rather than better. The suite builds whole
applications and changes preferences on them, and `AppConfig::save` writes to
the real path, so a test run would have written *defaults* over the user's
file where before it wrote back roughly what it had read. `save` is now inert
under `cfg(test)`.

Both halves matter: the first makes the suite deterministic, the second makes
it harmless. This series adds around fifteen persisted settings, so every one
of them was another way for a developer's own configuration to turn the suite
red — or to be quietly overwritten by it.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-10 09:14:00 +03:00