Commit Graph
100 Commits
Author SHA1 Message Date
ramox81andClaude Opus 5.5 bd80d96ce2 Layouts: the first-open viewport is on and drawn at once
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 11:19:35 +03:00
ramox81andClaude Opus 5.5 e3a0ff1bad Layouts: a viewport on first opening (LAYOUTCREATEVIEWPORT)
A layout opened for the first time - one whose sheet viewport had to be
made, or one created in this session - gets a viewport centred on the
printable area, 0.8 of its width and height, zoomed to the model's
extents, while LAYOUTCREATEVIEWPORT is on. The profile variable takes
ON/OFF or 1/0 and is kept with the settings.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 11:09:03 +03:00
ramox81andClaude Opus 5.5 2a808c4526 Background dialog preview: mirrored images, device pixels; faint inactive values
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 11:05:01 +03:00
ramox81andClaude Opus 5.5 0ee95fa4ba Background dialog: adjust an image's offset and scale; visual style names
- The Image tab gains an Adjust card: X/Y offset in pixels (-2000..2000)
  and X/Y scale (-10..10, tenth steps, a negative scale mirrors, zero keeps
  the image's scale) with spinners and Reset, inactive while the image is
  stretched; Keep aspect ratio is a switch and makes both scales follow.
- The preview shows the image at its offset and scale, tiled when tiled,
  and a stretched image kept to its aspect ratio covers the view.
- Automation: step=<field>,+1|-1 and reset; offset/scale take any numbers.
- Shaded with edges, Shades of Gray and Sketchy have catalog entries in
  every language.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 10:28:18 +03:00
ramox81andClaude Opus 5.5 064da8829e View backgrounds: image colours as stored, viewport style name, adjust automation
- The background image texture is not an sRGB view: the image is drawn with
  its own colours, as the solid and gradient colours are.
- An entered paper-space viewport shows its named visual style (Realistic,
  ...) in the render-mode picker, and a mode picked there is recorded as the
  viewport's visual style.
- The view_background automation action takes offset=x,y and scale=x,y.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 09:44:49 +03:00
ramox81andClaude Opus 5.5 9ef8f4bedf View backgrounds: reference blend, image adjust, layouts, cleanup, style name
- Gradients: the middle colour sits (horizon - 0.5) viewport widths from the
  centre and blends over height viewport heights each side; two colours
  blend over a viewport height each side.
- Image backgrounds: offset in device pixels (right, down), negative scale
  mirrors, fitted with aspect ratio covers the viewport; the dialog keeps an
  image's offset and scale.
- Layouts: a model-space view restored on a sheet asks for the viewport,
  enters it and gives it the view's camera, background and visual style;
  inside a viewport the view goes there; a paper-space view's background is
  kept on the sheet viewport but not drawn; floating viewports draw their
  background.
- Background objects no view or viewport uses any more are erased; a view
  without a background restored where the viewport already is leaves the
  viewport's background.
- The viewport's named visual style (Realistic, ...) shows by name and the
  render-mode picker records its style on the viewport record.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 17:31:01 +03:00
ramox81andClaude Opus 5.5 1cf13971dc Keep a centred image background at its device pixel size
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 12:19:03 +03:00
ramox81andClaude Opus 5.5 7a0e08129f Draw a centred image background at its pixel size
An image background not fitted to the screen keeps its own pixel size
(times its scale), centred on the viewport and moved by its offset, as
the reference draws it; tiling repeats it from there.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 12:04:52 +03:00
ramox81andClaude Opus 5.5 bd4029fb50 Blend gradient backgrounds linearly; two colours over twice the view
Measured against the reference: a two-colour gradient reaches its end
colours a viewport beyond the edges, and the bands blend linearly.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 11:51:39 +03:00
ramox81andClaude Opus 5.5 46daf03bc9 Draw gradient backgrounds as the reference does
The rotation is stored in degrees and turns the bottom-to-top direction
counter-clockwise, measured in pixels; a two-colour gradient blends from
the bottom colour to the top one across the whole viewport.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 11:37:53 +03:00
ramox81andClaude Opus 5.5 8055fa710d Restore a view's visual style; no background in 2D wireframe
Restoring a named view gives the model viewport the view's visual style
(the closest render mode), and a 2D wireframe viewport shows no
background, as in the reference.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 11:24:07 +03:00
ramox81andClaude Opus 5.5 c8167c54ee -VIEW sEttings Background dialog and view backgrounds
Color, Gradient and Image at the background prompt open a Background
dialog (None / Solid / Gradient / Image, preview, solid colour, two- or
three-colour gradient with rotation, image file with position and
scale). Apply links the view to a new background object in
ACAD_BACKGROUND; restoring a view gives the model viewport a copy of
it (or none), and saving a view copies the viewport's background.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 10:50:00 +03:00
ramox81andClaude Opus 5.5 f4a0b1d68b Apply an EXTRUDE taper only when it is chosen
A taper angle given in one EXTRUDE was applied to every later
extrusion. As in the reference, a new extrusion has no taper; the last
angle stays the Taper angle prompt's default.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 09:53:07 +03:00
ramox81andClaude Opus 5.5 c0929b4774 Clear the selection after REGION
The command left its sources selected when DELOBJ keeps them, so the
next command took them as its preselection; the reference clears the
selection after REGION.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 09:27:16 +03:00
ramox81andClaude Opus 5.5 71e6a12ebf Record a region loft section as its boundary curve
A lofted surface's region cross sections are recorded as the curve round
each region, as the reference records them; a region recorded as a
region made the reference refuse to open the drawing.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 19:29:33 +03:00
ramox81andClaude Opus 5.5 a8acc077d7 Keep no draft distances on an extruded surface
The reference writes none; a draft distance on an extruded surface made
it re-extrude the surface with a taper when the profile changed.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 19:28:32 +03:00
ramox81andClaude Opus 5.5 b701e22d28 Record a region profile polyline in its own coordinates
The polyline round a region is written about the region's normal in its
object coordinates with an identity transform, as the reference writes
it; a rebuild from the history placed a polyline given in plane
coordinates with a frame at the wrong place once the region moved. Arcs
of one circle making a whole turn are recorded as that circle.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 19:08:36 +03:00
ramox81andClaude Opus 5.5 c227de26c5 Record a region profile as its boundary curve and step
A swept, extruded or revolved surface made from a region records the
region as the curve round it, as the reference does: a lone circle or
whole ellipse as itself, a loop of lines and arcs as a closed polyline in
the region's plane. A region recorded as a region made the reference
refuse to open the drawing (modeling error 58000).

A region read by an associative action carries the step its edge names
belong to (ACAD_STEPID), so the reference finds the edges again and the
surface follows the region.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 18:54:52 +03:00
ramox81andClaude Opus 5.5 65910d1cad Count a region's loops from its modeler edges
The surface extrusion, the extrusion along a path, revolve history and
embedded profiles refused a region whenever it had more than one display
wire, which a region of several edges always has. They now refuse only a
region with holes, and a region's loops for a solid extrusion come from
its modeler edges.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 18:32:35 +03:00
ramox81andClaude Opus 5.5 8fc4f42a4d Read a one-loop region's profile from its exact edges
A region keeps one display wire per edge, so a region of several edges
gave no polygon and could not be extruded (solid or surface), and a
circle region was extruded from its display polygon. Profiles of a region
with one boundary loop now come from the region's modeler edges.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 18:17:57 +03:00
ramox81andClaude Opus 5.5 2192baba02 Extrude a region's exact boundary loop as a surface
A region of several edges kept its display wires one per edge, so the
surface extrusion found no polygon and refused it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 18:03:44 +03:00
ramox81andClaude Opus 5.5 e3477a27de Give new drawings the standard visual styles
A new drawing carries the visual styles the reference's new drawing has
in its visual style dictionary. -VIEW sEttings Visual style offers them
(2dWireframe as "2D Wireframe") and a saved view starts with the 2D
Wireframe style.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 17:41:14 +03:00
ramox81andClaude Opus 5.5 37a9e5775d Read region sources of associative surfaces by edge
A swept, extruded, revolved or lofted surface made from a region now
reads the region through one geometry dependency per edge, each naming
its edge by a persistent subentity id recorded in the drawing's
subentity manager, so the surface follows the region. A lofted surface
keeps one continuity and bulge value per cross section.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 17:41:13 +03:00
ramox81andClaude Opus 5 eefbcc4860 Dimensions: place the picture block where the dimension says
A dimension carries its graphics in a block of its own, drawn in that
block's frame, and the entity records where the frame sits. The renderer
inserted it at the origin instead, so every dimension whose file carries a
non-zero insertion point drew far from the geometry it measures — the whole
picture offset by that point. Dimensions inside block definitions are where
this shows: a drawing of plan blocks scattered their dimension graphics
thousands of units away, over empty sheet.

The picture now follows the dimension's insertion point, rotation, scale and
extrusion, the way any block reference is placed.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-10-09 13:32:04 +03:00
ramox81andClaude Opus 5 698ec122ba Block wires: pack definitions into shared buffers
A drawing whose plan content is built from blocks reaches thousands of
definitions, and each one took a buffer of its own for its segments and
another for its constants, plus one per placement run. The payloads are a
few hundred bytes, but every allocation costs a page: 14k definitions ask a
device for 1.8 GB to hold 12 MB of geometry. D3D12 runs out, the failed
allocations stay invalid, every later frame writes to them, and the session
dies in the staging belt.

The definitions of a build now share one arena: constants in a single
uniform buffer addressed by dynamic offset, segments in a single geometry
buffer addressed by first_vertex, placements in a single instance buffer
addressed by first_instance, with another arena started whenever one of the
three would outgrow the per-buffer budget. The cache holds the records
rather than the buffers, so a build the device rejected poisons nothing.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-10-09 11:19:33 +03:00
ramox81andClaude Opus 5.5 737bc1bd6c Merge origin/main into codex/surface-associativity-sources
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 10:40:13 +03:00
ramox81andClaude Opus 5.5 7699c40ae4 Merge origin/main into codex/view-presets
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 10:36:20 +03:00
ramox81andClaude Opus 5.5 4069d70863 Merge origin/main into codex/extrude-taper-history; kernel patch ef96a46
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 10:36:03 +03:00
ramox81andClaude Opus 5.5 27bf35fc96 Associative extruded, revolved and lofted surfaces; spline and ellipse sources
SURFACEASSOCIATIVITY now keeps EXTRUDE, REVOLVE and LOFT surfaces linked to
their sources: the profile (and axis object) or cross sections are kept, the
surface is made again when they change, and the drawing's associative
network carries an action with the extruded, revolved or lofted surface
action body, its path parameters and value parameters as the reference
writes them. Swept, extruded, revolved and lofted surfaces can read
splines (NURBS edge curve, fit-point splines through their fit points)
and ellipses (elliptical edge curve). Associative surfaces of a file
opened here follow their sources too.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 10:31:58 +03:00
ramox81 fa8c88a092 Merge origin/main into codex/view-presets 2026-10-09 09:07:05 +03:00
ramox81andClaude Opus 5.5 cfe64ae6a4 feat(view): -VIEW orthographic UCS, sEttings and Window like the reference
An orthographic preset sets its orthographic UCS while UCSORTHO is on
(*FRONT*, *RIGHT*, …; TOP returns to the world UCS); presets no longer
flip to the opposite view when repeated. -VIEW runs as its own command:
Window asks for the name and corners, sEttings loops over Background,
Categorize, Layer snapshot, live Section, Ucs and Visual style with the
reference prompts and messages, Save keeps the UCS with the view while
UCSVIEW is on and Restore brings it back. UCSORTHO and UCSVIEW are
profile variables.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 09:07:05 +03:00
ramox81andClaude Opus 5.5 62ff1daade feat(view): -VIEW command-line form with the standard view presets
-VIEW asks "Enter an option [?/Delete/Orthographic/Restore/Save/sEttings/
Window]:" and takes the orthographic and isometric presets (TOP, BOTTOM,
FRONT, BACK, LEFT, RIGHT, SWISO, SEISO, NEISO, NWISO, also with a leading
underscore) directly, Orthographic asking for the face with <Top> as the
default. Keyword prompts accept a leading underscore on their keywords.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-08 15:43:45 +03:00
ramox81andClaude Opus 5.5 40235de218 build: kernel with extrusion records rebuilt where they are stored
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-08 15:19:02 +03:00
ramox81 5e6452f1b5 Merge remote-tracking branch 'origin/main' into codex/extrude-taper-history 2026-10-08 15:01:55 +03:00
ramox81andClaude Opus 5.5 5862fe7824 fix(extrude): history records give the profile frame (group 295)
The reference cannot open a drawing whose extrusion history has a taper
and leaves the profile frame to be computed (ErrorStatus 53). Extrusion
and press-pull records now set group 295, as the reference writes them.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-08 14:49:43 +03:00
ramox81andClaude Opus 5.5 48c3c433a5 feat(sweep): associative swept surfaces in the drawing's network
Swept surfaces made with SURFACEASSOCIATIVITY on keep their profile and
path and are written as a swept-surface action of the drawing's
associative network, reading the profile and path and their scale and
twist expressions. They follow edits of their sources.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-08 13:29:55 +03:00
ramox81andClaude Opus 5.5 6aced3ac7e SWEEP: base point from the path; kernel sweep validity and placement fixes
A single profile's base point comes from the path it is swept along: a
path leaving the profile's plane from inside the profile sweeps it where
it stands. Kernel 30b3810: pcurves in the edge's parameterisation (valid
spline-faced sweeps), corner crossings fitted to the modeller's
resolution, run faces through stations evenly spaced along the run.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-08 12:17:00 +03:00
ramox81andClaude Opus 5.5 07499968d8 Sweep spatial profiles as surfaces, keep swept surfaces linked to expressions
A closed 3D polyline profile that does not lie in one plane sweeps a
surface with the reference's refusals. Swept surfaces made with an
Expression scale or twist follow the named parameters, and reference
surfaces linked through their associative action are picked up on open.
Saving keeps the associative actions the constraint graph does not
rebuild and stores each scope network through its own dictionary.
Kernel 23138fc, codec 64fe2a6.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-07 16:47:30 +03:00
ramox81andClaude Opus 5.5 0c3ca96822 SWEEP: sweep from the picked path end; kernel run faces and placed ends
- An open path is swept from its end nearest the pick point (in plan), as
  the reference does; the record keeps the original path and the placed
  frame marks the start.
- Kernel from ramox81/cadkernel 1df75f5: one face per path run for
  twisted, scaled and spline sweeps, placed records swept from the placed
  end, end caps without pcurves.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-07 16:34:34 +03:00
ramox81andClaude Opus 5.5 a98e600f09 Command line: the bare-word probe keeps no empty undo step
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-07 11:40:37 +03:00
ramox81 4ef92c3ef1 Merge branch 'codex/updatefield-count' into codex/automation-select-layout 2026-10-07 11:28:27 +03:00
ramox81andClaude Opus 5.5 a1d59e5b17 Automation select: refuse handles inside block definitions
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-07 11:28:26 +03:00
ramox81andClaude Opus 5.5 d425a1d921 Automation select: only entities of the current space
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-07 11:04:04 +03:00
ramox81andClaude Opus 5.5 ac186d3967 UPDATEFIELD: an undo step on every run
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-07 11:03:57 +03:00
ramox81andClaude Opus 5.5 6da3fea563 UPDATEFIELD: count fields as the reference does
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-07 10:24:35 +03:00
ramox81andClaude Opus 5.5 56f3f68de9 SWEEP: Expression option, reference prompts and localized messages
- Scale and Twist take an Expression evaluated with the drawing's
  parameters; invalid input prints the reference message and asks again.
- The scale and twist prompts use the reference wording and defaults.
- The SWEEP prompts and refusal messages are in the locale catalog with
  translations in every locale.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-07 10:15:32 +03:00
ramox81andClaude Opus 5.5 1a18fdd0cf SWEEP: reference messages, 3D polyline profiles and Scale Reference
- 3D polyline profiles are recorded as wire bodies, like 3D polyline paths.
- Refused sweeps print the modeling error code and "Unable to sweep N
  selected objects."; a scaled sweep rejects closed and cornered spatial
  paths with the reference messages and asks for the path again.
- Scale > Reference asks for start and end reference lengths (start / end).
- Bank stays on for later sweeps until a twist angle is entered.
- Refused twist/scale edits in Properties print the modeling error code.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-07 09:26:29 +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
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
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
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
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
ramox81andClaude Opus 5.5 acafb3be29 Text layout: right-to-left runs and leading spaces like the reference
MTEXT paragraphs keep left-to-right order and their attachment's
alignment even when they start with Hebrew or Arabic: a run of
right-to-left words (with the spaces between and after them) reads
backwards in place, and inside a word each right-to-left letter run is
reversed on its own while digits, punctuation and Latin keep their
order. Shaped text gets a left-to-right paragraph direction, so TEXT
follows the bidirectional rules with a left-to-right base, and a TEXT
line that starts with Hebrew or Arabic is no longer right-aligned. A
paragraph's leading spaces keep their width and trailing spaces are left
out of the width used for centring and right alignment.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-06 14:10:45 +03:00
ramox81andClaude Opus 5.5 3830a69ca7 Fields: exact field boxes for rotated, multi-line and shaped text
Layout glyph cells carry their unrotated cell, so a field box in rotated
MTEXT is placed exactly; multi-line attributes box each line of a field
from their own layout cells and single-line attributes split on \P per
line; shaped words (TrueType fonts, right-to-left and complex scripts)
take the shaper's glyph cells for their characters instead of evenly
divided slots. The field background is also drawn for text rendered as
shaped strokes.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-06 13:24:52 +03:00
ramox81andClaude Opus 5.5 383eba14e5 Fields: table cells keep stored values, UPDATEFIELD reaches blocks and tables, measured shading box
Table cell fields show their stored value; only formula cells evaluate
live. UPDATEFIELD on a block reference also updates the fields of its
block definition, and on a table the fields of its cells; a changed
table cell text redraws the table. The FIELDDISPLAY box is placed from
the text layout (MTEXT layout cells, TEXT / attribute pen advances) and
spans 0.345 text heights below the baseline to 1.19 above it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-06 12:25:24 +03:00
ramox81andClaude Opus 5.5 1c242eb489 Fields: stored values on redraw, evaluation events, per-field shading
MTEXT draws its stored text instead of re-evaluating fields on every
redraw. Fields update on their evaluation events as the reference does:
open (1), save (2, not autosave), plot (4) and REGEN/REGENALL (16), each
masked with the drawing's FIELDEVAL (variable dictionary, 0-31, with the
reference's prompt and message), and the new UPDATEFIELD command
(selection, attributes of selected block references, "N field(s)
found." / "N field(s) updated."). A Date field (on demand only) keeps
its value until UPDATEFIELD. The FIELDDISPLAY gray box now covers each
field's own glyphs, one box per line it spans, instead of the whole
text. Codec moved to the update_fields / field_spans revision.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-06 11:38:01 +03:00
ramox81andClaude Opus 5.5 71cebbb3fe Plot: redraw PlotDate hosts inside blocks and attributes
A plot stamps PlotDate fields, but the redraw only dropped the host's
own tessellation: an attribute is drawn by its INSERT and a host inside
a block definition by every reference to the block, so both still
showed the old value on screen and in the plotted output. The changed
hosts now redraw through their INSERT / the block's references (block
cache refreshed), without re-tessellating anything else. The codec is
patched to the field format code fixes.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-06 10:37:04 +03:00
ramox81andClaude Opus 5.5 397333b545 Lock the patched codec revision
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-06 09:30:22 +03:00
ramox81andClaude Opus 5.5 024101afe8 Name the center mark/line action body in the associative data rows
The codec now reads AcDbCenterMarkActionBody and AcDbCenterLineActionBody
as a SmartCenterActionBody variant; the Properties associative-data rows
label it "Center Mark/Line Action". The codec dependency is patched to the
fork commit that adds the variant.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-06 09:30:22 +03:00
ramox81andClaude Opus 5.5 03e3632efd Sheet sets: fields evaluated when a sheet opens; VIEW WINDOW
- A drawing's sheet set fields are refreshed when it opens with sets loaded.
- VIEW WINDOW <name> <x1,y1> <x2,y2> saves the plan view of a window.
- opencadcodec: block-attribute fields use their block reference's layout.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-05 17:13:12 +03:00
ramox81andClaude Opus 5.5 9ad569d332 Cargo: codec 196a5ae (mirrored pattern hatch is not a copy)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-05 17:10:39 +03:00
ramox81andClaude Opus 5.5 9b5b9dc707 Cargo: codec 6d3ecf4 (hatch copies along their curves, merged table cells)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-05 16:47:29 +03:00
ramox81andClaude Opus 5.5 74df837d6c Sheet set row menus: clicks on separators, gaps and padding keep the menu open
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-05 16:35:49 +03:00
ramox81andClaude Opus 5.5 582e0980d9 Sheet set row menus: own fly-out menu widget
The row menu is a small overlay widget: a click on a submenu entry opens
its fly-out instead of closing the menu, and the fly-out is placed beside
the menu where it actually landed (right when it fits, otherwise left), so
the menu never moves.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-05 16:23:08 +03:00
ramox81andClaude Opus 5.5 a3c79be278 Sheet sets: fly-out submenus, block previews, window-aspect named views
- Row menus open Set category / Place Callout Block as fly-out submenus
  (hover or right press; leftwards when the palette is docked right).
- List of Blocks and Select Block show the Blocks palette's preview.
- VIEW SAVE keeps the window's width/height ratio.
- Placing view content in model space is refused with the reference message.
- Drawings read for views, placement and blocks are cached by modification time.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-05 16:05:47 +03:00
ramox81andClaude Opus 5.5 7ad6e5b094 Count: Invalid Area dialog, table block kept with the table
- When the count area's boundary is gone the approved Invalid Area dialog
  asks: undo the change (also its X and Cancel) or count all of model space;
  "always" keeps the choice in the settings. An edited boundary moves the area.
- A table's *T block is brought up to date whenever the table changes.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-05 15:40:02 +03:00
ramox81andClaude Opus 5.5 0d0fbafaa8 Sheet sets: Place on Sheet, sheet view menus, block lists, missing status, field refresh
Model Views lists named model views and places them on the current sheet
(xref, viewport, paper-space named view, view label with navigation
fields, sheet view record); sheet view rows get Display, Rename & Renumber
View, Set category, Place Callout Block and Place View Label Block; the
View Category dialog's Add Blocks opens List of Blocks / Select Block; a
sheet whose relative path is gone shows missing; sheet set fields store
their values when a set changes; named views keep their centre relative to
the target. Codec pin moves to the revision with these field helpers.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-05 15:13:33 +03:00
ramox81andClaude Opus 5.5 95559a97f3 fix(save): keep a loaded solid's own wireframe cache
Saving filled every 3D solid without stored wires with tessellated display
edges, so solids read from a file without a wireframe cache (for example a
DXF) were saved with edges OCS never created. Only solids without ACIS data
now get an edge cache on save; solids OCS creates or edits already get their
wires when they are built.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-05 14:35:32 +03:00
ramox81andClaude Opus 5.5 4dba66bbac Count: table drawn into its block with fields in the cell texts, polygon prompt, exact areas
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-05 14:06:58 +03:00
ramox81andClaude Opus 5.5 5c9f19a4dc Sheet sets: import statuses, view navigation fields, drawing lock files
Import Layouts as Sheets shows the reference's statuses (already part of
a sheet set / may belong to another sheet set / available) and Browse
replaces the list; the Field dialog SheetView tree lists sheet views with
their properties, scale formats and hyperlinks; drawings open in tabs get
.dwl/.dwl2 lock files that other instances read as open; the codec pin
moves to the revision with sheet views and the default output folder.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-05 13:08:37 +03:00
ramox81andClaude Opus 5.5 789687659b Count: Current area counts all of model space; Properties cleared after the pick
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-05 12:54:22 +03:00
ramox81andClaude Opus 5.5 0a45e59c2f Sheet sets: approved dialogs, sheet status, view categories, model views, navigation fields
Remove Sheets confirmation, Open in drawing editor, Select Layout as Sheet
Template for subsets that prompt, Import Layouts as Sheets with status and
prefix, Rename & Renumber options with Previous/Next and real layout/file
renames, New Subset folder hierarchy and publish setting, subset properties
rows as the reference shows them, sheet status badges (SSMSHEETSTATUS /
SSMPOLLTIME), Sheet Views by category with the View Category dialog, Model
Views locations, Field dialog SheetSet/SheetView navigation, and .dwt/.dws
read as DWG.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-05 12:08:29 +03:00
ramox81andClaude Opus 5.5 0a26709d13 Count: measured messages and listing, groups, Current area, boundary checks, fills and solids recoloured
- COUNTCOLOR / COUNTERRORCOLOR / COUNTSERVICE reject any other value with
  the range message; COUNTTABLE ? lists in the reference order, padded,
  22 lines a page with Press ENTER to continue:, then the totals.
- Target picks report N found / N found, M total; several objects (or one
  that is not a block reference) count their copies, shown as Geometries
  in the palette.
- Current area is the area in use (kept aside by Entire model space),
  otherwise all of model space; an invalid Object boundary ends with the
  reference message.
- Count colours reach solids and fills; the palette list and the count
  are recomputed only when the drawing changes.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-05 11:36:24 +03:00
ramox81andClaude Opus 5.5 612bb26a8c Sheet sets: reference menu order, new sheets stay closed, .dst reload, navigation fields
The tree menus follow the reference per row kind (New Sheet / Import on a
sheet work on its subset, Remove Subset only while empty, Rename Subset),
a new sheet is not opened, an open set reloads when its .dst changes on
disk, ViewportScale placeholders take the version of their format and
the codec pin moves to the revision with navigation fields.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-05 10:53:45 +03:00
ramox81andClaude Opus 5.5 d830e40bfa Count: overlapping pair in the error colour, targets deselected, locked area layer
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-05 10:12:00 +03:00
ramox81andClaude Opus 5.5 ad5d2a8599 Sheet sets: wizard paths, Turkish step names and codec pin
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-05 10:00:28 +03:00
ramox81 88d8a33572 Merge remote-tracking branch 'origin/main' into codex/count-feature
# Conflicts:
#	Cargo.lock
#	src/app/commands/field.rs
#	src/app/control/actions.rs
#	src/ui/window/field_dialog.rs
2026-10-05 09:21:43 +03:00
ramox81 1696316e1f Merge remote-tracking branch 'origin/main' into codex/sheet-set-manager
# Conflicts:
#	Cargo.lock
#	src/app/control/actions.rs
#	src/ui/window/field_dialog.rs
2026-10-05 09:20:40 +03:00
ramox81 cfc762de74 Cargo: codec 6d9c604 2026-10-05 09:12:38 +03:00
ramox81andClaude Opus 5.5 0e1e13e524 WIP: Sheet Set Manager palette, wizard, properties and sheet set fields
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-05 09:10:17 +03:00
ramox81 547b89b5e7 Count: group count, list with an area, field dialog automation 2026-10-05 09:10:12 +03:00
ramox81andClaude Opus 5.5 3ae2912558 fix(insert): ATTREQ 0 inserts attributes with their defaults, without prompting
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 18:07:31 +03:00
ramox81 f76b6cb3bb WIP count: automation, locales 2026-10-02 17:53:28 +03:00
ramox81 e29b408bda WIP count feature 2026-10-02 17:52:13 +03:00
ramox81andClaude Opus 5.5 785db5683b feat(field): table formula buttons, block placeholders, attribute fields on insert, plot-time field stamping
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 17:22:08 +03:00
ramox81andClaude Opus 5.5 07facf465c fix(solids): box and wedge histories framed at the bounding-box centre; no second transform after ACIS lift
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 15:10:37 +03:00
ramox81andClaude Opus 5.5 0c81580862 fix(field): FIELD text has no defined width, so it does not wrap
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 12:47:31 +03:00
ramox81andClaude Opus 5.5 a735b10b34 feat(field): Formula, Hyperlink and plot fields; local-time field dates, file times and display name; header dates on save
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 12:38:49 +03:00