buildingSMART Forums

Should IfcRelAggregate parts be offset by the ObjectPlacement of its RelatedElement?

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.

After a chat with @jonm, it seems as though there is a fundamental problem with what I was trying to do: in IFC, a product can only be contained once in one of the following: IfcRelConstainedInStructure, an IfcRelAggregates or an IfcRelNests. In my example above, I was trying to use a product in multiple IfcRelAggregates.

Consider this solved.

The issue was raised whether or not IFC should support things like arrays.