Imagine there is a wall IfcWall
, called Foo
, which is outside of the spatial tree. This Foo
product has an IfcRepresentation
, which has an ObjectPlacement
location of 0, 0, 0
.
Then imagine another IfcWall
, called Bar
, which is inside the spatial tree, say perhaps it is on an IfcBuildingStorey
. This Bar
product does not have an IfcRepresentation
. However, this Bar
does have an IfcRelAggregates
, such that Bar
decomposes into Foo
. If Bar
has an ObjectPlacement
of 1, 0, 0
, then when I visualise the IFC file, shouldn’t I see the IfcRepresentation
of Foo
displaced along the x-axis to 1, 0, 0
?
Similarly, if I create another IfcWall
called Baz
in the spatial tree with an ObjectPlacement
location of 2, 0, 0
, then if I decompose it with IfcRelAggregates
to Foo
, I expect to see another “instance” of Foo
's representation displaced to 2, 0, 0
.
This is the behaviour I expect given the specification saying for aggregated parts, positioning is relative to the aggregation
.
However, initial tests with viewers like xBIM and BIMCollab shows that the aggregated parts are not offset with the RelatingObject
's ObjectPlacement
. Is this incorrect behaviour, or how am I misinterpreting the specification?
If it is correct behaviour, then it seems that you cannot place instances of identical groups (i.e. aggregations) of IFC products at different locations. Instead, you would have to define a new IfcProduct for each location, which seems quite inefficient.