Open Cymap-NZ opened 3 years ago
XbimGeometry contains the code to create a scene which is a tree of transformations. That is what we use to transform shapes into their real world placement.
The documentation states that:
Space boundaries are always defined as seen from the space. In general two basic types of space boundaries are distinguished
So, I'd say that you need to apply the transformation of the space to the ConnectionGeometry
to place it in the real world.
Thanks @martin1cerny . The issue though is although I can access say the real world insert point of the space, each face (aka space boundary) as far as I can see is its own closed 2D IfcPolyline boundary . I can tell which plane the 2d space boundary is in by the IfcAxis2Placement3D of its related building element. But there seems to be no direct relation between the 2D polygon loops and the insertion point of the space. There is a relationship to the associated building element which is the only way to determine which plane the 2d closed poly loops are in. And typically a ground floor slab of a building (which is a single element) will provide boundaries to every space on the ground floor. So there will be multiple closed loop boundaries for an individual element like an IFCSlab
So I'm still missing a key relationship and a means of transforming the 2d polyloops into realworld 3D x,y,z co-ords.
Looking to be able to read from the native IFC and pass specifically the Space Boundary geometry to an external calc tool, like E+ to calculate losses.
Using Xbim and a C# . I can parse the file beautifully, and drill down to the various elements that bound space, and more importantly the Curve Surface Geometry to access the co-ordinates of each plane of an IFCRELSPACEBOUNDARY .
My workflow is to identify external portions of walls/floors/roofs ( shell of the building) that bound spaces as these are the most significant.
I can drill down to the boundaries in the file by filtering elements that bound IFC spaces then drill into IfcConnectionSurfaceGeometry/IfcCurveBoundedPlane, and the inner/outer boundaries.
So typically for a say a flat roof I'll get an outer loop (of 2D co-ordinates) as well as number inner loops ( openings in the element). However to pass this data to an external calc tool, I need these references in real-world 3D WCS co-ordinates. And I'm wondering what transformation tools in XBIM are available to do this. As a set of 2d plane co-ords is fine for evaluating the areas etc, but not of any use in passing just the plane geometry to other tools.
There will be for example a relating object like IFCSLAB, and this will have its own local placement, which is relative to the storey/building/site etc. However a single IFC slab will have numerous space boundaries ( one for each room boundary underneath it). And whilst I can locate the IfcAxis2Placement3D of the Slab this isn't of any direct use, as the various 2d flat closed polygons do not reference this directly. This is more likely an IFC question, but wonder what tools in Xbim geometry would help me easily transform those co-ordinates?