Anchor & Geometry Reference#
Code |
CG.002 |
|---|---|
Validator |
|
Applies to |
|
Requirement level |
MUST (N/A for |
Tags |
|
Summary#
The component asset root MUST sit at a declared anchor named by
pcba:component:anchor (body_centroid, pin1, footprint_origin, or
mesh_origin). pcba:component:bodyCentroidLocal and pcba:mesh:originOffset
together give deterministic placement when the mesh origin is off the body.
Description#
Placement values (CG.001)
are only meaningful relative to a known reference point on the component. The
pcba:component:anchor token declares which point the asset root — and therefore
nominalPosMm — refers to:
body_centroid— the centroid of the component body.pin1— the pin-1 contact.footprint_origin— the land-pattern origin from the source footprint.mesh_origin— the origin of the source mesh as authored.
Because a source mesh origin is frequently off the body (e.g. at a datum in
the STEP model), two additional attributes make placement deterministic:
pcba:component:bodyCentroidLocal gives the body centroid in the component’s
local frame, and pcba:mesh:originOffset gives the offset from the source mesh
origin to the anchor. With these, a consumer can compute the body position from
the anchored transform regardless of where the mesh origin happens to fall,
without inspecting geometry.
Fields#
Attribute |
Type |
Req |
Notes |
|---|---|---|---|
|
|
MUST |
|
|
|
MUST |
Body centroid in the component-local frame |
|
|
MUST |
On the component’s |
Why is it required?#
Placement (
nominalPosMm) is ambiguous without knowing which point on the component it addresses; the anchor token removes that ambiguity.When the mesh origin is off-body,
bodyCentroidLocal+originOffsetlet the pipeline seat the part deterministically without re-deriving geometry.A consistent anchor convention lets translate / rotate seat correctly across every component in the board.
Example#
def Xform "U7"
{
token pcba:component:anchor = "body_centroid"
point3f pcba:component:bodyCentroidLocal = (0, 0, 0.45)
def Mesh "Body"
{
token pcba:mesh:role = "pkg_body"
point3f pcba:mesh:originOffset = (-1.2, 0.6, 0) # on the body mesh: source mesh origin -> anchor
}
}
How to comply#
Declare
pcba:component:anchoron every placed component; make the asset root coincide with the named anchor point.Author
pcba:component:bodyCentroidLocalandpcba:mesh:originOffsetso the body position is computable even when the mesh origin is off-body.Keep the anchor convention consistent with the values in
nominalPosMm/nominalRotationDeg.
What the checker proves#
AnchorChecker runs on electrical components only. It fails an absent anchor or one outside
the vocabulary, an absent bodyCentroidLocal, and a pkg_body mesh with no
pcba:mesh:originOffset; a matching pcba:prov: marker downgrades each to a declared gap. It does
not verify that the prim transform actually places the named anchor at nominalPosMm.