Part.material ​

Contract 2.0.0 · package sha256 a857eca95b35921109faf997094bb4192f12527d9d0fcd4be7e97f06425bad6e · generated from configurator-runtime.d.ts by services/onsite-scripter/scripts/build-contract-docs.mjs; edit the source, not this file.

Property of Part · inherited by Query · stable · since 2.0.0 · called as session.node(nodeId).material

ts
readonly material: Material<C> | null;

The material worn now (meshes). Parts that wear the same authored material, the same MaterialNode or the same Material share it: Frame.material on it changes all of them. To change one part only, write a rule on that part: a part under a material rule wears a Material shared only with that rule's other matches that wore the same material beneath it. A commit that changes what a part wears (a select(), an undo, a rule write) may give it a different Material: read material again before a Frame.material write. Writes never change the cached GLB: the runtime copies a material on its first write in the session.

Generic-API test (spec 3.1) ​

Rule Result
1. Neutral name pass: material names no product
2. A precedent pass (through its owner Part): DOM Document.getElementById (row G31)
3. Two apps, or labs pass: 28 apps (ledger: app-04c2774145, app-b362a81c85, app-c1384707fc, app-f9a32142f1, app-fc306ec3dc; fleet cross-check: app-04c2774145, app-0c773a4ee3, app-37356bf09f, app-378d190f1b, app-4762caacdc, app-4f16d2f6da, app-4fd23bc869, app-510d750508 and 20 more)
4. The cheaper fix first decided per need in Appendix B: rows G31 (through its owner Part) at tier stable (a member only where no rule, data, asset or app code serves the need)