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>
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>
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>
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>
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>
- 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>
- 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>
- 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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
- 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>
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>
- 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>
- 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>
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>
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>
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>
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>
- 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>
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>
A Field dialog with the fields the application evaluates and the
reference format choices, FIELD placing a field as multi-line text, the
attribute definition dialogs' field buttons, field attachment on commit,
system variable / file size / regional date providers for field
evaluation, and the codec patch with the field authoring API.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Validation messages show in the dialogs, the Default value of a multi-line
definition can be edited in the multi-line text editor, "Specify on-screen"
is kept for the session, ATTDISP sets ATTMODE with the reference prompt
instead of changing the definitions, and Insert > Block gets the Edit
Attribute (Single / Multiple) and attribute display lists.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Align and Fit attributes run their text between the two baseline points,
an ATTDEF height becomes the next text height, and Multiple lines is not
carried to the next definition (measured).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Attribute Definition dialog and Edit Attribute Definition dialog, -ATTDEF
with the reference prompts and modes (AFLAGS), tag shown in the drawing,
justification-aware grips, reworked Properties with validation, Home Block
slide-out and Insert Block Definition panel, and the codec patch for
ATTDEF DXF output and the R2013+ solid wire cache.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Rebuild the Blocks palette with Current Drawing / Recent / Favorites /
Libraries tabs, wildcard filter, six views, insertion options, click and
drop insertion and a block context menu. INSERT opens the palette, the
new -INSERT runs on the command line, the ribbon Insert button becomes a
block gallery, and BLOCKMRULIST, BLOCKREDEFINEMODE, BLOCKNAVIGATE,
BLOCKSTATE, EXPLMODE and INSNAME are added.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Plane and cylinder picks ask again and section extraction gives nothing
on a scan without segments, as the reference does with unstructured
scans (scan segmentation is not decoded yet). The section dialog's time
estimate reads in minutes.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Lighting follows the view: the default source is a key light from the
upper left and a fill light from the lower right over an ambient term,
the other source one light from above; POINTCLOUDLIGHTING 1 lights the
front faces, 2 both.
- A selected or hovered point cloud shows its extents box.
- A move-gizmo arrow can be grabbed along its shaft; the grab offset is
taken on the press, so click-and-place and typed distances start from
the insertion point.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A lone unlocked point cloud selected in a 3D visual style shows a move
gizmo at its insertion point: X/Y/Z arrows and XY/YZ/ZX squares. Dragging
an arrow moves the cloud along that axis, a square moves it in that
plane; the hovered part is highlighted and each drag is one undo step.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Picking the cloud opens the Extract Section Lines from Point Cloud
dialog with the reference's settings and defaults: entire cross section
or perimeter only, maximum points to process (slider and field, with
the estimated time), output layer (Use Current or a layer), colour,
lines or 2D polylines with their width, minimum line length and connect
lines tolerance (each measurable by two points on screen), collinear
angle tolerance (0-10) and Preview result. Create extracts; with the
preview it asks [Accept/Settings/Undo] and Settings reopens the dialog.
The settings are kept for the session. Automation action pc_section.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The manager's switches write the cloud's hidden scans (by the scan
identifier its project and scan file carry) and hidden regions (the
unassigned points are region 0), as the reference stores them, instead
of extended data. A parent switch shows mixed while some of its rows
are on. A cloud that shows none of its points draws its extents box.
The codec reads and writes both lists.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Points carry their world normal: POINTCLOUDLIGHTING lights them in the
shaded visual styles (1 lit from both sides, 2 with back faces dark),
from the view (POINTCLOUDLIGHTSOURCE 0) or the default lights (1).
The 2D wireframe style draws no cloud points: a found cloud shows its
extents and "Point clouds are not displayed in 2D visual style.",
or nothing with POINTCLOUD2DVSDISPLAY 1. While the view moves only
POINTCLOUDRTDENSITY per cent of the points are drawn; the points are
stored in an order where every leading part samples the whole cloud.
The colour map dialog lists its schemes by name.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A dockable Point Cloud Manager lists each point cloud of the drawing (only
the selected ones while any is selected) with Regions (disabled, region
data is not read), Unassigned Points and Scans, the scans named by their
file stems. Each switch shows or hides points: the cloud, its unassigned
points, all scans or one scan. The hidden set is the cloud's
OCS_POINTCLOUD_VISIBILITY extended data (scan names plus *CLOUD_OFF /
*UNASSIGNED_OFF markers, app id registered), written as one undo step and
kept on save. The drawn points skip hidden scans by their index ranges,
and the hidden set is part of the placed-cloud key. Collapse all / expand
all, row highlight and a search box that filters rows (keeping parents of
matches). POINTCLOUDMANAGERCLOSE closes it; the pc_manager_toggle
automation action flips a switch.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
POINTCLOUDCOLORMAP asks for a cloud (or None for the drawing's default
schemes) and opens the Point Cloud Color Map dialog: intensity and
elevation tabs with the scheme list, New / Delete / Rename, number of
colours (2-25, resampled along the scheme), blend between the ends,
reverse, gradient or bands, the colorized range, the out-of-range
choice and, for elevation, the cloud's extents or a fixed range with its
band height. OK / Apply write the drawing's colour map (created under
ACAD_POINTCLOUD_COLORMAP_DICT when missing) and the cloud's colouring in
one undo step; Make stylization current sets the tab's stylization.
Values outside a scheme's range take the end colours, the scan colours
or are hidden. Automation action pc_colormap edits the dialog.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Planes are found from the cloud points under the pick and grown over
the connected points on them: two planes give a line along their
intersection over the points' extent, three a point at their corner.
A cylindrical segment gives a line along its axis. A live section
object traces the points on its kept side as polylines or lines in the
section plane, with a preview and Accept/Settings/Undo;
-PCEXTRACTSECTION creates them directly.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A crop is drawn on the view plane: it keeps the view's right and up
directions in the cloud's coordinates and its points in 3D, and cuts
along the view. POINTCLOUDUNCROP removes a picked cloud's crops.
POINTCLOUDLOD scales the points shown in tenths.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Scan normals are decoded from their cube-map codes and drawn as world
normal colours under the Normals stylization; project and scan rotation
angles are read as degrees.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A scheme lists its colours from the highest value down (Spectrum:
magenta at the highest intensity, red at the lowest), as the reference
colours an intensity- or elevation-stylized cloud.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>