I am struggling to understand what should be done in case of different dimensionalities of MappingOrigin & CartesianOperator. Is there any formal rule or an agreement I am missing? Or, more broadly, how should one interpret 3D bodies in 2D geometry context?
IfcOpenShell is a not an authoritative source here, because it never makes the distinction between 2d and 3d. E.g 2d points become just 3d points on the z=0 plane, similarly for 2d and 3d placements or transformations.
There are some constraints on mixing 2d and 3d relative placements 8.7.6.1 IfcCorrectLocalPlacement - IFC4.3.0.1 Documentation If I read it correctly, a 2d placement can refer to a 3d placement, but a 3d placement not to a 2d placement. Not sure if I understand the rationale.
What do you see as the most natural way forward? Are there reasons to allow mixing 2d and 3d items/transformations?
@aothms I think they mean IfcAxisToPlacement2D may be used to shift 3D model object on horizontal surfaces (like positioning of earth surface), i.e. it is equal to IfcAxisToPlacement3D with Axis (0,0,1).
Using 2D objects in 3D context may happen for example you extrude (composite) profile. 2D object is a surface and may be placed in 3D world.
Using 3D object in 2D surface is not clear, I think the snapshot of @claimred is invalid
I don’t see any to be honest, nothing but confusion.
Well, I think we could introduce a formal rule for IfcMappedItem.MappingTarget & RepresentationMap.MappingOrigin dimension compatibility for starters (and RepresentationType constraint perhaps?). It looks doable in EXPRESS, doesn’t it?
isn’t it just plain wrong? A 3D geometric representation context (as shown by type “Model” and dimensionality = 3) requires a 3D placement. We may consider ensuring it by an extra rule.