Navigation

IfcPlacementNotShared

Checks that no instance of IfcObjectPlacement is shared by more then one instance of IfcProduct. Each IfcProduct requires a separate occurrence of IfcObjectPlacement.

EXPRESS specification:

RULE IfcPlacementNotShared FOR
( IfcObjectPlacement);
  LOCAL
    IsPlacementShared : LOGICAL := FALSE;
  END_LOCAL;
  IF (SIZEOF(IfcObjectPlacement) > 0) THEN
    REPEAT i := LOINDEX(IfcObjectPlacement)   TO HIINDEX(IfcObjectPlacement);
      IF (SIZEOF(USEDIN(IfcObjectPlacement[i],   'IFCKERNEL.IFCPRODUCT.OBJECTPLACEMENT')) > 1) THEN
        IsPlacementShared := TRUE;
      END_IF;
    END_REPEAT;
  END_IF;
WHERE
WR1  :  IsPlacementShared = FALSE;
END_RULE;