Placement & representation dimensionalities

I am struggling to understand what should be done in case of different dimensionalities of MappingOrigin & CartesianOperator. :thinking: Is there any formal rule or an agreement I am missing? Or, more broadly, how should one interpret 3D bodies in 2D geometry context?

Example:

/* Geometry context set using AxisPlacement2D? */
#13 = IFCGEOMETRICREPRESENTATIONCONTEXT('Body', 'Model', 3, $, #14, #17);
#14 = IFCAXIS2PLACEMENT2D(#15, #16);
#15 = IFCCARTESIANPOINT((0., 0.));
#16 = IFCDIRECTION((1., 0.));
/* ........ Closed shells, faceted breps and other 3D body geometry ..... */
#55 = IFCREPRESENTATIONMAP(#14, #48);
#56 = IFCCARTESIANTRANSFORMATIONOPERATOR3DNONUNIFORM(#58, #17, #57, 1., #59, 1., 1.);
#57 = IFCCARTESIANPOINT((0., 0., 0.));
#58 = IFCDIRECTION((1., 0., 0.));
#59 = IFCDIRECTION((0., 0., 1.));
#60 = IFCMAPPEDITEM(#55, #56);

I’ve seen IfcOpenShell solution here: IfcOpenShell/IfcMappedItem.cpp at v0.7.0 · IfcOpenShell/IfcOpenShell · GitHub

1 Like

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

1 Like

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?

@TLiebich may I ask you to chime in?

1 Like

@claimred probably a better place to elaborate on the proposal is here Issues · buildingSMART/IFC4.3.x-development · GitHub At least it’d better tracked. Can you mirror your proposal there?

1 Like

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.

Looks like it, yeah. Formal rule would be nice though.

What are you thoughts about IfcMappedItem.MappingTarget & RepresentationMap.MappingOrigin dimensions compatibility?

I would argue, that those should have the same dimensionality

1 Like