Skip to content
Bernold Kraft edited this page Feb 24, 2023 · 4 revisions

TRex Xbim Wiki Pages

WORK IN PROGRESS

What is TRex?

While changing the manual delivery processes in AEC, you'll recognize that this won't work out as expected (and promised) by marketing of commercial software vendors. Mostly because they move digital frontiers inside there products (i.e. APIs) and let you play with the mess or because only subset of standards (i.e. IFC MVDs) are implemented. In both cases, you will need transformations of the provided/exported data to get conform to requirements like EIR (or in German: AIA).

So transforming data programatically or by other more declarative ways is a basic need, once you change from only using software to really living in data-centric universe. This need gets once more really intensive

  • (A) when short living revisions of models have to be aggregated frequently
  • (B) when multiple EIR/AIA requirements have to be fullfilled by the same software vendor application configuration (not every vendor has the same capability to switch seamlessly between different target export configurations)
  • (C) when multiple disciplines with different solutions of software vendors produce A's and B's

That's the current state of AEC data mess.

How does TRex attempt to solve it?

The inital idea of TRex is to programmatically perform those transformations based on the common standard IFC meta model. To perform a transformation, you need an IFC implementation and a geometry engine. There are a few well known implementations (i.e. OpenIFC Shell). Here we use Xbim since TRex is also written on basis of .Net-Framework / .Netcore.

Principle transformation sequence with TRex: (1) export the IFC models in your software solution to IFC2x3 or IFC4 or use the model builder pattern to build an IFC model from scratch (2) let TRex read / use the IFC model (3) programmatically apply different predefined transformation patterns in a sequence and save the output to a new IFC model (4) delivery the final processed IFC model to your client/employer (5) optionally export the model to another model format (currently under development)

Model builder pattern

Model transformation

Overview

Transformations are using an async task pattern as a job. Each job takes parameters. Since some jobs need access to the geometry and scene transformation (base on Xbim Geometry), they are bound to a Windows sub system layout (due to the CLR/CLI bindings to OpenCascade wrappers).

Class Description Win *nix state
PropertySetRemovalTransform Remove property sets by black/ or whitelisting yes yes stable
PropertyRemovalTransform Remove property by name or pattern yes yes dev
ModelPlacementTransform Relocate a model by a given transform (offset and/or rotation) yes no stable
ProductRepresentationRefactorTransform Refactor multi-body representations (n-to-one bodies per product) yes yes stable
ModelFilterTransform Filter model by relations, entities and instances yes yes dev
ModelMergeTransform Merge models by common instances and / or common transform specifications yes no dev

Example code fragments for typical transformations