Commit Graph
100 Commits
Author SHA1 Message Date
ramox81andClaude Opus 5.5 659bb06cd6 IMPORT: read SAT, STEP, IGES and WMF files; ACISIN and WMFIN
ACIS text files come in one object per body (3DSOLID, REGION or SURFACE).
STEP B-rep models become a block per product with component inserts at
their placements, scaled to the drawing's units; IGES manifold solids come
in as 3DSOLIDs scaled to the drawing's units with their colours. Splines
that are exactly analytic shapes are kept as those shapes. Windows
metafiles become a WMF<n> block of polylines and text fitted to half the
view, placed at its top-left corner or by WMFIN's insertion prompts. The
Import File window lists the four formats as supported.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 15:06:16 +03:00
ramox81andClaude Opus 5.5 31a0c1ff4f Insert ribbon: Recognition Settings opens the settings from PDFSHXTEXT
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-15 16:51:33 +03:00
ramox81andClaude Opus 5.5 907e501765 PDFSHXTEXT: recognise SHX text geometry as MText
Adds PDFSHXTEXT with the PDF Text Recognition Settings dialog, its
command-line form, the PDFSHXLAYER / PDFSHXBESTFONT / PDFSHXTEXTSETTINGS
variables and the profile settings they are kept in.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-15 16:40:19 +03:00
ramox81andClaude Opus 5.5 f29f386148 import: IMPORT window and DGNIMPORT converting DGN models to drawing objects
The DGN V7/V8 readers expose each element (level, symbology, geometry,
complex chains, text nodes, shared cells). DGNIMPORT / -DGNIMPORT convert a
model with the Standard mapping into a new drawing; IMPORT opens the
Import File window and routes PDF and DGN files to their importers.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-15 16:09:12 +03:00
ramox81andClaude Opus 5.5 4e4dc86908 TXT2MTXT: combine text into MText, with its settings dialog
TEXT and MTEXT objects are merged into one MTEXT (top-down or in
selection order, word-wrapped or one paragraph per object, with the
original pitch kept as line spacing) or each TEXT and MTEXT line becomes
an MTEXT of its own. The SEttings option opens the Combine Text settings
dialog; the settings persist as profile values and are exposed as the
TXT2MTXT* variables and the txt2mtxt_settings automation action.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-15 15:50:28 +03:00
ramox81andClaude Opus 5.5 8a87a09e30 Insert ribbon: Import panel
Import File split button (PDF Import / DGN Import / Import), Recognize
SHX Text, Recognition Settings and Combine Text; Land XML moves to the
panel slide-out and Open leaves the panel. Ribbon commands may be menu
macros (`;` answers the running command's prompt). KeyTips IF, PI, DI,
OI, PS, PT, TM; labels in every locale.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-15 14:53:08 +03:00
ramox81andClaude Opus 5.5 91624354c8 PDFIMPORT: command-line file import, viewport measure scale, curve recognition
PDFIMPORT follows FILEDIA and -PDFIMPORT asks for the file, page,
insertion point, scale and rotation on the command line. A page with a
viewport measure is imported in its measured units. Straight polylines
that trace arcs, circles and ellipses, and runs of circular Bezier arcs
on one circle, become those objects; other Bezier curves become one
SPLINE each.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-15 14:46:52 +03:00
ramox81andClaude Opus 5.5 367c89a2c8 Block Definition dialog: preview references, amber band
A selected block reference is previewed from its definition placed by
the reference's transform; the no-objects band is amber.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-15 10:49:59 +03:00
ramox81andClaude Opus 5.5 3bd828d0f5 Block Attribute Manager: one undo step per Apply
Live changes are taken back quietly before Apply, OK or Sync write the
list again, so each leaves exactly one undo step even when something
closed the open live step in between; Cancel takes them back without a
command-line notice. References keep their values through renames made
live.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-15 10:34:58 +03:00
ramox81andClaude Opus 5.5 4726c775bf Block Attribute Manager window (BATTMAN / ATTMAN)
BATTMAN and ATTMAN open a manager for the attribute definitions of one
attributed block: block chips with reference counts and a pick button,
a table whose columns are chosen with chips, move up/down, remove, and
an edit card (Attribute / Text / Properties) for the selected row. Apply,
OK and Sync write the list back to the block definition and, when asked,
rebuild the existing references keeping values through tag renames;
each is one undo step. Live changes are taken back on Cancel. Automation
gains attman_dialog.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-15 10:10:54 +03:00
ramox81andClaude Opus 5.5 d69a5f0ac4 Block Definition dialog: preview, empty-block band, open in editor
The name card draws the selected objects, or the existing definition the
name picks. OK with no objects shows an in-window band offering to select
objects or to define an empty block. A switch opens the new block in the
block editor once it is defined; it is remembered with the other dialog
choices. Automation gains block_def_dialog.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-15 09:50:35 +03:00
ramox81andClaude Opus 5.5 5cd87ac24b Insert ribbon: Block Definition panel split button and labels
The Block Definition panel's Create Block is a split button listing
Create Block and Write Block; its face runs the last one chosen. The
slide-out lists Set Base Point and Synchronize with their labels, and
the large buttons read Manage Attributes and Block Editor.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-15 09:48:09 +03:00
ramox81 99e30f1548 Merge remote-tracking branch 'origin/main' into codex/block-definition-command-line
# Conflicts:
#	src/app/commands/inquiry.rs
#	src/modules/draw/modify/block_edit.rs
2026-10-14 17:51:56 +03:00
ramox81andClaude Opus 5.5 eaa44cccc1 ATTSYNC: rebuild attributes from the definitions
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 17:32:44 +03:00
ramox81andClaude Opus 5.5 d583d9d421 Block Definition command-line forms, block record data and dialog defaults
-BLOCK, -WBLOCK, -BEDIT, ATTSYNC, BASE and INSBASE follow the reference
prompts and messages; empty blocks; WBLOCK keeps object coordinates and
stores INSBASE; annotative and hyperlink data on the block record; block
preview images; remembered dialog choices; block aliases.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 17:30:21 +03:00
ramox81andClaude Opus 5.5 c2c34e45fa Key tips: reference command for shared codes, no code over labels
A code the reference shows on two buttons runs the button whose command
the reference runs for it (VC runs Viewport Configuration), decided by
the code table's order. Labels, combo values and panel titles report
their bounds while key tips are open, and each code takes the first
spot nearest the reference place that covers none of them nor another
code; a collapsed panel's title is measured to place its code beside
the words.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 15:17:38 +03:00
ramox81andClaude Opus 5.5 b9fd0a066c Selection: count duplicates and removals from the step's own picks
The count line now uses the objects the selection step itself picked
(a click, a window or crossing, a lasso, a fence, Last / Previous /
All): "N found (D duplicate), M total" when some were chosen already,
"N found, R removed, M total" in remove mode, "N found, M total" when a
removal picks objects that were not chosen.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 14:49:27 +03:00
ramox81andClaude Opus 5.5 b5ce285386 Key tips: reference quick-access numbers, shared codes, placement
Quick-access buttons take the numbers the reference toolbar gives the
same buttons (Print 6, Undo 7, Redo 8). Codes the reference shows on two
buttons appear on both, the first in ribbon order running. Codes sit
where the reference puts them: under tab and large-button labels, on a
large dropdown's arrow strip, with their corner at the icon's centre on
icon buttons, and centred on panel titles and the corner launcher; a
button code a panel code would cover rises clear of it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 14:08:59 +03:00
ramox81andClaude Opus 5.5 1e93b16911 Selection: report what each pick found while a command gathers objects
Every pick during object selection prints the reference's count line:
"N found" for the first pick or a pick that adds nothing, "N found,
M total" after it, "N found, N removed, M total" when objects leave the
set. It is printed before a command's own filtering, so "N were filtered
out" follows it. COUNT reports through it and the ad hoc
"object(s) found." / "object(s) added to selection." lines are gone.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 13:27:44 +03:00
ramox81andClaude Opus 5.5 4840bd70ac REFEDIT: a DWF underlay's page is not faded outside the working set
During in-place reference editing everything outside the working set
fades by XFADECTL. A DWF underlay's page now stays as it is, like a
raster image or a PDF page, and only its frame fades; a DGN underlay's
content keeps fading with the rest.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 13:16:03 +03:00
ramox81andClaude Opus 5.5 0b877cbffc XREF: keep layer 0 and Defpoints as the host's own
A reference's layer 0 and Defpoints are not dependent symbols: its
objects on them use the host's layers of those names, which are made
from the reference's only when the host has none. Before, they became
XREF|0 / XREF|Defpoints on load and XREF$0$0 on bind.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 13:13:48 +03:00
ramox81andClaude Opus 5.5 df7f81a07d REFEDIT: nested pick messages and the session note
Picking nested objects reports what each pick added ("1 entity added",
"0 entities added" for an object already in the set), a pick on empty
space starts a window ("Specify opposite corner:"; a window dragged to
the right takes the objects inside it, to the left those it touches),
and a typed point picks the object it lies on. From the Reference Edit
dialog the item count is printed when the session opens, followed by
"Use REFCLOSE or the Refedit toolbar to end reference editing session."

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 12:57:42 +03:00
ramox81andClaude Opus 5.5 86429bf439 Ribbon key tips: Alt shows codes on tabs, buttons and menu items
A lone Alt shows a code on every ribbon tab and quick-access button.
Typing a tab code opens the tab and shows the codes of its buttons,
dropdowns, slide-outs and collapsed panels; a button code runs it, a
dropdown or slide-out code opens it and shows its item codes, Esc goes
back one level. Codes follow the reference ribbon; buttons without a
reference counterpart get none and unnamed menu items are numbered.

Codes are drawn as accent pills over the widgets that reported their
bounds in the current frame, with a hint bar under the ribbon. While
the tips are open keys go to them only. The automation gets a keytips
action and read operation.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 11:18:58 +03:00
ramox81andClaude Opus 5.5 74d65c26be REFEDIT session toolbar: definition name, working set count, REFSET
The right-edge toolbar of a REFEDIT session now shows the definition
being edited (REFEDITNAME) as an accent pill with the number of objects
in the working set, Add to / Remove from Working Set buttons with their
own icons (REFSET Add / Remove, straight to object selection), and
Save / Discard in a separate group below a rule.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 10:51:22 +03:00
ramox81andClaude Opus 5.5 92a3a8ee4d REFEDIT: Edit Reference dialog and unique names for xref objects
REFEDIT opens a dialog after the pick: the nesting chain as chips with a
preview of the chosen definition, all objects or picking them in the
drawing, attribute definitions (offered only when the definition has
them), locking objects outside the working set and unique names for an
external reference's named objects. The settings are remembered.

With unique names an xref's dependent layers, linetypes, text styles and
blocks are checked out as $N$NAME records of their own; without, under
the plain name, sharing a host record of that name. Save writes them back
under the reference's names, and the records made for the session are
removed when it closes. -REFEDIT uses the remembered settings.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 10:39:28 +03:00
ramox81andClaude Opus 5.5 2f55c73457 IMAGEADJUST: Image Adjust dialog for raster images
IMAGEADJUST (alias IAD) takes the selected raster images or asks
"Select image(s):", then opens a dialog with a before/after preview of
the first image and brightness, contrast and fade rows (bar plus
stepper, whole numbers 0-100). Apply writes the values to every chosen
image as one undo step; restore defaults sets 50/50/0. Adds the
image_adjust automation action and the image-adjust locale group.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 10:11:36 +03:00
ramox81andClaude Opus 5.5 8743f6a199 Raster images: draw with their brightness and contrast
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 17:02:11 +03:00
ramox81andClaude Opus 5.5 da7eb66a4d DWF underlays: read the W2D set-origin opcode
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 16:42:31 +03:00
ramox81andClaude Opus 5.5 a0a83ad681 ADJUST: images and underlays, -IMAGEADJUST and PDF/DWF/DGNADJUST
ADJUST gathers raster images or PDF/DWF/DGN underlays (other objects are
dropped silently, pickfirst is used, a mixed set is refused), then asks the
image option (Brightness default) or the underlay option (last used), with
value prompts that offer the image's own value or the session's last
underlay fade/contrast, and Monochrome Yes/No. Invalid values re-prompt.
One undo step. -IMAGEADJUST, PDFADJUST, DWFADJUST and DGNADJUST take one
kind each. Raster image Brightness/Contrast/Fade move to an Image Adjust
section as whole numbers with 0-100 validation.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 15:53:20 +03:00
ramox81andClaude Opus 5.5 042223a09c Insert ribbon: Reference panel after Block Definition; Snap to Underlays list follows UOSNAP
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 15:52:27 +03:00
ramox81andClaude Opus 5.5 6784f89993 REFEDIT: reference prompts, -REFEDIT, REFSET, nested references, xref write-back
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 15:52:26 +03:00
ramox81andClaude Opus 5.5 d217248ac3 CLIP: Enter at the object prompt ends silently
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 15:28:36 +03:00
ramox81andClaude Opus 5.5 15c70b16d1 ULAYERS opens in a drawing without underlays; the ribbon runs ULAYERS
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 15:28:06 +03:00
ramox81andClaude Opus 5.5 4b7fb40529 XDWGFADECTL: ask again after an invalid value, keep it in the profile
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 15:27:22 +03:00
ramox81andClaude Opus 5.5 63bfb5d5b6 EXTERNALREFERENCES opens, EXTERNALREFERENCESCLOSE, ERSTATE, reference aliases
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 15:25:25 +03:00
ramox81andClaude Opus 5.5 0678c579c0 ATTACH: FILEDIA, -ATTACH command line and reference file types
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 15:22:44 +03:00
ramox81andClaude Opus 5.5 e21b50cf75 Layouts: a new layout has no viewports until it first opens
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 12:33:14 +03:00
ramox81andClaude Opus 5.5 518d058043 Layouts: never-opened layouts are written without viewports; their sheet is made anew on first opening
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 12:21:46 +03:00
ramox81andClaude Opus 5.5 c55dbb886e Layouts: first opening follows the page setup; viewports picked by their frame
- A layout opens for the first time when its page setup was never
  initialized (no paper size, no media name) or it was created in this
  session; its page setup is initialized then, and with
  LAYOUTCREATEVIEWPORT it gets its first viewport. A layout never opened
  is saved with an uninitialized page setup and no viewports, so it gets
  its viewport when the file is opened again, here or in the reference.
- Select Viewport for view: a viewport is selected when the pick box
  (PICKBOX pixels at the sheet's zoom) touches its frame; a pick well
  inside or outside selects nothing and the prompt repeats.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 12:02:26 +03:00
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