Rules

One rule per hardware type, applied to every head-side and tail-side part of every fastener. A fastener fails if any of its parts fails; it is could-not-check if any part is, and none fails.

TypeRule, as the checker states it
BLOCKBlock diameter must be greater than the fastener diameter (or no diameter listed)
NUTNut diameter must be equal to the fastener diameter
RINGRing diameter must be greater than the fastener diameter
SPACERSpacer diameter must be greater than the fastener diameter (or no diameter listed)
WASHERWasher diameter must be greater than the fastener diameter (or no diameter listed)

Outcomes

PassThe hardware meets its rule.
Pass · no diameterBLOCK, SPACER or WASHER with no diameter listed: not measured, passes per the acceptance criteria.
FailThe hardware breaks its rule. Logged against the FAS object at the Log Option level (error by default).
Could not checkA number the rule needs is missing: no diameter on a NUT or RING, an unknown fastener diameter, hardware in no library, a part that would not load. Logged as a warning.
Not applicableThe hardware type is not one of the five. Reported, not judged.

What the requirement leaves open, and what the checker does

Each is a default, stated here so it can be changed on purpose rather than discovered later.

A WASHER with no diameter

Passes. The acceptance criteria say “greater than the fastener or no diameter listed”; the description says only “must be greater”. The acceptance criteria are the testable contract, so they win by default.

Parameter: Washer Must Have a Diameter = true switches to the description reading: a diameterless washer then cannot pass.

A NUT or RING with no diameter

Could not check (a Check-Mate warning). The requirement gives no pass for these, and silently passing a nut nobody measured is the failure this check exists to prevent.

Where the hardware type comes from

The type NX Join stored on the hardware (PointJoinHardware.Type), which the Join dialog copies from the library’s Type / Hardware Type column. When the join has none, the library row is read. Matching is on the whole word, any case: Nutplate, Weld Nut and Rivet Nut are not NUT.

Parameter: Type Aliases maps other types onto the five, e.g. “Collar=NUT; Lock Washer=WASHER”. An alias to anything but the five is refused rather than ignored.

Where the fastener diameter comes from

The pin’s row in the hardware library. If the pin has no diameter there, the Diameter of its specification in the Join XML database. If neither has one, every part on that fastener is could not check.

Parameter: Hardware XML Databases lists the hardware.xml files to read; Extra Hardware Library Folders adds folders searched for Hardware.xlsx.

What “equal” means

Within 0.0001 in. Exact comparison fails a 6.35 mm nut on a 1/4 in fastener, because 6.35 / 25.4 is not exactly 0.25 in floating point; the verification proves it.

Parameter: Equality Tolerance (in).

Hardware the requirement does not cover

Not applicable, reported, never a pass and never a fail. A fastener with no covered hardware at all is not applicable as a whole.

Which joins are checked

Point joins of the Fastener subtype (Join ID prefix FAS): the “Fastener” option of the Join Fastener command. Rivets and other point-join subtypes are left alone.

Parameter: Join Subtypes to Check, e.g. “Fastener; Rivet”.