Check whether a type is a real IFC entity class that can actually be
instantiated — known && !abstract.
isKnownType answers a different question ("is this a real EXPRESS
class name") and always has: IfcProduct, IfcRoot and IfcRelationship
are real classes and abstract EXPRESS supertypes, so isKnownType answers
true for them, and authoring code that only checked known-ness could
write #N=IFCPRODUCT(...) into an exported file, which is not valid IFC
(#2035).
Same union-first, pin-second resolution order as isKnownType: the
bundled schema union's abstract flag and the codegen pin's isAbstract
flag agree on every class both know, so there is no reconciliation
question, only which table happens to carry the name.
Check whether a type is a real IFC entity class that can actually be instantiated —
known && !abstract.isKnownType answers a different question ("is this a real EXPRESS class name") and always has:
IfcProduct,IfcRootandIfcRelationshipare real classes and abstract EXPRESS supertypes, soisKnownTypeanswerstruefor them, and authoring code that only checked known-ness could write#N=IFCPRODUCT(...)into an exported file, which is not valid IFC (#2035).Same union-first, pin-second resolution order as isKnownType: the bundled schema union's
abstractflag and the codegen pin'sisAbstractflag agree on every class both know, so there is no reconciliation question, only which table happens to carry the name.