Commit Graph
234 Commits
Author SHA1 Message Date
Hakan Seven 67768a3eca Merge pull request #1187 from ramox81/codex/complete-splinedit-options 2026-09-11 12:52:49 +03:00
ramox81 deb9129e91 Convert splines to bounded straight-segment polylines 2026-09-11 12:52:07 +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
ramox81 9536f60bff Apply supporting-curve LENGTHEN changes and retain polyline widths 2026-09-11 12:49:02 +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 dd9ef2f236 Remap pending vertex tangents through polyline edits and undo 2026-09-11 11:51:54 +03:00
ramox81 499beb718f Preserve polylines when fitting attributes are invalid 2026-09-11 11:50:25 +03:00
ramox81 b51672470d Preserve spline construction through closure and reopening 2026-09-11 11:50:22 +03:00
ramox81 ad9bf07cf7 Fit polylines through kernel arcs and retain vertex tangent metadata 2026-09-11 11:48:34 +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 e3b1f5719c Edit polyline vertex ranges with deferred break and straighten 2026-09-11 11:31:34 +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 ebef847870 Edit individual polyline segment widths at the selected vertex 2026-09-11 11:04:30 +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 376faec4db Add polyline vertex and multiple-object editing 2026-09-11 10:25:12 +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