You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
MATERIAL (30 records): per-map block layout needs a corpus file with a non-default material #49
#47 withdrew MATERIAL's wrong field list (it decoded ambient_color_method = 542113793 on the very first field) and kept only proven content: names/description from the string stream plus the measured data budget (1264 bits R2004, 1284 R2010/R2013, 516/516/1028 R2018). Twelve BD slots decode to exactly 1/48 at data bits 46, 120, 250, 324, 510, 584, 706, 780, 900, 974, 1096, 1170 - six pairs 74 bits apart, one per texture map - but inter-pair gaps (204/260/196/194/196) pin no repeating block. Every file has only ByLayer/ByBlock/Global, bit-identical apart from the name, so the joint-boundary search has nothing to bite on. Needs a redistributable DWG with a user-defined material (a synthetic one from examples/build_fixtures.rs once the writer can emit MATERIAL, or a permissively-licensed sample). Tracked as Unhandled until then.
A MATERIAL joint-boundary probe, examples/probe_material.rs, was written in a local worktree (feat/xrecord-material) but never committed. It is preserved at refs/archive/2026-10-21/xrecord-material-probes (commit d6ac794, based on 44cc130; fetch it with git fetch origin refs/archive/2026-10-21/xrecord-material-probes). It has not been rebuilt against current main. It runs a candidate field spec against every MATERIAL record and reports each record's delta to its boundary. A spec only counts when every record of every file lands at delta 0.
MATERIAL survey, 2026-10-26, examples/probe_material.rs (#222) on the 19-file corpus
The corpus holds 65 MATERIAL records, not 30, and eight of them are not defaults. All in sample_AC1032.dwg:
Handle
Name
Budget, bits
Strings
0x96 / 0x97 / 0x98
ByLayer / ByBlock / Global
516 / 516 / 1028
7 each
0xDAA
Beech
554
4
0xDB6
Bamboo
1066
4 (two texture-map paths)
0xDC0
Aluminum Cast
946
3 (one path)
0xDCA
Exposed Aggregate
1130
4 (two paths)
0xDD4
1.5in Square - Medium Blue
1130
4 (two paths)
0xDDE
Asphalt - Wet
1066
4 (two paths)
0xDE8
Ashlar - Patterned
874
4 (two paths)
0xDF2
Blue
738
2
The other 18 files carry only the three defaults, with the budgets the module documents, now measured on every band: R14, R2000 and R2004 all 1340 / 1340 / 1332 with the two TVs inline (1264 after TV,TV on all three), R2007, R2010 and R2013 all 1284.
So the joint-boundary search does have something to bite on, on R2018 only: eight records whose budgets differ by map count (the ones with texture paths are the long ones), which should separate a per-map block from the fixed fields. sample_AC1032.dwg has no known source (#96), so it serves as measurement evidence, not as a redistributable fixture; the request for a redistributable file with a user material still stands for CI.
Two corrections for whoever picks this up: the module table in src/objects/acad_material.rs lists 3 records for sample_AC1032.dwg (there are 11), and this issue's title count (30) is the R2004, R2010 and R2013 files plus the three R2018 defaults: the R14, R2000 and R2007 walks (#72) add 27, and the eight library materials the other 8.
Reproduce: cargo run --release --example probe_material -- ../../samples/*.dwg [spec]; MAT_BD=1 reproduces the twelve 1/48 slots at the offsets above on arc_2010.dwg.
Activity
DrunkOnJava commentedon Oct 21, 2026
A MATERIAL joint-boundary probe,
examples/probe_material.rs, was written in a local worktree (feat/xrecord-material) but never committed. It is preserved atrefs/archive/2026-10-21/xrecord-material-probes(commit d6ac794, based on 44cc130; fetch it withgit fetch origin refs/archive/2026-10-21/xrecord-material-probes). It has not been rebuilt against currentmain. It runs a candidate field spec against every MATERIAL record and reports each record's delta to its boundary. A spec only counts when every record of every file lands at delta 0.DrunkOnJava commentedon Oct 26, 2026
MATERIAL survey, 2026-10-26,
examples/probe_material.rs(#222) on the 19-file corpusThe corpus holds 65 MATERIAL records, not 30, and eight of them are not defaults. All in
sample_AC1032.dwg:0x96/0x97/0x980xDAA0xDB60xDC00xDCA0xDD40xDDE0xDE80xDF2The other 18 files carry only the three defaults, with the budgets the module documents, now measured on every band: R14, R2000 and R2004 all 1340 / 1340 / 1332 with the two
TVs inline (1264 afterTV,TVon all three), R2007, R2010 and R2013 all 1284.So the joint-boundary search does have something to bite on, on R2018 only: eight records whose budgets differ by map count (the ones with texture paths are the long ones), which should separate a per-map block from the fixed fields.
sample_AC1032.dwghas no known source (#96), so it serves as measurement evidence, not as a redistributable fixture; the request for a redistributable file with a user material still stands for CI.Two corrections for whoever picks this up: the module table in
src/objects/acad_material.rslists 3 records forsample_AC1032.dwg(there are 11), and this issue's title count (30) is the R2004, R2010 and R2013 files plus the three R2018 defaults: the R14, R2000 and R2007 walks (#72) add 27, and the eight library materials the other 8.Reproduce:
cargo run --release --example probe_material -- ../../samples/*.dwg [spec];MAT_BD=1reproduces the twelve1/48slots at the offsets above onarc_2010.dwg.feat(objects): probe XRECORD on every release band and MATERIAL's dat…
feat(objects): decode MATERIAL from AutoCAD's own DWG and DXF output (#…
feat(objects): decode five small classes from AutoCAD's own DWG and D…
feat(objects): decode the dynamic-block evaluation objects from AutoC…
feat(objects): decode DIMASSOC from AutoCAD's own DWG and DXF output (#…
feat(objects): decode ACSH_HISTORY_CLASS and ACSH_BOX_CLASS from Auto…
fix(entities): decode PDFUNDERLAY on every release and check it again…
feat(entities): decode SUN from AutoCAD's own DWG and DXF output (#152)…
feat(objects): decode DATATABLE from AutoCAD's own DWG and DXF output (…
feat(objects): decode ACDB_TEXTOBJECTCONTEXTDATA_CLASS from AutoCAD's…
feat(objects): decode ACAD_EVALUATION_GRAPH from AutoCAD's own DWG an…
feat(objects): decode ACSH_EXTRUSION_CLASS from AutoCAD's own DWG and…