Skip to content

Coverage ​

What the IFC stack measurably covers. Capabilities says what each crate does; this page counts it. Every table below is generated from a machine-checked source in the repository and regenerated on every change, so a number here is a measurement, not a claim.

Authoring: every entity a writer can produce ​

The workspace test suite runs with an ifc-model hook that records every entity type created through the authoring path (Transaction::create). Entities that only arrive by parsing a file or loading a fixture do not count. scripts/gate.sh measures this on every run and fails when the result differs from the committed report.

MeasureEntities
Concrete entities in IFC4X3 ADD2743
Created by a writer in the test suite743 (100.0%)
Landed in a model by any path738
Seen only through a codec or fixture, never written0
Never produced at all0

Geometry ​

ifc-geometry keeps a manifest of every geometry declaration in IFC4 ADD2 TC1, and a test asserts it against the schema, so nothing can be silently missing. implemented lowers into the neutral geometry model. The other statuses name where a declaration is handled instead: a typed view, a modelled type, a native primitive, the inventory, or not applicable. The per-family status is on the capabilities page.

Every geometry declaration of IFC4 ADD2 TC1, by how this repository handles it (crates/ifc-geometry/data/ifc4-add2-tc1-geometry-support.tsv):

StatusCount
implemented20
inventory23
modeled-type23
native-primitive6
not-applicable2
view-or-family89
Total163

Geometry WHERE rules (crates/ifc-geometry/data/ifc4-where-rules.tsv):

StateCount
implemented95
Total95

Representation items ​

Each concrete IfcRepresentationItem has one disposition:

  • lowered exactly when nested in its owner;
  • carrying no shape (presentation, owned by another crate);
  • refused with a typed error.
DispositionCount
nested-exact29
non-shape13
typed-refusal4
Total46
Every representation item (46)
EntityDispositionOwnerWhy
IFCANNOTATIONFILLAREAnon-shapeifc-stylepresentation fill whose boundary curves lower separately
IFCAXIS1PLACEMENTnested-exactresource::placementplacement input to exact geometry
IFCAXIS2PLACEMENT2Dnested-exactresource::placementplacement input to exact geometry
IFCAXIS2PLACEMENT3Dnested-exactresource::placementplacement input to exact geometry
IFCCARTESIANPOINTnested-exactresource::pointcoordinate input to exact geometry
IFCCARTESIANPOINTLIST2Dnested-exactresource::pointindexed coordinate input to curves and tessellation
IFCCARTESIANPOINTLIST3Dnested-exactresource::pointindexed coordinate input to curves and tessellation
IFCCARTESIANTRANSFORMATIONOPERATOR2Dnested-exactresource::operatormapped-item transform input
IFCCARTESIANTRANSFORMATIONOPERATOR2DNONUNIFORMnested-exactresource::operatormapped-item transform input
IFCCARTESIANTRANSFORMATIONOPERATOR3Dnested-exactresource::operatormapped-item transform input
IFCCARTESIANTRANSFORMATIONOPERATOR3DNONUNIFORMnested-exactresource::operatormapped-item transform input
IFCCLOSEDSHELLnested-exactlower::brepshell input to B-reps and surface models
IFCCOMPOSITECURVESEGMENTnested-exactlower::curveordered segment input to a composite curve
IFCCONNECTEDFACESETnested-exactlower::brepface-set input to surface models
IFCDIRECTIONnested-exactresource::directiondimensionless orientation input validated before use
IFCEDGEnested-exactlower::breptopological edge without carrier geometry
IFCEDGECURVEnested-exactlower::breptopological edge with curve or p-curve geometry
IFCEDGELOOPnested-exactlower::brepordered edge-use input to a face bound
IFCFACEnested-exactlower::brepface input to a connected face set
IFCFACEBOUNDnested-exactlower::breporiented loop input to a face
IFCFACEOUTERBOUNDnested-exactlower::brepexplicit outer-loop input to a face
IFCFILLAREASTYLEHATCHINGnon-shapeifc-stylepresentation hatching rather than shape geometry
IFCFILLAREASTYLETILESnon-shapeifc-stylepresentation tiling rather than shape geometry
IFCINDEXEDPOLYGONALFACEnested-exactlower::tessellatedface index input to a polygonal face set
IFCINDEXEDPOLYGONALFACEWITHVOIDSnested-exactlower::tessellatedface-with-holes input to a polygonal face set
IFCLIGHTSOURCEAMBIENTnon-shapeifc-stylelighting presentation state
IFCLIGHTSOURCEDIRECTIONALnon-shapeifc-stylelighting presentation state
IFCLIGHTSOURCEGONIOMETRICnon-shapeifc-stylelighting presentation state
IFCLIGHTSOURCEPOSITIONALnon-shapeifc-stylelighting presentation state
IFCLIGHTSOURCESPOTnon-shapeifc-stylelighting presentation state
IFCLOOPtyped-refusallower::brepgeneric loop has no concrete point or edge representation
IFCOPENSHELLnested-exactlower::brepshell input to surface models
IFCORIENTEDEDGEnested-exactlower::breporiented edge use inside an edge loop
IFCPATHtyped-refusallower::breppath topology is not a face-bound loop
IFCPLANARBOXnon-shapeifc-stylepresentation extent and placement
IFCPLANAREXTENTnon-shapeifc-stylepresentation extent rather than shape geometry
IFCPOLYLOOPnested-exactlower::brepordered point loop input to a face bound
IFCREPARAMETRISEDCOMPOSITECURVESEGMENTnested-exactlower::curvecomposite segment with authored parameter length
IFCSTYLEDITEMnon-shapeifc-stylestyle association without shape modification
IFCSUBEDGEnested-exactlower::brepan edge carved from a parent edge; the subedge's own vertices ride the parent's curve, reached by walking ParentEdge
IFCTEXTLITERALnon-shapeifc-styleannotation text rather than shape geometry
IFCTEXTLITERALWITHEXTENTnon-shapeifc-styleannotation text and extent rather than shape geometry
IFCVECTORnested-exactresource::directiondirection plus magnitude input to exact curves and sweeps
IFCVERTEXtyped-refusallower::brepgeneric vertex carries no point geometry
IFCVERTEXLOOPtyped-refusallower::brepa single-vertex loop bounds zero area, so it contributes no face bound
IFCVERTEXPOINTnested-exactlower::breppoint-backed topological vertex

Presentation ​

ifc-style classifies every appearance declaration of the schema it touches:

  • a strict borrowed view;
  • a schema-checked value;
  • a schema rule;
  • structural passthrough.
SupportCount
SchemaRule1
SchemaValue24
StrictView28
StructuralOnly17
Total70
Every appearance declaration (70)
DeclarationKindSupport
IfcBlobTextureEntityStrictView
IfcColourTypeSchemaValue
IfcColourOrFactorTypeStrictView
IfcColourRgbEntityStrictView
IfcColourRgbListEntityStructuralOnly
IfcColourSpecificationEntityStructuralOnly
IfcCorrectFillAreaStyleFunctionSchemaRule
IfcCurveFontOrScaledCurveFontSelectTypeSchemaValue
IfcCurveStyleEntityStrictView
IfcCurveStyleFontEntityStrictView
IfcCurveStyleFontAndScalingEntityStructuralOnly
IfcCurveStyleFontPatternEntityStrictView
IfcCurveStyleFontSelectTypeSchemaValue
IfcDraughtingPreDefinedColourEntityStructuralOnly
IfcDraughtingPreDefinedCurveFontEntityStructuralOnly
IfcExternallyDefinedHatchStyleEntityStructuralOnly
IfcExternallyDefinedSurfaceStyleEntityStructuralOnly
IfcExternallyDefinedTextFontEntityStructuralOnly
IfcFillAreaStyleEntityStrictView
IfcFillAreaStyleHatchingEntityStrictView
IfcFillAreaStyleTilesEntityStrictView
IfcFillStyleSelectTypeSchemaValue
IfcFontStyleTypeSchemaValue
IfcFontVariantTypeSchemaValue
IfcFontWeightTypeSchemaValue
IfcHatchLineDistanceSelectTypeSchemaValue
IfcImageTextureEntityStrictView
IfcIndexedColourMapEntityStructuralOnly
IfcIndexedTextureMapEntityStrictView
IfcIndexedTriangleTextureMapEntityStrictView
IfcNullStyleTypeSchemaValue
IfcPixelTextureEntityStrictView
IfcPreDefinedColourEntityStructuralOnly
IfcPreDefinedCurveFontEntityStructuralOnly
IfcPreDefinedItemEntityStructuralOnly
IfcPreDefinedTextFontEntityStructuralOnly
IfcPresentableTextTypeSchemaValue
IfcPresentationStyleEntityStructuralOnly
IfcPresentationStyleAssignmentEntityStrictView
IfcPresentationStyleSelectTypeSchemaValue
IfcReflectanceMethodEnumTypeSchemaValue
IfcSizeSelectTypeSchemaValue
IfcSpecularExponentTypeSchemaValue
IfcSpecularHighlightSelectTypeSchemaValue
IfcSpecularRoughnessTypeSchemaValue
IfcStyleAssignmentSelectTypeSchemaValue
IfcStyledItemEntityStrictView
IfcSurfaceSideTypeSchemaValue
IfcSurfaceStyleEntityStrictView
IfcSurfaceStyleElementSelectTypeSchemaValue
IfcSurfaceStyleLightingEntityStrictView
IfcSurfaceStyleRefractionEntityStrictView
IfcSurfaceStyleRenderingEntityStrictView
IfcSurfaceStyleShadingEntityStrictView
IfcSurfaceStyleWithTexturesEntityStrictView
IfcSurfaceTextureEntityStrictView
IfcTextAlignmentTypeSchemaValue
IfcTextDecorationTypeSchemaValue
IfcTextFontNameTypeSchemaValue
IfcTextFontSelectTypeSchemaValue
IfcTextStyleEntityStrictView
IfcTextStyleFontModelEntityStrictView
IfcTextStyleForDefinedFontEntityStructuralOnly
IfcTextStyleTextModelEntityStructuralOnly
IfcTextTransformationTypeSchemaValue
IfcTextureCoordinateEntityStrictView
IfcTextureCoordinateGeneratorEntityStrictView
IfcTextureMapEntityStructuralOnly
IfcTextureVertexEntityStrictView
IfcTextureVertexListEntityStrictView

Validation ​

ifc-validate registers every WHERE rule it knows about with an explicit state. An unsupported rule is reported as unsupported, so a clean report never means "the rules we did not implement passed".

16 of 22 registered rules are evaluated; the rest are reported as unsupported rather than silently passed (crates/ifc-validate/src/where_rule/registry.rs). A rule binds its declaring entity and every subtype, and runs only under the releases whose EXPRESS declares it under that id.

RuleConstrainsReleasesEvaluatedWhy not
global.IfcSingleProjectInstance(global)IFC2X3, IFC4, IFC4X3yes
global.UniqueGlobalId(global)IFC2X3, IFC4, IFC4X3yes
IfcRelDefinesByProperties.NoRelatedTypeObjectIfcRelDefinesByProperties and subtypesIFC4, IFC4X3yes
IfcExternalReference.WR1IfcExternalReference and subtypesIFC2X3, IFC4, IFC4X3yes
IfcRelSequence.WR1IfcRelSequence and subtypesIFC2X3yes
IfcRelSequence.AvoidInconsistentSequenceIfcRelSequence and subtypesIFC4, IFC4X3yes
IfcRelAggregates.NoSelfReferenceIfcRelAggregates and subtypesIFC4, IFC4X3yes
IfcRelNests.NoSelfReferenceIfcRelNests and subtypesIFC4, IFC4X3yes
IfcMaterialLayer.NormalizedPriorityIfcMaterialLayer and subtypesIFC4, IFC4X3yes
IfcRelAssignsToActor.NoSelfReferenceIfcRelAssignsToActor and subtypesIFC4, IFC4X3yes
IfcRelAssignsToProcess.NoSelfReferenceIfcRelAssignsToProcess and subtypesIFC4, IFC4X3yes
IfcRelAssignsToProduct.NoSelfReferenceIfcRelAssignsToProduct and subtypesIFC4, IFC4X3yes
IfcRelAssignsToGroup.NoSelfReferenceIfcRelAssignsToGroup and subtypesIFC4, IFC4X3yes
IfcRelConnectsPathElements.NormalizedRelatingPrioritiesIfcRelConnectsPathElements and subtypesIFC4, IFC4X3yes
IfcRelConnectsPathElements.NormalizedRelatedPrioritiesIfcRelConnectsPathElements and subtypesIFC4, IFC4X3yes
IfcRelSpaceBoundary.CorrectPhysOrVirtIfcRelSpaceBoundary and subtypesIFC4, IFC4X3yes
IfcDocumentReference.WR1IfcDocumentReference and subtypesIFC2X3, IFC4, IFC4X3nonot implemented uniformly: IFC2X3 requires INVERSE relationship semantics, which validation does not derive
IfcRepresentationContextSameWCS(global)IFC2X3, IFC4, IFC4X3norequires geometric evaluation, which validation does not perform
IfcPolyLoop.WR21IfcPolyLoop and subtypesIFC2X3norequires an EXPRESS expression evaluator
IfcPolyLoop.AllPointsSameDimIfcPolyLoop and subtypesIFC4, IFC4X3norequires an EXPRESS expression evaluator
IfcQuantityLength.WR21IfcQuantityLength and subtypesIFC2X3, IFC4, IFC4X3norequires an EXPRESS expression evaluator
IfcZone.WR1IfcZone and subtypesIFC2X3, IFC4, IFC4X3norequires an EXPRESS expression evaluator

Released under the AGPL-3.0-or-later licence. ISO and CEN standards material is not redistributed.