Files
cadcraft/crates/engine
ffishmanandClaude Opus 5.5 bf137e2c44 fix(dwg): give proxies their own class in the DWG
A DXF proxy object or entity names its class by number: 500 plus the class's
place in the DXF's CLASSES (DXF Reference, ACAD_PROXY_OBJECT, group 91).
acadrust's DXF reader puts its default classes first and numbers the DXF's
after them, and its DWG writer keeps the proxy's DXF number, so in the DWG
the number named another class. A 2018 drawing with an MEP plugin's piping
proxies wrote them as LARGE_RADIAL_DIMENSION and SECTIONOBJECT, and the ODA
File Converter refused the whole file ("AcDbProxyObject can't be cast to
AcDbBlockTableRecord").

The DWG bridge now reads the DXF's class names in CLASSES order and gives
each proxy the number acadrust writes for its class. Before 2013 (AC1027)
acadrust writes only the classes it knows such a DWG needs, and a proxy's is
not one of them, so the proxy would name a missing class ("No ClassId") or,
by its old number, another one; such a DWG now leaves the proxies out, and
the save report lists the proxy entities as not kept only for those
versions (from 2013 the DWG keeps them).

Tests: #1812's proxy drawing saved as 2018, 2013, 2010 and 2004 DWG keeps
its proxies' classes from 2013 and leaves them out before (fails before
this change: the classes came out as MESH and SCALE); unit test for the
CLASSES order; the not-saved report counts proxy entities only before 2013.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-29 18:46:31 -03:00
..