← Commit history
README.md+1−1
@@ -133,7 +133,7 @@ Adom-authored files are licensed CC-BY-4.0; the manufacturer documents in `docs/ | `altium/Adom_tmc2262.SchLib`, `altium/Adom_tmc2262.PcbLib` | Native Altium Designer libraries with the 3D body embedded; `altium/TMC2262AFV-PLUS.adom-lbr.json` is the canonical adom-lbr hub record. | | `tmc2262-etched.step` / `.glb` | **Library model** (the one the footprint links): the datasheet-built body with a virtual laser-etched `TMC2262AFV+` on the top as the toggleable `Adom.LaserEtch` group. | | `tmc2262.step` / `.glb` | The same body, unmarked. |-| `tmc2262-hero.glb` | Page hero: the etched chip plus teal dashed copper-pad outlines (50 % opacity), silkscreen with pin 1 (30 %), pad signal labels (50 %) and the heatsink vias through a 1.6 mm board. Each is a layer in the viewer's Layers panel. Reference artwork only: never put it on a board. |+| `tmc2262-hero.glb` | Page hero: the etched chip plus teal dashed copper-pad outlines (50 % opacity), silkscreen with pin 1 (30 %), pad signal labels (50 %) and the heatsink vias through a 1.6 mm board. The chip, the laser etch and the vias switch on and off in the viewer's Layers panel. Reference artwork only: never put it on a board. | | `viewers/` | Self-contained interactive symbol and footprint viewers (adom-symbol embed, adom-footprint embed). | | `artwork/` | Chip-outline cache from adom-chip-thumbnailer (vector outlines with the part number, shaded iso, mark plan and legibility check); `TMC2262AFV-PLUS-thumbs.json` is the manifest. | | `provenance/` | How every file was made: model dimensions and source drawing, etch plan, hero build, the pad-by-pad footprint comparison, EDA-lane notes, file hashes and the build scripts. |
models.json+3−3
@@ -70,9 +70,9 @@     "surface": "top",     "colour": "light grey inlay"    },-   "sha256": "3ee7e84a01cd137fe11aa2f15f51e2b178fb21d6dcfa33d3fd61183333e3fb05",-   "git_blob": "98bc029c0e61908d1f4722d3f75a0796a3ab75a3",-   "bytes": 495552,+   "sha256": "7fc9bca42eee39d1eb75b6803601709265ba5d2dfb7f144a7843686ca1d61b40",+   "git_blob": "7dc7fa0f1f8925388f30dd7f7e64f007bf72364f",+   "bytes": 495444,    "role": "derived",    "colours": true,    "derived_from": "tmc2262-etched.glb",
provenance/file-hashes.json+6−6
@@ -3,7 +3,7 @@  "note": "sha256 of every file at publication",  "files": {   "LICENSE": "266935df734b3de7f783fed72cac0428e5eefb1df4957828668bcd0a6520317b",-  "README.md": "184edcfd600e59ae90dbb909efd5efa51adf1c9d89e0aa05c8d25052f9a833c2",+  "README.md": "cd4f15f49554cfec739a10376be3d7def321e6e2c130b1aa950db6fa4c84893a",   "altium/Adom_tmc2262.PcbLib": "548d3edbd02263c8a4f8e359b39815264ef2bba4209b8faa616db94b0bc3d23d",   "altium/Adom_tmc2262.SchLib": "d4e0179d75bca5f6de7c223555a8dd0df8cf3d756817ed4c4b45c542d00b2933",   "altium/TMC2262AFV-PLUS.adom-lbr.json": "b38e6ef40802405d734421517c22a880e93d264dff2defc35564f26d0be5af21",@@ -48,22 +48,22 @@   "docs/models/tmc2262.step.bottom.png": "f14adc53912f976391f640af76360c49b08b25307734233d5c936bfe498c637e",   "docs/models/tmc2262.step.top.png": "12c501bc820b997559e9131125369b4690e1daf27e59d19d8e368ce7ac247c8f",   "docs/tmc2262-datasheet.pdf": "b1a54923f542235e80baf4f65bc4f9682369af3107ac6f3a3b55785eaff6e292",-  "models.json": "e17f894792459f89f2585c0f18da338ddd0946ab4b815951aa585df4867f0a16",+  "models.json": "448870984491a68ff41420c457853910587e710520d44ae54813e4a09ccc741c",   "provenance/eda-lanes.json": "d282e9b756a1042b3d0323ae5f66ab7e9c457b9ba611c17baf938a3643e124f1",   "provenance/footprint-vs-datasheet.json": "ac0c97a3d923feae1556947b1cf516491f31fe8c5409b3445b9e3962d4c3faeb",   "provenance/tmc2262-etched.step.json": "03d6665b25c57e6501c0d98d963b16a3813789e88c71d4f9e599844cb7346465",-  "provenance/tmc2262-hero.json": "60af16d203017278284d79111fd1105ccdd053b67d2288f6d16d2a5045e397ef",+  "provenance/tmc2262-hero.json": "48f0b872d3c7d36033473665c6b18a2985607459ac9c51a4484e98ac54a3ca01",   "provenance/tmc2262.step.json": "b51f5425940bac6be241d4d09c2c68fe0a87bb4b7b67ea936e82c0e20b1a7a2b",-  "provenance/tools/build.py": "a5a7047d1e18c96a72eda5efb29e28b693ffe662e6bacb81eb178efc995a24d1",+  "provenance/tools/build.py": "8d32b58d611ad694305778270bfa892ae5a4b759ce99ee2ee6673692133b060a",   "provenance/tools/build_models.py": "4a90b8c04a3a448ea1efa1c7568ef656c30176b9f986e596ab16fbb146dc8d2a",   "provenance/tools/footprints.py": "05541e4d994e33a568ed343a9796f63b32a3f2fad2c8121f71ef6fa749163de8",   "provenance/tools/hero_card.py": "fc49eddf785e6df0356abfecdba4ccf654fb20cb6546e6bebd09ac9b2e58c466",-  "provenance/tools/hero_post_vias.py": "711e75c07ddd55279e4914a59cc80431346221d9d6ad5ae0cf6047eee955a452",+  "provenance/tools/hero_post_vias.py": "ecac406344b06a309ae43cbe4a029988d052938d50d3e0d4403711ceb11246a3",   "provenance/tools/pages_def.py": "f65b46d6b44bf58a7c59194e679ba671685ca5c4b49b34cc771dc87b11f3eae5",   "provenance/tools/proof.py": "f19a0c34cf390b9b1d191553196a15ff8b8fc1853b9a2260abbc24a242fb9e71",   "tmc2262-etched.glb": "bad0ebfbcd72a3aff9397c275b6581b1b0381806cf862c18045fb3a829b740ca",   "tmc2262-etched.step": "13f68ecc3060977c10f3deab78279d4a9136bdc7f43af2f79e1d9a58a54b12c1",-  "tmc2262-hero.glb": "3ee7e84a01cd137fe11aa2f15f51e2b178fb21d6dcfa33d3fd61183333e3fb05",+  "tmc2262-hero.glb": "7fc9bca42eee39d1eb75b6803601709265ba5d2dfb7f144a7843686ca1d61b40",   "tmc2262-hero.overlay.json": "ebbae31faa5233852e71c582d784d4f5ed35f2ac54578762e0e44a966df1d781",   "tmc2262.glb": "fbfcf8d0b483341e9025226febd8e72e7548cf8d57032a20ce6ede30c1754d4b",   "tmc2262.kicad_mod": "7f2092d2d255f4d44836f1aee103dcc3c374aee713d89120d939d9ce41613380",
provenance/tmc2262-hero.json+2−2
@@ -1,6 +1,6 @@ {  "file": "tmc2262-hero.glb",- "sha256": "3ee7e84a01cd137fe11aa2f15f51e2b178fb21d6dcfa33d3fd61183333e3fb05",+ "sha256": "7fc9bca42eee39d1eb75b6803601709265ba5d2dfb7f144a7843686ca1d61b40",  "derived_from": "tmc2262-etched.glb",  "tool": "component-hero scripts/hero_glb.py (adom-hero standard) + tools/hero_post_vias.py",  "align": {@@ -67,5 +67,5 @@    "fallback_to_pad_number": 0   }  },- "heatsink_vias": "Adom.HeatsinkVias, layer \"vias\", 65 % transparent copper through a 1.6 mm board"+ "heatsink_vias": "Adom.HeatsinkVias (a switchable group in the viewer), 65 % transparent copper through a 1.6 mm board" }\ No newline at end of file
provenance/tools/build.py+2−2
@@ -356,7 +356,7 @@ def stage_prov(d):     json.dump(dict(file=s + '-hero.glb', sha256=sha(pdir(d, s + '-hero.glb')), derived_from=s + '-etched.glb',                    tool='component-hero scripts/hero_glb.py (adom-hero standard) + tools/hero_post_vias.py', align=ov.get('align'),                    labels=len(ov.get('labels', [])), layers=ov.get('layers'),-                   heatsink_vias='Adom.HeatsinkVias, layer "vias", 65 % transparent copper through a 1.6 mm board'),+                   heatsink_vias='Adom.HeatsinkVias (a switchable group in the viewer), 65 % transparent copper through a 1.6 mm board'),               open(pdir(d, 'provenance', s + '-hero.json'), 'w'), indent=1)     json.dump(dict(part=d['mpn'], tool='adom-lbr 2.47.5',                    kicad=s + '.kicad_mod: the exact manufacturer land pattern (custom L pads with the R0.150 corner, split paste windows)',@@ -480,7 +480,7 @@ def readme(d):           '| `altium/Adom_%s.SchLib`, `altium/Adom_%s.PcbLib` | Native Altium Designer libraries with the 3D body embedded; `altium/%s.adom-lbr.json` is the canonical adom-lbr hub record. |' % (s, s, A),           '| `%s-etched.step` / `.glb` | **Library model** (the one the footprint links): the datasheet-built body with a virtual laser-etched `%s` on the top as the toggleable `Adom.LaserEtch` group. |' % (s, d['mark']),           '| `%s.step` / `.glb` | The same body, unmarked. |' % s,-          '| `%s-hero.glb` | Page hero: the etched chip plus teal dashed copper-pad outlines (50 %% opacity), silkscreen with pin 1 (30 %%), pad signal labels (50 %%) and the heatsink vias through a 1.6 mm board. Each is a layer in the viewer\'s Layers panel. Reference artwork only: never put it on a board. |' % s,+          '| `%s-hero.glb` | Page hero: the etched chip plus teal dashed copper-pad outlines (50 %% opacity), silkscreen with pin 1 (30 %%), pad signal labels (50 %%) and the heatsink vias through a 1.6 mm board. The chip, the laser etch and the vias switch on and off in the viewer\'s Layers panel. Reference artwork only: never put it on a board. |' % s,           '| `viewers/` | Self-contained interactive symbol and footprint viewers (adom-symbol embed, adom-footprint embed). |',           '| `artwork/` | Chip-outline cache from adom-chip-thumbnailer (vector outlines with the part number, shaded iso, mark plan and legibility check); `%s-thumbs.json` is the manifest. |' % A,           '| `provenance/` | How every file was made: model dimensions and source drawing, etch plan, hero build, the pad-by-pad footprint comparison, EDA-lane notes, file hashes and the build scripts. |', '']
provenance/tools/hero_post_vias.py+3−4
@@ -1,6 +1,6 @@ """Add the footprint's heatsink vias to a component hero GLB as the Adom.HeatsinkVias layer (wiki-component standard): copper barrels, 65 % transparent, through a pretend 1.6 mm board below the seating plane, declared as the-toggleable layer "vias" ("Heatsink vias (1.6 mm board)").+switchable "Heatsink Vias" group (the viewer makes every Adom.* node one; a declared adomLayer as well would list it twice).      python3 hero_post_vias.py <slug>-hero.glb <footprint.kicad_mod> @@ -71,14 +71,13 @@ def main(glb, mod):     mat = len(g.materials) - 1     g.meshes.append(Mesh(name='Adom.HeatsinkVias', primitives=[Primitive(attributes=Attributes(POSITION=ap, NORMAL=an), indices=ai, material=mat)]))     node = Node(name='Adom.HeatsinkVias', mesh=len(g.meshes) - 1,-                extras={'adomLayer': {'key': 'vias', 'label': 'Heatsink vias (1.6 mm board)', 'group': 'Reference artwork', 'hidden': False},-                        'tooltip': 'Heatsink vias from the footprint: %d plated holes, %.2f mm drill, through a 1.6 mm board (reference artwork, not part of the chip)' % (len(vs), vs[0][4])})+                extras={'tooltip': 'Heatsink vias from the footprint: %d plated holes, %.2f mm drill, through a 1.6 mm board (reference artwork, not part of the chip)' % (len(vs), vs[0][4])})     g.nodes.append(node)     g.scenes[g.scene or 0].nodes.append(len(g.nodes) - 1)     g.buffers[0].byteLength = len(blob)     g.set_binary_blob(bytes(blob))     g.save(glb)-    print('OK %s: %d heatsink vias added as Adom.HeatsinkVias (layer "vias")' % (glb, len(vs)))+    print('OK %s: %d heatsink vias added as Adom.HeatsinkVias' % (glb, len(vs)))   if __name__ == '__main__':