#1776 left its dialog in English outside tr-TR and added the
image_adjust automation action without re-pinning the MCP tool schema
digest, which failed tool_schema_digest_is_pinned.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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>
Translate the 159 Sheet Set Manager strings still in English, using the
terms already in the file: Conjunto de planos, plano, Presentación,
espacio modelo / papel. Variables, NEWSHEETSET and file masks are untouched.
Synchronize the native parametric graph only when replay changes constraints or named parameters. Geometry and visibility history preserve existing imported network identities and ownership. Add a regression for a rejected block copy followed by local undo and redo.
Create a new named definition from current session edits, restore the source checkpoint, and continue editing the copy with fresh local history. Add the name dialog and Save dropdown, clone supported owned metadata onto independent handles, and refuse unsupported relationships atomically.
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>
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>
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>
In the Block Editor, BVSTATE makes a new visibility state, makes one
current, renames or deletes one; BVHIDE and BVSHOW hide or show the
picked objects in the current state (BVSHOW shows every object of the
block while they are picked). The first use makes the block dynamic.
The states are stored as the format keeps them: a
BLOCKVISIBILITYPARAMETER in the block's ACAD_ENHANCEDBLOCK evaluation
graph with its visibility grip and the grip's two location expressions,
the round-trip purge preventer, AcDbDynamicBlockTrueName /
AcDbDynamicBlockGUID / AcDbBlockRepETag on the definition and element
tags on each of its objects. The definition shows its first state; a
reference given another state gets its own evaluated *U copy, tagged
AcDbBlockRepBTag and linked back through AcDbBlockRepresentation /
AcDbRepData, so it shows that state and the other references do not
change. Saving the block drops erased objects from the states.
Checked: a block authored this way reads back with its states and
reference link from DWG and DXF, and the ODA converter accepts the DWG.
Closes#1566
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Keep the product name Open CAD Studio, restore the accents of Colinéaire
and Égal, and use the established French terms for the array commands
(Réseau rectangulaire / polaire / trajectoire) and Lissage for loft.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
add_layout took the sheet viewport out, so the first viewport added to
the layout afterwards (by automation, or a plugin) was read as the sheet
and the scale pill and paper camera followed it. The sheet now stays and
is fitted to the page when the layout first opens; a layout saved before
that is still written without viewports.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Opening a layout whose page setup was never filled in took every viewport
out of it, including viewports onto the model a file carries (plenty of
DXF writers leave the paper fields empty). With only the sheet taken out
instead, the next viewport would have been read as the sheet. The sheet
is now fitted to the new page and every other viewport stays.
A layout saved as never opened keeps its state when it already holds a
viewport onto the model (one added by automation), and only its sheet is
taken out otherwise.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
REFCLOSE Save on an xref replaced the referenced file's model space with
the working set alone. With the Nested selection method the objects that
were not checked out stay in the definition, but they were deleted from
the file on disk. Write back every object of the saved definition, and
copy the file to .bak first when ISAVEBAK is on, as a drawing save does.
Also translate the new REFEDIT prompts into the other 20 locales; the
catalog test requires every locale.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The brightness/contrast cache keyed entries by the source buffer's
address without holding it, so a reloaded image whose new buffer landed
at the freed address could be shown with the old file's pixels. Each
entry now holds its source. The new functions had also been inserted
between resolve_image's doc comment and the function, merging that text
into the lookup table's documentation; it is back where it belongs.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Brings in the merged codec PRs (XCLIP transforms in the reference order,
table entries added after load get handles in DXF, default APPID handle
collision, viewport ShadePlot and grid flags) and the kernel's sweep and
off-plane revolve work.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
MATCHPROP transfers properties from a source object onto others, so the CAD
crosshair gives way to a monochrome paintbrush whose tip sits on the pick
point - the AutoCAD feel for the same command.
The glyph borrows the crosshair's own colour (including a user-customised
one) and uses a single stroke weight plus one filled wedge, so it reads as
part of the CAD cursor family rather than clip-art. It is drawn instead of
the crosshair, never on top of it, and only while the command is armed.
The web build has no font folder, so a text style whose TrueType file is
not a bundled Noto subset falls back to it. font_register takes the file
from the host page:
{"op":"font_register","file_name":"Brand-Regular.ttf","data_base64":"…"}
The faces join the font database, file_name resolves to the family of
the first face (case-insensitive, without directory, like installed
fonts), and open drawings lay their text out again (fallback glyph
cache cleared, text geometry invalidated per tab). The reply names the
family and the number of faces. Bytes without a face fail with
font_invalid. SysFonts::by_file becomes updatable for this.
Proposed in #1771.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A copied entity used to keep its source's extension-dictionary
handle, so the copy and source shared one tree and edits crossed
between them. In-drawing copy now clones the whole tree onto fresh
handles: dictionary entries, owners, reactors, nested xdictionary
links, and XRecord handle references that land inside the tree are
remapped; references leaving it stay pointed at the originals. A
dangling or missing root leaves the copy without an extension
dictionary rather than sharing. Annotative context trees and the
paste/export clone path are unchanged. Undo stays on the full
snapshot path when a tree is cloned.
ARRAYEDIT picks an associative array (or takes the preselected one) and
its Source option opens the objects every item repeats in the Block
Editor; saving there updates all items at once. Counts and spacings stay
in Properties.
Refs #1109
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
One finger already worked as the mouse. Two or more fingers now make a
gesture instead of fighting over the cursor: two drag to pan and pinch to
zoom about the fingers, three drag to orbit; a quick two-finger tap opens
the context menu, a three-finger tap zooms to the extents and a quick
three-finger swipe up shows the isometric view. While a gesture runs the
drawing area's own pointer handling keeps out, and the press the first
finger started is dropped.
Refs #906
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Ctrl+click on a polyline selects the segment under the cursor (again to
drop it); several segments can be picked. Only the picked segments are
highlighted, and MOVE, ROTATE, SCALE and MIRROR then change just their
vertices, so the neighbouring segments stretch to follow. Any other
selected objects are transformed whole as before.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A paste that finds no text now reads an image off the system clipboard
on desktop as well as on the web. The pixels are written as a PNG beside
the drawing (or in the config folder for a drawing never saved) and
placed as a raster image at the cursor, the same way the web paste
attaches a screenshot. PASTESPEC falls back to the same image paste when
the clipboard holds neither objects nor text.
Refs #645
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
SECTIONCULL keeps only what the selected section object (or the live
section of the space) shows: solids, surfaces and closed meshes are cut
to it with the same planes the live section uses, open meshes are
clipped face by face, and every other object wholly outside it is
erased. Objects across the boundary that cannot be cut stay whole. One
undo step.
The section's bounding planes are gathered once (section_planes) and
shared by the live section and the cull.
Refs #1407
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Three toggles beside the Recent Documents title switch the panel between
the existing list, a grid of thumbnail tiles and one large preview per
file. The choice is kept in the recent section of the app config.
Refs #1494
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
COMPARE picks a drawing (or takes its path) and matches its objects with
this drawing's by what they draw: type, layer and tessellated geometry,
so an unchanged copy matches whatever its handle. Objects only here are
outlined in green, objects only in the other drawing in red, over the
current drawing, and Next / Previous zoom from one difference to the
next with a count in the prompt. A moved or edited object shows as one
of each. eXit (or Esc) clears the overlay.
Refs #970
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>