Skip to content

dgr-fixes: current upstream master + reviewed PR branches - #1

Merged
jarrett-meyer merged 111 commits into
dgr-fixesfrom
integrate/pr-branches-2026-10-16
Oct 16, 2026
Merged

jarrett-meyer merged 111 commits into
dgr-fixesfrom
integrate/pr-branches-2026-10-16

Conversation

@jarrett-meyer

Copy link
Copy Markdown

Brings dgr-fixes up to date and moves it onto the reviewed versions of our upstream PRs, so DGR builds from one place.

Tests

  • ACadSharp.Tests (net9.0): 2497 passed, 0 failed, 2 skipped
  • DGR-Tools dotnet build DGR-Tools.slnx against this branch: 0 errors
  • DGR Publish.exe --selftest: selftest ok (identity matches the LISP engine on 26 real jobs)

🤖 Generated with Claude Code

ilCosmico and others added 30 commits September 30, 2026 09:12
A column payload longer than one 310 line kept only the last chunk, so
ModelerGeometry.AcisData was truncated for real DXF 2013+ files.
Add `DwgPrototype1bReaderV2` and `FileSegmentHeader`, switch `DwgReader` to the new reader, expand `CadFileDataStorage` for file-segment storage, and refactor `DwgPrototype1bReader` to use specialized helpers, safer segment loading, and repeated-segment collections.
Parse and store the file segment index, add schema index parsing after it, and move file-header reading into a dedicated method. Add richer `ToString()` output and helpers for file segments, segment entries, and schema pointer metadata, including null-terminated schema names.
Split ACDS storage into dedicated classes and update DWG/DXF readers to parse schema records, pointers, flags, type metadata, and raw value blobs.
Add `DataIndexSegment` support in `CadFileDataStorage`, parse data index segments in `DwgPrototype1bReaderV2`, and remove the direct `DxfReader.Read(...)` call from `LocalSampleTests.ReadUserDxf`.
Wire Prototype 1b data index/entry parsing into `DwgReader`, populate `CadFileDataStorage.Records`, expand `ACadSharp.DataStorage` models and helpers, and clean up related tests/utilities.
Join every binary chunk of an ACDSDATA record column
Store ACDS handle/data separately, update DXF binary chunk handling, switch DWG reader to the new Prototype 1b model, add an obsolete compatibility reader, and mark DataStorage obsolete.
Replace SegmentPointers with Blob01 collection, read blob payloads directly in DwgPrototype1bReader, and combine blob-backed data in DataEntry.
The header flags store PSTYLEMODE in bit 0x2000, but the reader assigned
the masked value directly, so a color-dependent drawing reported
PlotStyleMode = 8192 instead of 1. Map the bit to 1/0 as the DXF reader
and the DWG writer do.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A spline boundary edge is one open piece of the loop, so the converted
Spline must not be flagged as closed. Non-rational edges may store 0 as
the weight of every control point; use 1 in that case so the resulting
Spline evaluates correctly.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The true color value is 0xmmRRGGBB stored little-endian, so the bytes
come in blue, green, red order; red and blue were swapped.

A truncated or unexpected record in the proxy graphics threw and lost
every geometry already read. Stop at the bad record and keep what was
read so far.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The MText background transparency (BL 441) is stored like an entity
transparency, with the type in the high byte and the alpha in the low
byte. AutoCAD can leave stale bits in it when the type is ByLayer, and
passing the raw value to the Transparency constructor threw, so the
whole MText was lost. Accept plain 0-90 values as before, decode values
with a type byte as an alpha value and fall back to ByLayer otherwise.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The insert data of a table (position, scale and the anonymous block with
its graphics) is read before the cell data. If parsing the cell data
fails, the whole entity was dropped. Read the cell data in a separate
method, report a warning on failure and keep the table with its
graphics. A partly read cell may have no cell style template, so guard
the build against it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
DomCR and others added 28 commits October 15, 2026 10:43
Push version changes to PR source repositories
Read every page of a multi-page blob in the Prototype1b section
fix: keep the length of the VPORT view direction
…rows

fix(dxf): read and write the flip arrow flags of a dimension
The fix itself came with DomCR#1298. This adds the DimensionStyleArrowBlock case to
WriterSingleObjectTests: a dimension style with a custom ArrowBlock is written
and read back (DWG and DXF, every version), and the arrow block must come back
by name while the leader arrow stays null. The case fails when ArrowBlock is
not resolved from DIMBLK.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Codes 63, 421, 45 and 441 are now written only when UseBackgroundFillColor
or TextFrame is set, as the DWG writer does. The DXF-only test cases are
replaced by a roundtrip case in WriterSingleObjectTests, with one MTEXT per
flag combination, checked for DXF and DWG.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Write MTEXT background fill and text frame codes to DXF
…w-block

DimensionStyle: round-trip check for the main arrow block (DIMBLK)
…es-only' into integrate/pr-branches-2026-10-16
…es' into integrate/pr-branches-2026-10-16

# Conflicts:
#	src/ACadSharp/IO/DWG/DwgStreamReaders/DwgObjectReader.cs
…/64)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The GetArbitraryAxis threshold fix lives on DGR-Engineering/CSUtilities dgr-fixes,
so a fresh clone with --recurse-submodules builds the same code DGR ships.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@jarrett-meyer
jarrett-meyer merged commit b217845 into dgr-fixes Oct 16, 2026
@jarrett-meyer
jarrett-meyer deleted the integrate/pr-branches-2026-10-16 branch October 16, 2026 13:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

9 participants