Skip to content

Releases

DwgIO v0.4.0

Choose a tag to compare

@github-actions github-actions released this 11 Nov 10:29

Added

  • Entity decoding: common entity data (extended data chain, graphics preview, entity mode, reactors, colour,
    linetype scale, visual styles, invisibility, lineweight) and geometry bodies for LINE, CIRCLE, ARC and POINT.
  • DwgDocument.Entities: decoded entities with geometry; exposed in the JSON export
    and in dwgio inspect (entity-kind counts and sample coordinates).
  • Bit-packed primitives: packed 32- and 64-bit integers, packed doubles, doubles stored as a patch of a default
    value, unpacked doubles and single bits; corrected the 2-bit tags of packed shorts (tag 11 = 256) and packed
    integers (tag 00 = full 32-bit value).
  • Banner and logo redrawn.
  • Contributing guide, security policy, code of conduct, issue and pull request templates, Dependabot configuration
    and a description of the private test fixtures (docs/test-fixtures.md).
  • Documentation site built with docfx: getting started, public API and the generated API reference.

Changed (breaking)

  • Only the types listed in docs/public-api.md are public. The container reader, cipher, checksums, decompressor,
    bit reader and section parsers under DwgIO.Internal are now internal, and so are the Parse methods of the
    header and handle map types and DwgVersionInfo.FromMagic.
  • The file header, container header, handle map and object types moved to DwgIO.Model, and the JSON exporter and
    its options to DwgIO.Json. DwgDocument.CommonHeader is now FileHeader and DwgDocument.Header is now
    ContainerHeader.
  • Property names of the header, handle map and section types and the matching JSON export keys changed to clearer
    names; the current names are listed in docs/public-api.md and the generated API reference.
  • The JSON type value and DwgEntity.TypeName use AutoCAD entity names for 3D faces, 3D solids, 2D and 3D
    polylines and vertices, and table names for block records, layers, text styles and linetypes.

Changed

  • The NuGet package icon lives in each project folder (src/DwgIO/icon.png, src/DwgIO.Cli/icon.png).
  • Tests that need real drawings are reported as skipped, with a reason, when no drawing is available, instead of
    passing without running.
  • THIRD-PARTY-NOTICES.md carries the Autodesk trademark notice and is included in the NuGet packages.
  • README and changelog describe the file format in the project's own words.
  • CLI help lists the preview command; error messages no longer cite external documents.
  • Fixture tests look for drawings in DWGIO_TEST_FILES and in a test_files folder (each folder and one level of
    subfolders) and run on .NET 8 as well as .NET 10.
  • Packages include Source Link.

Fixed

  • Crafted files can no longer cause huge allocations, integer overflow in bounds checks or crashes with exceptions
    other than DwgException: declared section sizes are checked against their page count, page size and the largest
    array before allocation; each page is limited to the section's page size; section buffers and decompressed pages of
    one document together are limited to 8 GiB; section-map entry and page counts are checked against the map before lists are sized; preview
    image ranges, page payload sizes and SummaryInfo dates are range-checked; pages past the section end are no longer
    decompressed; page checksums are computed only when VerifyChecksums is set.
  • The decompressor no longer reads a stale buffer when the output grows during an overlapping back-reference, and it
    presizes its output only up to 1 MiB instead of trusting the size declared in the file.
  • DwgDocument.Open and ReadSection report malformed data as DwgException (with the original exception as
    InnerException), and the best-effort section readers record such failures in Diagnostics.

Known limitations

  • Some entity bodies are not decoded yet; they are recorded in DwgDocument.Diagnostics.