Need help with a validation issue

I wrote a converter from a proprietary file format to IFC 2x3 and recently I’ve been using IfcCheckingTool to validate my output IFC files. I solved most validation errors but I can’t figure out what the last remaining one means. The attached IFC file 054600VB001.ifc (28.1 KB) is part of the affected ones, with the affected entities being #58 and #87; apparently there’s a constraint violation in inverse attribute PlacesObject in entity #58. I’ve noticed that the issue appears on parents of the IfcLocalPlacement of instances of IfcDistributionFlowElement (its subclasses actually). I’ve read the specification for IfcDistributionFlowElement and its subclasses but I still don’t understand what’s wrong. Could anybody help me? I attached the validation output too and changed its extension to .ifcxml since I’m not able to upload .xml files.
054600vb001.ifcxml (37.6 KB)

IfcOpenShell reports the same (python -m ifcopenshell.validate 054600VB001.ifc)

Validating 054600VB001.ifc
For instance:
    #58=IfcLocalPlacement(#19,#57)
With inverse:
    PlacesObject : SET [1:1] OF IfcProduct FOR ObjectPlacement
Value:
    ()
Not valid

The Inverse attribute PlacesObject has a cardinality constraint [1:1] so every placement must be references once and exactly once by an IfcProduct. In your case it’s being referenced by other placements, but not a product (Value: ()).

2 Likes