Commit Graph
4397 Commits
Author SHA1 Message Date
Hakan SevenandClaude Opus 5.5 7a8ec02003 feat(options): command line text colour and a fonts folder
Display gets a command line text colour (blank keeps the theme's); it
covers history, prompts and the input, while errors stay red. Files
lists the fonts folder that text resolution searches, so .shx files can
be added by hand; opening it creates it first.

Discussions #1493, #1372

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-07 08:50:12 +03:00
Hakan SevenandClaude Opus 5.5 1c37c90c75 feat(grips): the crosshair locks onto a hovered grip
Before a grip is picked, the crosshair now jumps to the grip under it, so
the click lands where the marker shows.

Discussion #1557

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-07 08:50:11 +03:00
Hakan SevenandClaude Opus 5.5 7f59d8f679 feat(properties): the drawing's format version names its release years
The no-selection panel showed only the AC code. It now reads e.g.
"AC1032 (2018+)", from the version the file was opened as.

Discussion #1442

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-07 08:50:06 +03:00
Hakan SevenandClaude Opus 5.5 a4ebf8f58a i18n(it): Pan is Panoramica; release notes line reads right
Discussion #1591

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-07 08:50:06 +03:00
Hakan SevenandClaude Opus 5.5 609d6791ac feat(hatch): GRAVEL pattern
An aggregate of irregular stones on a 25.4 tile, built from edges whose
slopes repeat on the tile so every stone closes.

Discussion #1533

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-07 08:50:06 +03:00
Hakan SevenandClaude Opus 5.5 893ea7e605 Cargo: codec 3bafbc9, kernel 4d08dd4, graph bee971d
Mirrored dimension text keeps its direction; polyline arc segments offer
their quadrants.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-07 08:50:06 +03:00
Hakan SevenandClaude Opus 5.5 f485df7636 feat(3drotate): rotate about an axis picked in space
3DROTATE (ROTATE3D) took the drawing's rotation path, so a polyline only
turned in its own plane. It now asks for a base point, an axis — X, Y, Z
or a second point — and an angle, and rotates the selection about that
axis in space.

Fixes #1641

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-07 08:50:06 +03:00
Hakan SevenandClaude Opus 5.5 e854481f72 fix(mirror): a mirrored dimension keeps its text readable
The dimension's own block parts were mirrored with their text, so the
measurement read backwards. Text orientation is kept under reflection,
the same as TEXT and MTEXT with MIRRTEXT off.

Fixes #1639

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-07 08:50:06 +03:00
Hakan SevenandClaude Opus 5.5 fae64886ee fix(snap): arc segments of a polyline offer their centre and quadrants
Center and Quadrant found nothing on a polyline's bulge segments: the
lightweight and heavy polylines carried no snap points for them, and a
polyline split into several wires kept its points on one piece whose box
the others' never reached. Each arc segment now carries its centre and
quadrants, hovering the segment offers its centre, and a wire's box
covers its snap points.

Fixes #1640

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-07 08:50:05 +03:00
Karim Jerbi 29392de267 fix(dimstyle): preview respects per-end arrowheads
DimensionPreview drew identical generic triangles regardless of dimblk/dimblk1/dimblk2. It now resolves each end through the shared arrow_from_block_name mapping (widened to pub(crate)) and draws per-end glyphs, keeping DIMTSZ tick precedence. Tests: arrow_name_mapping_covers_preview_kinds pins the shared contract; 2 preview_arrow_tests pin per-end resolution (RED first). Full suite: 1989 passed / 0 failed / 25 ignored.
2026-10-06 22:47:34 +01:00
Karim Jerbi 50e20a91c4 fix(dimstyle): stop dimblk1 pick clobbering dimblk2
DsSetHandle for the first arrowhead also overwrote the second, destroying split-arrowhead configurations. The second write was a drive-by from overhaul 25515fa3; the Dimsah toggle has its own null-guarded init. Test: dimblk1_pick_leaves_dimblk2_alone pins per-end independence (RED first). Full suite: 1989 passed / 0 failed / 25 ignored.
2026-10-06 22:46:41 +01:00
Karim Jerbi 7aafd9c710 refactor(selection): split 31-field SelectionState into five sub-structs
SelectionState now holds view, gesture, input, menu and orbit sub-structs; all 450 access sites updated mechanically with no behavior change. Deletes three write-only dead fields (box_last, box_last_crossing, poly_last_crossing). Hand-rolled clears in commands and dim_viewport route through the new clear methods; bench fixture updated. Full suite: 1976 passed / 0 failed / 25 ignored.
2026-10-06 20:22:04 +01:00
Karim Jerbi 8c2cfa2c8f fix(viewcube): cache UCS picker names behind an epoch
The two per-frame ViewCube blocks rebuilt the named-UCS name list (N String clones plus a Vec) every frame; now Scene::cached_ucs_names memoises it behind ucs_epoch and the picker takes the Arc, so frames cost a refcount bump. Bumped on UCS SAVE, UCS DELETE, RENAME UCS, record-API ucss patch, file-open, and undo Full-swap. Tests: cached_ucs_names_returns_same_arc_until_bump pins the hit path; cached_ucs_names_invalidated_by_bump pins rebuild with new content. Full suite: 1976 passed / 0 failed / 25 ignored.
2026-10-06 20:10:23 +01:00
Hakan SevenandClaude Opus 5.5 bd37a2f969 review(#1627): the snapshot-save preparation is native-only
It stamps sheet set data, which the web build does not have; the wasm
check failed once #1627 split it out of prepare_native_save.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-06 21:09:40 +03:00
Hakan Seven 0149a276ef Merge pull request #1632 from ramox81/codex/sweep-miter-history
Sweep history records in the reference layout.

Pins resolved to upstream: codec bff95f5 (#93, #94, #95, #96, #97 and
review fixes), kernel 6146d31 (#75 and review fixes), graph 9635ba7.
2026-10-06 21:09:40 +03:00
Hakan SevenandClaude Opus 5.5 62d72b3a8d review(#1630): one table rebuild loop that also refreshes formulas; one cell layout
- main already rebuilt an edited table's block; the PR added a second
  loop after it that could never fire. Formula refresh and the block
  cache bump now live in the one loop.
- Formula refresh copies the drawing only for a table that has a field.
- A field cell lays its text out once and boxes it from those cells.
- A zero text height at one level falls through to the next instead of
  ending the lookup.
- Field box constants and BACKGROUND keep their own doc comments.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-06 20:54:26 +03:00
Hakan Seven 95d5eb73d9 Merge pull request #1630 from ramox81/codex/table-edit-overrides
Tables: cell overrides and field backgrounds when drawn from table data.

# Conflicts:
#	Cargo.lock
#	Cargo.toml
2026-10-06 20:50:39 +03:00
Hakan SevenandClaude Opus 5.5 864c644222 review(#1629): one direction mark, no dead RTL paragraph path, tests follow the new layout
- One visible-named LRM constant (ttf_glyph) instead of two invisible
  literals. Stroke and SDF text skip it, so a right-to-left script the
  shaper does not handle no longer gets a 6-unit gap per mark; vertical
  MTEXT does not insert it at all.
- Shaped cells keep a cluster the shaper merged into the leading mark.
- The always-false RTL paragraph flag, its indent/anchor branches and the
  unused reorder_line_atoms are gone; its test now covers reorder_rtl_runs.
- Underline, overline and strike follow each drawn run of a mixed word.
- Justify/distribute count only the gaps the measured width holds.
- The two RTL alignment tests assert the new left-to-right behaviour;
  glyph_boxes keeps its own doc comment.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-06 20:49:01 +03:00
Hakan Seven 36871044a6 Merge pull request #1629 from ramox81/codex/mtext-rtl-layout
Text layout: right-to-left runs, TEXT direction and leading spaces.
2026-10-06 20:42:14 +03:00
Hakan SevenandClaude Opus 5.5 af75cf42a8 review(#1627): one UPDATEFIELD, honest counts, safe field boxes, one-pass host redraw
- UPDATEFIELD stays the command main already had (Select objects, undo,
  locale strings); it now takes the PR's reach — a block reference's
  attributes and block definition, a table's cell texts — and reports
  the fields that really changed. The PR's second implementation and its
  duplicate registration are gone.
- FIELDEVAL's range error goes through the locale catalog.
- Field boxes: no slicing inside a character, one layout per multi-line
  attribute, and TEXT boxes scale about the annotative reference point
  like the glyphs do. Comment and indentation put back where they belong.
- bump_text_hosts classifies every host in one pass over the drawing
  instead of scanning all layouts and blocks per host.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-06 20:42:07 +03:00
Hakan Seven 711799371a Merge pull request #1627 from ramox81/codex/plotdate-refresh
Fields: evaluation events, UPDATEFIELD, FIELDEVAL, per-field shading and PlotDate redraw.

# Conflicts:
#	Cargo.lock
#	src/entities/field.rs
2026-10-06 20:42:01 +03:00
Hakan SevenandClaude Opus 5.5 3769bb59e3 review(#1631): drop the repeated ROMANS table; tests follow the new advances
- The ROMANS advance list was pasted twice; once is enough.
- The stroke-font golden checksum follows TXT's new advances (segment and
  vertex counts unchanged).
- The tolerance compartment test checks ink against pen only for symbol
  cells: text fonts now advance by the reference's pen, not their ink.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-06 20:36:07 +03:00
Hakan Seven c47f6d540b Merge pull request #1631 from ramox81/codex/stroke-font-space
Stroke fonts keep the space and character advances of the fonts they stand in for.
2026-10-06 20:36:07 +03:00
F4briziandClaude Opus 5.5 4b72da6b83 fix(viewport): take a command's point on mouse-down (#1623)
A point or pick step commits on the press, so the cursor drifting before
the button comes up no longer moves it. Selection steps and drag-fence
picks still wait for the release.

The press runs the existing release path once; the command path clears
left_down, so the real release that follows does nothing. This replaces
the PR's moved click block and press_consumed_point flag, which could
stay set when the release landed outside the viewport and swallow the
next release, and which broke TRIM's press-and-drag fence.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-06 20:30:26 +03:00
Hakan SevenandClaude Opus 5.5 fd12ef7768 review(#1624, #1637): repeat through dispatch_command; ZOOMFACTOR docs and Options test
- A blank script line outside a command repeats the last command through
  dispatch_command, as the command line's empty Enter does.
- ZOOMFACTOR bound docs describe the SETVAR range the PR widened, and the
  test keeps checking the value the Options field reaches.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-06 20:22:54 +03:00
Hakan Seven 59b76ada5c Merge pull request #1624 from yztink/fix/script-repeat-last-cmd
A blank script line outside a command repeats the last command.
2026-10-06 20:12:20 +03:00
Hakan Seven 977d58773a Merge pull request #1637 from F4brizi/fix/setvar-zoomfactor-500
SETVAR ZOOMFACTOR accepts the same 3–500 range as the Options field.
2026-10-06 20:12:20 +03:00
Hakan SevenandClaude Opus 5.5 4f0040b542 Cargo: kernel e13f37f, graph f8bbf40; hole/boss edge blends, local fillets, sphere-cylinder booleans; DWT in web open dialog
- Fillet/chamfer hole and boss rims, edges of non-convex bodies, and a
  chamfer next to a fillet (and the reverse).
- Fillet after an extruded PRESSPULL: booleans now join coplanar faces.
- Union/subtract/intersect of a sphere with an off-axis cylinder.
- Web open dialog lists drawing templates.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-06 20:08:42 +03:00
ramox81andClaude Opus 5.5 58fae9744c Codec: legacy DXF override bits marked on the cell style
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-06 19:52:23 +03:00
Karim Jerbi c501f755a2 feat(gpu): refine backend choices, Metal labels, and graphics options per platform 2026-10-06 16:53:38 +01:00
Hakan SevenandClaude Opus 5.5 1eae36e726 Cargo: codec 76d2a1c, kernel e652b4d, graph 0545fa9; text styles, templates, solid edges
- Text styles keep their TrueType typeface through save and reopen (codec
  reads and writes the STYLE record's ACAD extended data) (#1633)
- Unnamed shape-file entries no longer show in text style lists (#1634)
- Save As offers DWT 2018; NEW asks for the template to start from, while
  Ctrl+N and the quick-access New run QNEW with the default template (#1635)
- An edge next to an earlier fillet of the same radius rounds together with
  it (kernel); the solid stays drawn and pickable while edges are chosen
  (#1625, #1107)
- A full cache rebuild drops the B-rep cache too, so an undone fillet does
  not come back with the next edge operation (#1107)
- Selected solids in shaded styles highlight only their visible edges (#1031)
- VIEW ISO / SWISO / SEISO / NEISO / NWISO snap to the isometric corners

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-06 18:32:43 +03:00
ramox81 597b6126df Merge branch 'codex/mtext-rtl-layout' into codex/table-edit-overrides 2026-10-06 18:05:35 +03:00
ramox81andClaude Opus 5.5 5cae914195 MTEXT: draw a mixed word run by run in its fonts
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-06 18:05:31 +03:00
ramox81andClaude Opus 5.5 7277bf33dc Table cells: read own overrides from either layout
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-06 17:51:18 +03:00
F4brizi 1b6af26a2c fix(commands): allow SETVAR ZOOMFACTOR command line to accept up to 500 2026-10-06 11:00:18 -03:00
ramox81andClaude Opus 5.5 df725a45da Codec: typed cell text keeps the content format
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-06 16:58:16 +03:00
ramox81andClaude Opus 5.5 8f3e99b03e Recompute table formulas after an edit
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-06 16:34:00 +03:00
Hakan SevenandClaude Opus 5.5 1cbcc8f4c5 fix: feet-inch dynamic input, STRETCH preselection, ribbon title wrap
- Dynamic-input fields take ' and " and read 2'9" / 3' as lengths (#937)
- STRETCH on a selection made by a crossing window stretches through that
  window and goes straight to the base point (#1068)
- STRETCH's crossing-window steps show no coordinate boxes (#657)
- Collapsed ribbon panel titles wrap at words, never mid-word (#920)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-06 16:15:35 +03:00
ramox81 f297b35e4a Merge branch 'codex/mtext-rtl-layout' into codex/table-edit-overrides 2026-10-06 16:06:22 +03:00
ramox81andClaude Opus 5.5 470d6a6b7f Rebuild a table's block after an edit
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-06 16:06:21 +03:00
Hakan SevenandClaude Opus 5.5 178c7dff41 fix: open-issue sweep — drawing, plot, snap, layout and UI fixes
Fixes:
- Font prompt no longer lists bundled ltypeshp/qcadshp shape files (#1626)
- Wide polylines step at a discontinuous segment width; PEDIT marks the
  current vertex; keyword steps refresh the command preview (#1628)
- Radius-0 fillet drops the zero-length segment it left, so the corner
  fillets again (#1422)
- FILLET Trim / No trim option (#1558)
- True-colour wires plot in their own colour; colour picker stores the
  value it shows (#1621)
- Model tab keeps its page setup; "Save changes to layout" in Model (#1620)
- QNEW default template in Options > Files; .dwt in the open dialog
  (#1134, #1113)
- GRIDUNIT / GRIDMODE / PERSPECTIVE variables (#1618, #1524)
- PTYPE (#1433)
- ZOOM nX / nXP (#1465)
- CHSPACE between model and paper space through a viewport (#1428)
- Moving a dimension keeps its automatic text placement
- Shell icon; "&&" button labels (#1554)
- LINETYPE Load from a .lin file (#1588)
- XLINE / RAY hide the crosshair arms (#1437)
- Dynamic-input boxes keep clear of the crosshair and each other (#1546)
- Snap marker colour setting, dark default on light canvases
  (#1497, #1229, #1128)
- Dimension style precision as a 0.00 pattern dropdown (#1426)
- Node graph nodes left of the origin no longer clip away (#1592)
- Collapse button in the command history header (#1094)
- Freeze-in-current-viewport toggle in the ribbon layer list (#1466)
- Geometric Center object snap for closed polylines (#1369)

New strings translated in all 21 locales.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-06 15:59:30 +03:00
ramox81andClaude Opus 5.5 32cbcacf3a Text layout: no gap between a field and the right-to-left word after it
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-06 15:58:47 +03:00
ramox81andClaude Opus 5.5 632540efff Sweep history records in the reference layout; kernel and codec revs
New sweep records store the source and placed profile frames, the
default mitred joint, groups 292-294 and a 3D polyline path as a wire
body, so the reference re-evaluates them. Builds against the sweep
history codec and kernel revisions.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-06 15:33:47 +03:00
ramox81andClaude Opus 5.5 c83d37b24d Text: stroke font character advances of the reference
txt, simplex and romans keep the reference fonts' printable ASCII pen
advances, so lines measure, wrap and align like the reference.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-06 15:17:39 +03:00
ramox81 4239174f8c Merge branch 'codex/mtext-rtl-layout' into codex/table-edit-overrides 2026-10-06 15:06:33 +03:00
ramox81andClaude Opus 5.5 ea4ecc33af Text layout: a word fits a line when its ink does
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-06 15:06:28 +03:00
ramox81andClaude Opus 5.5 2c1df150b3 Tables: field backgrounds on cells drawn from table data; codec table overrides
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-06 14:50:57 +03:00
ramox81andClaude Opus 5.5 18d729edcd Tables: cell overrides win when a table is drawn from its cells
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-06 14:45:10 +03:00
ramox81andClaude Opus 5.5 de65cd7e50 Text: stroke font space widths of the reference
The SHX names the embedded LFF fonts stand in for (txt, monotxt,
simplex, romans, romand, romanc, complex, italic, gdt, isocp) use the
space advance of the reference's fonts.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-06 14:33:59 +03:00
ramox81andClaude Opus 5.5 d567db0970 Text layout: align on the last glyph's ink
The letter spacing after a line's last stroke-font glyph is left out of
the width used for centring and right alignment, so a right-aligned
line's last stroke sits on the edge as in the reference.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-06 14:30:07 +03:00