Repository navigation
Open
Labels
area:objectsCommon object formats and non-graphical objects (§20.1 to §20.3, §20.4 objects, §28)Common object formats and non-graphical objects (§20.1 to §20.3, §20.4 objects, §28)priority:P2Quality and completenessQuality and completenesstype:specImplements or verifies a numbered section of ODA spec v5.4.1Implements or verifies a numbered section of ODA spec v5.4.1
Description
Spec: ODA Open Design Specification for .dwg files v5.4.1, §20.4.96, §20.4.97, §20.4.98, §20.4.99, §20.4.100, §20.4.101, §20.4.102, §20.4.103.
Sections and their state on main (2026-10-21)
| Section | State | Code | Note |
|---|---|---|---|
| §20.4.96 TABLE (p. 221) | missing |
- | §20.4.96.1 until R21, §20.4.96.2 R24 and later. |
| §20.4.97 TABLECONTENT (p. 229) | missing |
- | #82. |
| §20.4.98 Cell content geometry (p. 232) | missing |
- | |
| §20.4.99 Value (p. 232) | missing |
- | |
| §20.4.100 Custom data collection (p. 233) | missing |
- | |
| §20.4.101 TABLESTYLE (p. 233) | partial |
src/objects/ | #60: block structure measured, token sequence not pinned (10 records). |
| §20.4.102 CELLSTYLEMAP (p. 237) | missing |
- | |
| §20.4.103 TABLEGEOMETRY (p. 238) | missing |
- |
closes comes from the boundary checks on the local 19-file corpus (STATUS.md, 2026-08-30). It is re-measured on the public corpus in CI by the 0.2.0 measurement epic, and no section is complete until its values equal AutoCAD's own DXF export.
Acceptance, for every section above
- Every field of its prescription is read, with every version branch the section names
- Where the section prints an example, its bytes are a committed fixture and decode to the values printed
- The field list ends on the record's exact data-stream boundary (and string/handle-stream boundaries on R2007+) on every corpus record of the type, on every release band
- Every value equals AutoCAD's DXF export of the same drawing, matched by handle (DXF group 5), with the scorer from the oracle epic
- The corpus holds at least one record of the type on each release band, R13 to R2018; a band without one is recorded on the corpus epic, not assumed
- Its row in docs/spec-coverage.md moves to
complete, with the evidence linked
Subtasks
- §20.4.96 TABLE (no decoder yet)
- R13
- R14
- R2000
- R2004
- R2007
- R2010
- R2013
- R2018
- §20.4.97 TABLECONTENT (no decoder yet)
- R13
- R14
- R2000
- R2004
- R2007
- R2010
- R2013
- R2018
- §20.4.98 Cell content geometry (no decoder yet)
- R13
- R14
- R2000
- R2004
- R2007
- R2010
- R2013
- R2018
- §20.4.99 Value (no decoder yet)
- R13
- R14
- R2000
- R2004
- R2007
- R2010
- R2013
- R2018
- §20.4.100 Custom data collection (no decoder yet)
- R13
- R14
- R2000
- R2004
- R2007
- R2010
- R2013
- R2018
- §20.4.101 TABLESTYLE
- R13
- R14
- R2000
- R2004
- R2007
- R2010
- R2013
- R2018
- §20.4.102 CELLSTYLEMAP (no decoder yet)
- R13
- R14
- R2000
- R2004
- R2007
- R2010
- R2013
- R2018
- §20.4.103 TABLEGEOMETRY (no decoder yet)
- R13
- R14
- R2000
- R2004
- R2007
- R2010
- R2013
- R2018
A subtask becomes its own issue when someone picks it up; that issue quotes the section's field list and names the corpus records it is measured on.
Parent: #138
Metadata
Metadata
Assignees
Labels
area:objectsCommon object formats and non-graphical objects (§20.1 to §20.3, §20.4 objects, §28)Common object formats and non-graphical objects (§20.1 to §20.3, §20.4 objects, §28)priority:P2Quality and completenessQuality and completenesstype:specImplements or verifies a numbered section of ODA spec v5.4.1Implements or verifies a numbered section of ODA spec v5.4.1
Activity
feat(objects): decode TABLESTYLE from R2010 and CELLSTYLEMAP from §20…
feat(objects): decode TABLEGEOMETRY from §20.4.103 (#151)
fix(objects): do not link a private function from the TABLESTYLE modu…
docs(spec): §20.4.98 to §20.4.100 close with TABLECONTENT, which deco…
fix(objects): keep a long table value signed and walk a content's att…
feat(entities): decode ACAD_TABLE from §20.4.96 (#151)
fix(objects): skip the field reference handles after a TABLECONTENT's…
fix(entities): check a legacy ACAD_TABLE's cell count for overflow be…
feat(objects): decode TABLESTYLE on R14 to R2007 from §20.4.101.1 (#151…
feat(dxf): score TABLESTYLE in the value oracle (§20.4.101.1)
feat(dxf): score TABLESTYLE in the value oracle (§20.4.101.1) (#349)
DrunkOnJava commentedon Oct 27, 2026
Status (main 2bab7b2). One row of the 2026-10-21 table is stale: §20.4.101 TABLESTYLE is no longer "block structure measured, token sequence not pinned" (#60). §20.4.101.1 (until R21) decodes on R14 to R2007 (#303): all 32 records close and the 1,896 values of the 24 R2000 to R2007 records equal the export, 0 differ (the oracle scores it, #349). §20.4.101.2 (R2010 and later) is not decoded: 20 records are skipped in the corpus run (CI run 40503137263).
The other seven rows are unchanged on
mainand stillmissing. The queue: #313 (TABLESTYLE R2010+ and CELLSTYLEMAP §20.4.102), #316 (TABLEGEOMETRY §20.4.103), #317 (TABLECONTENT §20.4.97) and #319 (ACAD_TABLE §20.4.96). In the corpus run ACAD_TABLE, TABLECONTENT and TABLEGEOMETRY are skipped (14 records each), and CELLSTYLEMAP (32).chore(corpus): record the baseline the Corpus job measured for this s…
feat(objects): decode TABLESTYLE from R2010 and CELLSTYLEMAP (§20.4.1…
feat(objects): decode TABLEGEOMETRY from §20.4.103 (#151) (#316)
feat(objects): decode TABLECONTENT from §20.4.97 (#151) (#317)
fix(examples): compare an ACAD_TABLE's insertion rotation in degrees (#…
feat(entities): decode ACAD_TABLE from §20.4.96 (#151) (#319)