How exactly is ifcopenshell.geom.create_shape parsing the geometry?

edited September 14 in General

Hello, I want to have the global coordinates of the verts of the IfcBeam object (simple rectangle). The first option was to use:
settings = ifcopenshell.geom.settings()
settings.set(settings.USE_WORLD_COORDS, True)
shape = ifcopenshell.geom.create_shape(settings, element). It works ok, but the geometry is triangulated and I want to have quads (like in my ifc file).

That's why I tried to read the geometry manually from the ifc file using IfcShapeRepresentation Tessellation. To transform the local coordinates to global I used shape.transformation.matrix.data. The thing is the coordinates are not the same and I do not really understand why . (Screenshot #3)

So my questions are: how exactly is ifcopenshell.geom.create_shape parsing the geometry and what am I doing wrong? Thank you very much for your help.

Here are some screenshots to make it clearer:
1). The geometry defined in the ifc file

2). The transformation matrix and the verts from ifcopenshell.geom.create_shape(settings, element)

3). Global coordinates from the ifc file (IfcShapeRepresentation Tessellation)

Comments

Sign In or Register to comment.