Commit Graph
178 Commits
Author SHA1 Message Date
Hakan Seven da34032ffc Harden spline editing and source joins 2026-09-11 13:23:00 +03:00
Hakan Seven e11796af29 Merge pull request #1199 from ramox81/codex/join-source-workflow 2026-09-11 13:02:17 +03:00
Hakan Seven 67768a3eca Merge pull request #1187 from ramox81/codex/complete-splinedit-options 2026-09-11 12:52:49 +03:00
Hakan Seven 08b184e314 Merge pull request #1186 from ramox81/codex/complete-reverse-command
# Conflicts:
#	src/entities/helix.rs
2026-09-11 12:51:29 +03:00
Hakan Seven 9e74df4c67 Merge pull request #1193 from ramox81/codex/complete-lengthen-options 2026-09-11 12:42:06 +03:00
Hakan Seven 5d7e1b5f0c Merge pull request #1192 from ramox81/codex/complete-align-3d 2026-09-11 12:37:55 +03:00
ramox81 29cd7fa82b Resolve fit-only spatial splines before order elevation 2026-09-11 12:35:34 +03:00
ramox81 ed6e962b78 Compact redundant polynomial knots after order elevation 2026-09-11 12:33:49 +03:00
ramox81 7181770c73 Elevate spatial spline order through the NURBS kernel 2026-09-11 12:33:35 +03:00
Hakan Seven 4a1dddfbe5 Test wipeout and break command interactions 2026-09-11 12:25:24 +03:00
Hakan Seven cf9ddf8586 Merge PR #1185: Support first-point reset and same-point breaks 2026-09-11 12:21:38 +03:00
Hakan Seven 32952e3eda Merge PR #1179: Add tolerant OVERKILL cleanup options
# Conflicts:
#	src/app/commands/styleprops.rs
2026-09-11 12:16:24 +03:00
ramox81 5d5aff0dd2 Store joined spline degree and control-vertex representation 2026-09-11 12:11:07 +03:00
Hakan Seven bea874c97f Merge PR #1178: Apply SETBYLAYER choices and property masks
# Conflicts:
#	src/app/commands/styleprops.rs
2026-09-11 12:09:29 +03:00
ramox81 57c9e93d0c Join compatible curves during spline editing with grouped undo 2026-09-11 12:04:54 +03:00
Hakan Seven bfadf1c04e Merge PR #1177: Copy picked nested objects with placement and array options 2026-09-11 11:55:43 +03:00
ramox81 b51672470d Preserve spline construction through closure and reopening 2026-09-11 11:50:22 +03:00
Hakan Seven 7886ffb973 Merge pull request #1177 from ramox81/codex/ncopy-command-parity
Copy picked nested objects with placement and array options

# Conflicts:
#	src/app/commands/blocks.rs
2026-09-11 11:41:52 +03:00
ramox81 5d0ba9cef2 Add persistent nested-copy symbol settings and transactional imports 2026-09-11 11:39:21 +03:00
ramox81 1bfbd67b7b Show spline closure options only for the applicable state 2026-09-11 11:39:13 +03:00
ramox81 8012fc7b45 Interpret spline elevation input as order rather than degree 2026-09-11 11:35:57 +03:00
ramox81 42439c2e50 Pick spline control vertices with the configured screen aperture 2026-09-11 11:13:09 +03:00
ramox81 12c661d118 Refresh spline planarity after control vertex deletion 2026-09-11 11:07:49 +03:00
ramox81 36b7998773 Preserve unsupported closed spline deletion state 2026-09-11 11:05:52 +03:00
ramox81 abab89e206 Delete spline control vertices through the Refine submenu 2026-09-11 11:05:10 +03:00
ramox81 25ac594d85 Reverse complete helix geometry and preserve top radius semantics 2026-09-11 11:03:58 +03:00
ramox81 35bbb35f58 Preserve joined polyline widths and add arc closure and spline joins 2026-09-11 10:45:27 +03:00
ramox81 9ca2db82bf Add source-first joins with retained object identity 2026-09-11 10:39:08 +03:00
ramox81 2d9befc77c Add spline refinement and repeatable editing workflows 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 a3eee372e4 Support first-point reset and same-point breaks 2026-09-11 10:25:10 +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 d10b50778c Match LENGTHEN command behavior 2026-09-11 10:23:43 +03:00
ramox81 227928257b Match ALIGN command behavior 2026-09-11 10:23:43 +03:00
ramox81 f24fdc7965 Implement nested object selection and placement for NCOPY 2026-09-11 10:23:38 +03:00
gianlucafiore 4e46deee49 feat(fillet): add polyline fillet option 2026-09-07 19:46:43 -03:00
gianlucafiore cbfdcd9ecd fix(fillet): support parallel line fillets 2026-09-07 18:48:18 -03:00
PanosandClaude Opus 5 391a74a615 perf: let one tessellation serve every background
Switching to a Layout re-tessellated the whole model — `memo_miss=186455`,
2034 ms — to arrive at geometry identical to what was already in the memo.
The only thing that differed was colour.

`local_wires_for` already knows this: it stores the raw colour and drops
its background argument with `let _ = bg_color;`, noting that
`Batches::finalize` applies `adapt_to_bg` last, "so the cache no longer
has to rebuild on BACKGROUND / layout-switch". The tessellation memo's
guard had not been told, and still mixed the background in, so every
entry was discarded on a switch.

`finalize` now records what its colour resolution consumed — the raw
colour, the raw glyph colours, and the three flags it branches on — as
`WireModel::bg_adapt`, and `resolve_colors_for_bg` replays it for another
background. The guard drops the background, so a memo entry serves any
layout.

The resolution recomputes from the recorded raw colour rather than from
the resolved one, which makes it idempotent and therefore safe over a set
that mixes memo hits with freshly tessellated misses. Re-adapting the
resolved colour would not be safe: `adapt_to_bg` snaps a near-white colour
to pure black on a light background, and pure black comes back pure
*white* on a dark one, losing the tint. A test pins that asymmetry so the
raw colour is not optimised away later.

The contract is tested against the real `finalize` rather than a copy of
its logic: for every background pair, building under one and resolving for
the other lands exactly where building under the other would have.

`bg_adapt` is `None` for wires built anywhere else, and the resolution
skips them, so nothing outside the block cache changes colour. It is also
`None` when the resolution would be a no-op — a preserved colour with no
canvas fill looks the same under every background — which keeps the common
case at no cost.

Ordering is unchanged: the pass runs inside the builder, before
`append_scene_markers` and `apply_refedit_fade`, both of which have their
own separate background dependency.

`wires-build` gains `colors=` so the pass has a number of its own.

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-09-05 18:53:16 +03:00
Hakan Seven 9d991d7feb Bound GPU uploads and complete Greek and performance integration 2026-09-04 20:26:29 +03:00
gianlucafiore 2885898da6 fix(trim): honor preselected cutting boundaries 2026-09-03 17:02:06 -03:00
gianlucafiore 5ed508ce76 fix(offset): preserve source entity layer 2026-09-03 16:33:03 -03:00
Hakan Seven 7edf268eef Keep rotation angle label on guide arc 2026-09-02 21:53:29 +03:00
Hakan Seven 52134a0bc6 Render rotation guide in working plane 2026-09-02 21:42:39 +03:00
Hakan Seven 4247b0c953 Keep FILLET active after each operation
Fixes #974
2026-09-02 21:06:55 +03:00
Hakan Seven 5c3aa1c25c fix(modify): preserve polyline extrusion frames 2026-09-02 08:56:46 +03:00
Atirna 9654986a0a fix(modify): keep polyline thickness through join/convert/explode
JOIN, PEDIT convert, and EXPLODE rebuild polyline-family entities from
scratch and copied only common entity data, so a thickness (DXF 39) set
in Properties reset to 0 after those edits. Carry the source thickness
onto the rebuilt Line/LwPolyline and every exploded piece, like trim and
break already do for arcs.

Fixes #916
2026-09-02 09:53:45 +05:30
Hakan Seven 6d6defa0ad fix(color): show color book identity 2026-09-01 08:44:28 +03:00
ramox81 470e22c80f Complete polygon mesh editing workflow 2026-08-31 10:13:27 +03:00
Hakan Seven 2a482089b8 test: fix regression assertions
Refs #941
2026-08-30 21:18:10 +03:00