Per-Surface Material#
Code |
CG.012 |
|---|---|
Validator |
|
Applies to |
every role-bearing |
Requirement level |
MUST on |
Tags |
|
Summary#
pcba:mesh:matClass (plastic metal ceramic solder mask copper silkscreen other) names a
mesh’s material class alongside its bound material. It MUST be authored explicitly on pkg_*
and fixture_* meshes, whose material is genuinely ambiguous. On board_* meshes it derives
from the role and need not be authored; any authored value must match the derivation.
This page follows PCBA to USD Input Contract 1.0.2, section 9.
Description#
The pipeline needs the material class of each renderable surface without parsing shader networks. For board geometry the role already determines it:
Role |
Derived |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
none — ambiguous, MUST be authored |
|
none — MUST be authored |
|
none — no class derived or required |
pkg_lead is metal, not solder: matClass describes the lead’s own material as delivered,
and a solder finish is a plating on top of it — an as-delivered component carries no solder.
Where an exporter cannot substantiate a value (a fixture from a STEP file with no material
data), omit it and declare the gap with pcba:prov:matClass rather than authoring a rendering
default as though it were data. Role and bound material must agree by class
(UO.017).
Fields#
Attribute |
Type |
Req |
Notes |
|---|---|---|---|
|
|
MUST on |
|
Why is it required?#
A body may be plastic or ceramic and a carrier aluminium or composite; nothing but the exporter can say which.
Deriving the class for board roles removes redundant authoring while keeping the class available to every consumer.
Example#
def Mesh "Body"
{
token pcba:mesh:role = "pkg_body"
token pcba:mesh:matClass = "plastic"
}
def Mesh "pin_1"
{
token pcba:mesh:role = "pkg_lead"
token pcba:mesh:matClass = "metal"
}
def Mesh "TopCopper"
{
token pcba:mesh:role = "board_copper" # matClass derives to copper; authoring it is optional
}
How to comply#
Author
pcba:mesh:matClasson everypkg_*andfixture_*mesh from the vocabulary.Omit it on
board_*meshes, or author the derived value.Declare an unknown class with
pcba:prov:matClass; never invent one.
What the checker proves#
SurfaceMaterialChecker fails a pkg_* or fixture_* mesh with no matClass (a
pcba:prov:matClass marker downgrades this to a declared gap), and fails any authored value that
is empty or outside the vocabulary, on any role. It does not verify that an authored board-mesh
value matches the role derivation; agreement with the bound material is UO.017.