The codec crate is named acadrust again (b6cb385); the `codec` key and
every `codec::` path stay as they are, only the package name changes in
each manifest, the plugin API build script finds it under that name, and
the recovery report reads the codec revision from the `codec` line it
had stopped matching. Codec: DWG dimension text-position flag polarity
(#117) and explode ByBlock resolution.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
A save from the active drawing first redraws the viewport without its
overlays and screenshots it for the file's preview. When the compositor
delivered no frame or never answered the screenshot (an occluded or
throttled Wayland window), the save never started: the input layer stayed
hidden, so the window ignored the mouse and keyboard, and automation
requests waited on the save forever. A timer now stands in for the frame,
and the screenshot races a half-second timeout; whichever answers first
runs the save, without the refreshed preview if it has to.
Closes#1801
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Backslashes and braces in a DGN text stay characters in the MTEXT it
becomes instead of turning into formatting codes.
A 3D V8 text is cut at its stored byte count before it is decoded, so a
multi-byte character no longer shifts where the text ends.
Doc comments that had slipped onto the wrong functions are back on
their own, comments describe the behaviour instead of pointing at
another program, and a few lines added in the previous commits are laid
out the way the rest of the code is.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
The merged import adds the tds_import_dialog control action, which
changes the MCP tool surface; update the pinned digest to match.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
STEP assemblies: a link that closes a loop in the assembly is dropped,
so no block inserts itself; the walk is iterative. Each imported block
gets a name the drawing does not use yet instead of silently reusing an
existing definition, inserts are pointed at the names the blocks got,
and an insert of a block that could not be defined is left out with
the error reported.
Names that come from files (STEP products, 3D Studio objects, materials
and cameras, WMF font faces) go through a new shared
scene::sanitized_table_name, which applies the block-name rules
(reserved and control characters, 255 characters).
3D Studio: meshes with more vertices than a polyface mesh can index are
split over several meshes. Single-layer mode uses the current layer.
Materials are only created when the drawing has a material dictionary.
Camera views get the current view's proportions and the perspective
flag.
Messages show paths as given, the file-not-found and read-failure
messages are plain text of our own, and the "Press Esc" line is gone
since the import cannot be cancelled. The true-colour packing is
shared. "Select ACIS File" and "Import WMF" get catalog entries and
keys in all 22 locales.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
A truncated or hostile file could crash, hang or exhaust memory while
being read. STEP: a last instance without its semicolon no longer runs
the cursor past the end, the complex B-spline forms read their parts
with bounds checks, a knot multiplicity is capped at degree + 1,
parameter lists nest at most 64 deep, and wrapped curves and
conversion-based units follow at most a fixed number of hops so
self-references cannot loop. IGES: spline curve and surface sizes, hole
and boundary counts and list indices are checked against the
parameters the entity actually has, using checked arithmetic;
transformation matrix chains and nested composite curves are cut after
a few links. IGES colour 1 (black) now maps to colour 7 so it shows on a
dark background. WMF: a record whose size claims more than the file has
left is clamped to the remaining bytes. Doc comments describe the
behaviour instead of naming an outside program.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
The element collector keeps a stack of open complex elements instead of
one. A chain, text node or cell inside a cell is gathered on its own and,
once complete, counts as one component of the cell, rather than closing
the cell early and leaving its remaining components at the top level.
A B-spline curve whose poles cannot be read still takes its place in the
open cell, so the cell does not absorb the element after it. An element
that is not a component ends every complex element still open, so a
header whose count overstates its components cannot swallow the rest of
the model.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
A line string, shape or complex chain whose points are not all at one z
becomes a 3D polyline instead of a 2D polyline flattened to the first
point's elevation; its arcs then come in as points. Chain vertices are
de-duplicated on all three coordinates, and only arcs in the drawing
plane become bulges.
A filled complex shape gets its solid hatch like a filled simple shape,
following the outline's arcs. The hatch keeps the outline's elevation
and is left out when the outline is not at one z.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Plain -DGNIMPORT no longer writes drawings next to referenced files on
its own: references are ignored unless the window (or the kept import
settings) asks to translate them or attach them as underlays.
A referenced file named relative to the host is looked up in the host's
folder rather than the working directory. Its translated drawing takes
a file name made from the model name with path separators and other
reserved characters replaced, so it is always written in the
reference's own folder. A reference placed in sub units is scaled by the
same factor as its origin.
Layer, block, text style and reference names read from the file are
made valid symbol names (reserved characters become underscores).
An instance of a cell that has no block (the point display cell, an
empty or missing definition) is dropped instead of inserting a block
that does not exist.
"Prompt to overwrite" still keeps an existing translated drawing; the
code now says so instead of implying a prompt.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
A V8 B-spline header shorter than 110 bytes no longer panics: the order
and closure word is read only when the element holds it.
A V7 cell takes only the components its total length covers, and cells
nested deeper than 16 levels are left out, so a long run of complex
elements no longer recurses once per element until the stack overflows.
A nested cell also stops swallowing the sibling elements after it.
Only the chosen model's control stream is inflated for its reference
attachments, within what is left of the budget the models were read
under, instead of every model's stream without a total limit.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
New Drawing starts from the default template (Options > Files), so a
template made here or in another program could only be reached through
the NEW command. The button runs NEW, which asks for the .dwt, .dwg or
.dxf to start from.
Closes#1849
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Codec: the colour index palette at its standard intensities (#115), ACIS
colour attributes kept in binary data and multi-body split (#116, #118).
Kernel: spline curves and surfaces recognised as analytic shapes (#89).
The MCP tool schema digest follows the two PDF import automation actions
#1841 added.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
An arc moved only when its centre was in the window, so stretching a
rounded end left the arc where it was or blew it up. Its ends now decide:
both in move it, one in moves that end while the arc keeps its height
(sagitta) over the new chord. Polyline arc segments keep their height the
same way instead of their bulge, spline control and fit points in the
window move, and 3D polylines and points stretch too. Old-style polylines
were tested in X/Z.
The preview moved the tessellated points that happened to be in the
window, which bent arcs out of shape; it now draws the stretched entities
through one shared function the commit also uses, via a new
preview_entities hook, and hides the originals while it shows.
Closes#1851
Co-Authored-By: Claude Opus 5.5 <[email protected]>
On a profile that never ran the editor the folder did not exist, the lock
write failed, and ocs_sessions(launch_if_none) took that as another caller
starting the GUI: it never spawned one and kept answering "still starting".
Closes#1846
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Large DWG sections (over 100 MB) read back instead of opening empty, and
DXF files with very large DGN stroke patterns no longer hang the reader.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Opening a drawing no longer drops entities with its own sanity checks or
rewrites knotless splines; recovery runs the codec's repair and records
its actions and unresolved issues in the drawing's notifications. Xref
merges keep every entity. The dropped-entity counts, their command-line
warnings, recovery report rows and the automation "purged" field go with
the guard.
AUDIT now reports the codec's audit (counts plus the first 50 issues) and
asks whether to fix; Yes applies the codec repair as one undo step.
Cargo: codec 325fa98, kernel dfca391, graph 5d4e713.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
The codec now holds wide EntityType variants boxed (MText, Helix,
Dimension, Hatch, Viewport, MultiLeader, Surface, Table, Ole2Frame,
Light, Extended). Constructors box their entity; nested patterns reach
a dimension through entities::dimension::as_dimension(_mut). Also
follows BlockAction::action_ids, LineTypeComplexData::source_flags and
the decimal tab stop with an explicit character.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
EED names its application by APPID handle. Copying between drawings
(paste, COPYTO, block palette insert, REFEDIT) kept the source
drawing's handles, so the saved DWG named APPIDs it did not have and
the reference program refused to open it (xdata.cpp eInvalidInput).
The copy now carries the APPID records its XDATA names, registers the
missing ones, and re-points the EED at them.
COPYTO also skipped every layer the target lacked (the check tested
the source) and filled the target with the whole linetype catalog; it
now copies the missing layers and loads only the linetypes used.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Homebrew dropped --no-quarantine and installs casks only from a tap, so
the README's direct-URL install no longer worked, and the cask still
pointed at v0.4.8.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
A block whose content is only 3D solids leaves a marker wire carrying
its insertion snap, and that point counted as drawing extent: a
georeferenced block inserted at the origin made ZOOM E frame the
origin and the model together, 860 km wide. Extents now skip those
markers; the solids count through their meshes. The marker's snap also
took the insertion point straight from the OCS, so a mirrored insert's
snap sat on the far side of the origin.
ZOOM All fitted the limits alone. In a 3D view it is now Zoom
Extents, and in plan it frames the limits together with the extents.
Instanced solids summed their rotated point and translation in f32
before meeting the eye, which cost up to half a metre at survey
coordinates; the large terms now cancel first.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Opening a drawing added all 50 catalog linetypes to it, so PURGE found
and removed them again after every save and reopen. Opening now only
repairs the catalog linetypes a drawing already has. The linetype
pickers (layers, properties, ribbon, attribute editor, layer states)
offer the missing catalog ones after the drawing's own, and the one
picked, or named in LINETYPE SET, is loaded on first use.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
The layout tab's right-click menu gains New Layout, Copy, Page Setup
and Plot beside Rename and Delete. Copy makes "<name> (2)" with the
source's page setup, sheet view and every paper-space object,
viewports included, and opens it.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Options > Selection gains "Selection highlight opacity" and "Selection
highlight extra width". Below full opacity the object's own colour
shows through the highlight. The selection overlay draws with its own
copy of the frame uniforms: transparency on, and every line widened by
the extra width. Drawings opened at startup now get the selection
colour settings too; they used to keep the defaults until a setting
changed.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Drafting Settings > Snap and Grid gains "Display grid axis lines",
kept with the other grid settings; the grid itself stays as it is.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Only the definition's entities crossed drawings: its record's object
graph (parameters, visibility states, grips) stayed behind, and a
reference showing an evaluated copy lost the link to its definition.
The clipboard now captures the graph and the dynamic definition of an
evaluated reference, and paste and the block palette's insert-from-file
recreate them on the new records, re-pointing members and element tags.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
COPY cloned the reference's AcDbRepData without its handle, owner or
representation index, and both references kept sharing one evaluated *U
block, so a state picked on either changed both. The clone now names
itself and is indexed; a state change gives a reference whose *U other
references share its own copy first.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Each picked region matched every edge of its rings against every
boundary source of the drawing, twice: with 65,000 sources a click took
over 30 seconds. Sources are now narrowed to those reaching the rings'
box first, once per hatch and once per ring: the same click takes 9 ms.
Objects on layers that are turned off (not frozen) now bound a hatch, as
in the reference. Drawings switch off the layers that close the regions
to be hatched; without them a click between columns found the outer
frame instead. (#1813)
Co-Authored-By: Claude Opus 5.5 <[email protected]>
The kernel fills hatch rings whose holes touch (a column against a beam)
by the even-odd rule instead of dropping the whole hatch. A pick-point
hatch with 222 such loops was saved but never drawn. (#1813)
Co-Authored-By: Claude Opus 5.5 <[email protected]>
The dimension style, multileader style and Properties pickers listed
every block of the drawing as an arrowhead, and nothing else. They now
list the 19 standard arrowheads (Closed filled, Open, Dot, Architectural
tick, Oblique, Right angle, Datum triangle, …), followed by any user
arrow block the dimension or style already uses. Picking one creates
its block (`_Open`, `_ArchTick`, …) with the geometry the reference
program writes, so other programs draw the same arrow; ODA reads the
saved file cleanly.
`_Small` now draws as the reference's "Dot small blank", a hollow circle
half the arrow size, instead of a small filled triangle.
Also drops a duplicated "DGN Import" catalog entry left by #1810/#1812.
(#1820, #1821)
Co-Authored-By: Claude Opus 5.5 <[email protected]>
The name field shared the 160 px sidebar row with Save and the close
button, so it was squeezed until no text showed. It now takes the full
width with the buttons below it, and the close button is the SVG icon
instead of a "×" glyph. (#1817)
Co-Authored-By: Claude Opus 5.5 <[email protected]>
- `SelectObjectsCommand::with_settings` exists once: #1811 and #1814
each added one; PDFSHXTEXT now passes its settings step as the
callback #1811's takes.
- The `pdf-shx` locale group in every language (English until
translated), so the catalog test passes.
- MCP tool schema digest for the `pdf_shx_settings` action.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
iced_test renders headless through wgpu by default. Several test threads
opening GPU devices at once crashed the driver: about every other
parallel `cargo test --lib` run died with SIGSEGV, always with the
color picker, ribbon, overlay and dock UI tests running together. With
ICED_TEST_BACKEND=tiny-skia the suite passes run after run.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
A solid's edges and silhouettes were drawn in its face colour, and the
edge shader read that from the material instead of the edge vertices.
Colour 7 is white, so in Wireframe 2D a solid vanished white-on-white in
a layout viewport (and on a light model background), while wires and
block solids already turned black there. Solids now keep a separate
edge colour, colour 7 turned against the background they are drawn on,
and the edge shader uses the edge vertices' colour again, which also
brings back visual-style edge colours. Shaded faces keep their colour
so they still read as lit. (#1446)
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Saving `starttekening.dwg` unchanged lost 275 associative objects: the
constraint network rebuilt before saving cannot write a dimensional
constraint that drives a dynamic block's constraint parameter instead of
a dimension, nor separate dependencies on single edges of one polyline.
The block parameters ended up pointing at erased objects. A group with
either link is now kept as read, through the existing preserved-group
path; ODA counts the same 1948 associative proxies before and after.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
#1811 and #1812 add the `txt2mtxt_settings`, `import_file_dialog` and
`dgn_import_dialog` automation actions.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
The viewport hides the system cursor for its crosshair, and the progress
card's backdrop claimed no cursor of its own, so while a drawing opened
the pointer vanished over the viewport and Cancel could not be aimed at.
The backdrop now shows the arrow. (#1727)
Co-Authored-By: Claude Opus 5.5 <[email protected]>
A radius placed its text where it was clicked, on the line through the
centre and the arc point, whatever DIMTAD said; outside the circle the
line stopped at the text's near edge, so the text sat on the end of the
line. DIMTAD now lifts aligned radius text off that line as it already
does on a diameter, and an outside line runs on under the text to its far
end. A text point already off the line (a file saved elsewhere) is kept
as the text's middle. (#1675)
Co-Authored-By: Claude Opus 5.5 <[email protected]>
A left drag only became a lasso/window after the button had been held
150 ms, however far the cursor had moved. A fast flick released inside
that delay read as a click and armed a click-click box instead. A press
that has moved more than 12 px is now a drag at once; the delay still
keeps small movements of a click from becoming one. (#1808)
Co-Authored-By: Claude Opus 5.5 <[email protected]>
A request settles once the work it started reports back, and waits for
any open or save in progress. When that never happens the bridge stayed
busy: every later request, `cancel` included, was refused until the app
was killed. `cancel` now ends the active command and closes any pending
request as cancelled, not only interactive picks. (#1801)
Co-Authored-By: Claude Opus 5.5 <[email protected]>
The paste adds entities to the document directly, so the fill and raster
models `add_entity` seeds were never built. An associative hatch got its
model back when its pasted boundary rebuilt it; a non-associative one
stayed in the drawing but was never drawn. Seed the fill, image and
underlay models of the pasted entities. (#1807)
Co-Authored-By: Claude Opus 5.5 <[email protected]>
- Block Attribute Manager: the error band's dismiss button is the close
icon, not a "×" glyph the web build may not have.
- Two signatures wrapped to the 100-column limit.
- MCP tool schema digest updated for the new `block_def_dialog` and
`attman_dialog` actions.
- Measurement docs: MEASUREGEOM's Quick mode.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
The codec now decodes version-0 (2010 release) constraint groups, so the
parametric constraints of such drawings load and their dynamic
dimensions show (#992). Constraint groups also keep their next node id.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
MEASUREGEOM gains a Quick option. As the cursor moves, the nearest
drawn geometry along the working plane's X and Y lines through it is
measured live: cyan measurement lines and a Horizontal/Vertical readout
by the cursor. A click prints the current readout and keeps measuring;
Enter ends the command. The rays go through the scene's interaction
index, so large drawings stay responsive.
A structure-pick command whose miss message is empty now gets the click
as a plain point instead of an error.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Every plotted wire and hatch resolves to its entity's layer, and the PDF
wraps each run of same-layer items in an optional-content group, so a
viewer's layer panel lists the drawing's layers and can hide them. Draw
order is unchanged; images stay outside any group. Expanded block
geometry goes with its INSERT's layer.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Plugins read the host's document through a shared reference across the
dynamic-library boundary, and the entity index hashed with foldhash's
per-process seed, so every handle lookup from the plugin missed. The
codec now uses a fixed hasher (opencadcodec f385f75; kernel 9841749,
graph e9c23ad).
The Python IPC suite also caught up with intended changes: ATTDEF
renders its tag, DXF now keeps the lock-position flag, and the modify
audit turns associative arrays off since it checks loose copies.
The rate-limiter test waits for the host's check instead of a fixed
sleep that raced on macOS, and ENV_LOCK no longer cascades a poisoned
lock into every later test.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
With dynamic UCS on (UCSDETECT 1, toggled with F6), a command's first
point picked on a planar face of a solid sets the UCS to that face for
the rest of the command, so 2D commands draw on the face (#1711). An
unsnapped first point lands on the face itself; a snapped point off the
face's plane belongs to other geometry and leaves the UCS alone. The
previous UCS comes back when the command ends. UCS commands themselves
are left out.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Options → User Preferences → Navigation style picks which mouse
gestures pan and orbit the model view (#1480):
- CAD (default): middle button pans, Shift + middle button orbits.
- Blender: middle button orbits, Shift + middle button pans.
- CATIA: middle button pans; pressing the left button during it orbits,
so 3D navigation needs only the mouse.
An armed orbit tool always orbits. The choice is saved with the user
settings.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Cargo: codec d36331d, kernel 60f086b, graph 74aac56.
The table model and its file codec now live in `codec::plot_style`
(opencadcodec#53) and are re-exported here. What stays is where tables
come from: the plot styles folder, the session registry, the shipped
tables, and saving to disk, as the `PlotStyleTableExt` trait.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
- Gradient stops keep their DWG color book name and book; RGB wins over
ACI in a DXF gradient block in either tag order.
- MTEXT decimal tab stops keep their alignment character.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
A browser tab gets a few GB of memory at most, so a drawing of a few
hundred MB can fail to open there while the desktop app opens it
(#918). When an open over 150 MB fails in the browser, the command line
now says so and recommends the desktop app.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
With Quick Select or another dialog open, letters typed while one of
its lists was open went to the command line behind it (#922). Typed
glyphs are now dropped while a dialog is up; its own text fields keep
receiving them as before.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
A middle-button drag stopped when the pointer left the viewport: the
mouse area reports moves only inside, and leaving reset the drag, so
the release outside never arrived (#1400). The viewport and each model
pane now carry an input layer that keeps reporting a drag they started,
with the pointer anywhere in the window, and the release outside ends
it; leaving no longer cancels a middle-button drag.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Annotative text in DWG/DXF holds the model height of its default
(native) scale representation; other scales draw it at the ratio of the
two. OCS read the stored value as paper height and multiplied it by the
annotation scale again, so text from AutoCAD came out far too small
(#1734), and annotative text OCS wrote came out too small in AutoCAD.
- Rendering uses the active/native context ratio (1 when the object has
no representation for the displayed scale).
- TEXT with an annotative style asks for the paper height, stores the
model height of the creation scale and gets that context; MTEXT
starts from the model height; ANNOUPDATE converts a fixed style
height the same way.
- Properties: the Height row of annotative TEXT and MTEXT is the paper
height at the displayed scale, with the model height beside it, and
an edit converts back. MTEXT shows Annotative when it has contexts.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
WIPEOUT's Polyline option took only straight closed polylines. It now
also takes a circle or a closed polyline with arc segments, sampled
every 5° into the polygon a wipeout stores, so the result stays a
standard polygonal wipeout (#641).
Co-Authored-By: Claude Opus 5.5 <[email protected]>
A dynamic dimension is drawn by its constraint at screen size; without
the constraint it is a bare dimension with stretched extension lines.
Those orphans now stay undrawn and unplotted, as in a viewer (#992).
- First-release drawings keep dynamic dimensions on
*LayerNameForDynamicConstraint; it counts as the dynamic layer.
- The hidden set is refreshed when constraints load, and the loader's
prepared wires (built before that) are not installed while it holds
anything.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
With nothing selected, Shift+MMB orbit pivoted on the surface at the
view centre, so grabbing a small part off-centre flung the model away.
It now pivots on the solid or mesh surface under the pointer where the
drag began, falling back to the view centre and then the camera target
(#1389).
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Typing a length keeps the start angle and moves the end along the
circle; a length outside (0, 2πr) is ignored (#1408).
Co-Authored-By: Claude Opus 5.5 <[email protected]>
New created a bare dimension style, whose defaults are inch-sized
(0.18 arrows and text). In a metric drawing its arrows came out too
small to see (#1675). It now starts from the selected style.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
DXF values read into exactly sized strings (codec #114): reading a
DXF in the web worker no longer spends most of its time in malloc.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Import AutoCAD PGP aliases and support UCSFOLLOW workflows. The UCS
conflict keeps main's click-origin flow (axis preview, Enter accepts
the placed axes) and takes the PR's prompt and option keywords.
Selection cycling was reachable only from the status bar and Options.
SELECTIONCYCLING / SETVAR now read and set it: 0 off, 1 or 2 on (the
candidate list always shows).
Co-Authored-By: Claude Opus 5.5 <[email protected]>
UCS waited for an option keyword before taking any point. A picked or
typed point at the first prompt now starts the origin / X / XY
placement directly. A live L of the new X and Y axes follows the cursor,
and Enter accepts what has been placed so far: the origin alone moves
the UCS, an X point turns it about the current Z.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
PROPERTIES only flipped the visibility flag, so a Properties pallet in
an edge's inactive group or behind auto-hide stayed out of sight. It
now opens through the dock, which brings its group forward. In clean
screen the pallet shows on top without changing its normal state;
leaving clean screen drops that overlay.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
An annotative dimension style still stores a DIMSCALE (100 in ACA
templates), but its features are sized by the annotation scale. Using
the stored value drew 3 mm dimension text 300 units tall, burying the
plan under giant digits.
Some templates also store their ratio scales already converted to the
drawing unit (a metre drawing's "1:50" as 1 paper = 0.05 drawing, with
CANNOSCALEVALUE 20). Applying the INSUNITS conversion on top shrank
the annotation multiplier a thousandfold.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Options > Files lets the fonts and plot style folders move elsewhere,
such as a share a whole team uses (Change... / Default). Fonts are then
looked up and downloaded there, and plot style tables listed and saved
there; the choice is kept in the profile.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Dragging a radius dimension's text left the point on the arc where it
was and kinked the line to reach the text. The point on the arc now
follows the text round the centre, as the diameter's already does.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Changing a TEXT's style in the Properties panel only swapped the font, so
a style that differs in its fixed height, width factor or oblique angle
seemed to change nothing. The text now takes the style's fixed height
(when it sets one), width factor and oblique angle, and an MTEXT the
fixed height.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Both commands gain a mOde option [Quick/Standard]. Quick (the default)
starts ready to pick, every object a cutting or boundary edge; Standard
starts by selecting those edges, Enter with none taking every object.
The choice is TRIMEXTENDMODE (1 Quick, 0 Standard), kept in the profile
and settable with SETVAR.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
The resident wire sets were capped at 16 and cleared once more were
held. A layout with more content viewports than that (24 in the report)
cleared them all on each redraw and re-tessellated the model for every
viewport, so the layout stayed sluggish even when nothing changed. The
cap now covers the shown layout's viewports: idle redraws build no
wires, and a frame of that layout draws in ~14 ms instead of ~30 ms
plus ~100 ms of rebuilds.
The automation bridge gains a `layout_switch` action, as clicking a
layout tab does, which is how this was measured.
Co-Authored-By: Claude Opus 5.5 <[email protected]>