Commit Graph
254 Commits
Author SHA1 Message Date
ramox81 452e61121b Match RAY command behavior 2026-09-11 10:23:42 +03:00
Hakan Seven acba9f87bd refactor(ribbon): simplify draw tool registry 2026-09-10 17:23:08 +03:00
Hakan Seven 1b3efb84de Merge pull request #1152 from ramox81 2026-09-10 17:16:01 +03:00
Hakan Seven dbd3bf15a9 Merge pull request #1143 from ramox81 2026-09-10 17:15:44 +03:00
Hakan Seven 8b17ddaa22 Merge pull request #1142 from ramox81 2026-09-10 17:15:42 +03:00
ramox81 786e31e3a7 feat: expose Revision Cloud in the Draw expansion 2026-09-10 15:57:27 +03:00
ramox81 cc503f1847 feat: expose Ray in the Draw expansion 2026-09-10 15:57:19 +03:00
ramox81 dc83a3e5fa feat: expose Construction Line in the Draw expansion 2026-09-10 15:57:18 +03:00
ramox81 306d998ebf feat: expose Spline CV in the Draw expansion 2026-09-10 15:57:17 +03:00
Karim Jerbi 9bbc5c3182 feat(render): render thick and tapered analytical arcs directly on GPU
- Repurpose CircleInstance center_high.w and params.w for start_width and end_width (preserving exact 128-byte stride)
- Route wide polylines, tapered polylines with bulges, and donuts through split_mixed_polyline into GPU analytical arc instances
- Compute physical annular bands, width tapers, and round end caps in circle.wgsl using world-space distances to prevent 3D perspective foreshortening distortion
- Expand bounding quad margins dynamically with grazing-angle compensation to eliminate clipping
- Relax pick_tris check in wire classification and partition routines so wide entities retain CPU picking while drawing analytically
- Add unit and hardware GPU integration tests, including tilted 3D perspective rendering verification
2026-09-09 13:02:02 +01:00
Karim Jerbi a754fac6d4 Attach analytical arc to polyline Arc mode rubber-band preview 2026-09-08 13:16:49 +01:00
Karim Jerbi ec3b6b89f6 Expand GPU analytical curves to interactive previews and transformations 2026-09-08 13:16:49 +01: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
ramox81 a59ea47990 Complete UNION command behavior 2026-09-07 11:27:03 +03:00
Hakan Seven d66e89ca19 Complete application localization across all supported languages 2026-09-07 01:05:02 +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 863dd555c1 feat(ribbon): add measurement dropdown 2026-09-03 19:23:37 -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
Karim Jerbi d6a6dd6a7d feat(table): add TABLEDIT point picking, and consolidate InputKind
- Implement `TABLEDIT` command supporting viewport point-picking on cell interiors
- Support overlapping table hit testing with selection cycling and top-table resolution
- Support `/n` and `\n` multiline paragraph breaks (`\P`) in table cell text editing
- Unify text input modes via `InputKind` (`Point`, `SingleToken`, `FreeText`) on `CadCommand`
- Migrate 15+ commands across annotate, draw, insert, layout, and view modules
- Preserve text casing, literal spaces, and bypass arithmetic eval during FreeText input
- Add dedicated `tabledit_tests` and `free_text_entry_tests` test suites
2026-09-02 14:55:49 +01: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
Hakan Seven 72669f58f3 feat(model): complete cone workflow 2026-08-31 22:07:49 +03:00
ramox81 a2a64dcfb7 Complete CONE creation workflow 2026-08-31 11:58:18 +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
Hakan Seven 7a523a0f44 fix(clipboard): share COPY across drawings 2026-08-29 23:12:26 +03:00
Hakan Seven e8cb752fab fix(mesh): complete polygon mesh support 2026-08-28 20:26:32 +03:00
Hakan Seven 56bb652521 fix(face3d): repair edge editing 2026-08-28 20:14:41 +03:00
Hakan Seven 7f6e5c0405 fix(helix): repair parametric editing 2026-08-28 20:05:36 +03:00
Hakan Seven 50e5dcaaac fix(polyline): correct 3D smoothing 2026-08-28 19:46:13 +03:00
ramox81 e345d89519 Extend PEDIT for polygon meshes 2026-08-28 15:50:49 +03:00
ramox81 22d91f8946 Add 3D mesh creation workflow 2026-08-28 15:50:49 +03:00
ramox81 b8fb6f5ddb Complete 3D face creation and editing 2026-08-28 14:35:56 +03:00
ramox81 1c88bb96ba Create parametric helix entities 2026-08-28 12:48:33 +03:00
ramox81 3ca959a34b Fix 3D polyline behavior and properties 2026-08-28 11:21:03 +03:00
Hakan Seven 43d4403a47 fix(dimension): sync jogged radius geometry 2026-08-28 00:33:37 +03:00
Hakan Seven bc750c6d76 fix(dimension): harden jogged radius workflow 2026-08-27 08:09:02 +03:00
Hakan Seven 6ef2d75e84 fix(dimarc): complete merge integration
Preserve source-plane geometry and associative arc parameters while combining the latest properties and tolerance workflows.
2026-08-27 01:00:23 +03:00
Hakan Seven 81e7add1dd fix(tolerance): complete workflow integration
Sync current main and companion codec changes before preserving unsupported frame rows, rendering in the entity plane, and sharing final layout metrics with placement preview.
2026-08-27 00:14:08 +03:00
ramox81 5a9894fd3e Complete jogged radius dimension workflow 2026-08-26 17:17:55 +03:00
ramox81 8aca9a0aef Complete arc length dimension workflow 2026-08-26 15:32:37 +03:00
Hakan Seven 968ee3fda4 fix(dimension): complete ordinate workflow 2026-08-25 21:36:04 +03:00
Hakan Seven 9ded5eb04f feat(dimension): complete diameter workflow 2026-08-25 20:57:28 +03:00