$30 off During Our Annual Pro Sale. View Details »

BIM, IFC & IfcOpenShell

BIM, IFC & IfcOpenShell

Industry Foundation Classes | The IfcOpenShell software library | Computational geometry

Thomas Krijnen

October 21, 2024
Tweet

More Decks by Thomas Krijnen

Other Decks in Education

Transcript

  1. Industry Foundation Classes | The IfcOpenShell software library | Computational

    geometry Thomas Krijnen AECgeeks.com https:/ /speakerdeck.com/aothms/ DTU – Oct 21, 2024 BIM, IFC & IfcOpenShell
  2. Lecturer • Thomas Krijnen • Ex-academic (TU Eindhoven & Delft,

    NL) • Founder AECgeeks • Maintainer IfcOpenShell.org • [email protected]
  3. Industry Foundation Classes Vendor neutral access to BIM data Interoperable

    collaboration and coordination (Design Transfer)
  4. IFC usage in reality • Exported for a specific purpose

    • Highlighting specific aspect of the building • At a specific time • Using a specific version of a tool • With individual specific modelling preferences
  5. IFC usage in reality Model View Definitions and Information Delivery

    Specification or, coming to a uniform structure for bespoke data https:/ /blog.buildingsmart.org/blog/the-curious-case-of-the-mvd https:/ /technical.buildingsmart.org/projects/information-delivery-specification-ids/
  6. Terminology. IFC, STEP and EXPRESS IFC is a data modelling

    standard (so, not a file format) defined in the EXPRESS modelling language (which is part 11 of the ISO 10303 standards family, informally called STEP). The typically IFC file are instances (a population file) according to this schema; typically in the IFC-SPF encoding (Step Physical File). This is part 21 of ISO 10303. But other encoding exist: such as XML (part 28) and RDF/OWL (not part of ISO 10303) using semantic web technologies.
  7. Or even simpeler >>> import ifcopenshell, ifcopenshell.util.element >>> f =

    ifcopenshell.open('Duplex_A_20110907.ifc’) >>> door = f.by_type('IfcDoor')[0] >>> ifcopenshell.util.element.get_psets(door) {'M_Single-Flush:1250mm x 2010mm:1250mm x 2010mm:146596': {'id': 6638}, 'PSet_Revit_Constraints': {'Level': 'Level 1', 'Sill Height': 0.0, 'id': 6716}, 'PSet_Revit_Identity Data': {'Mark': 'A101', 'id': 6720}, 'PSet_Revit_Other': {'AssetIdentifier': 'AssetIdentifier', 'BarCode': 'BarCode', 'Head Height': 2.01, 'InstallationDate': 'InstallationDate', 'SerialNumber': 'SerialNumber', 'TagNumber': 'TagNumber', 'WarrantyStartDate': 'WarrantyStartDate', 'id': 6718}, 'PSet_Revit_Phasing': {'Phase Created': 'New Construction', 'id': 6722},
  8. Comparison with a SPARQL query <http://standards.buildingsmart.org/IFC/DEV/IFC2x3/TC1/OWL#IfcWallStandardCase > basic graph pattern

    aggregate function / makes this a property path, a sequence of two predicates in this case used because in IfcOWL the specific type of the property nominal value is emitted. IfcAreaMeasure in this case.
  9. Computational geometry – why? • Building codes often entail geometric

    checks (length of exit routes, accessibility requirements on dimensions, …) • Many of IFC issues stem in interoperability stem from unsupported geometric constructs or differences in interpretation thereof • Many of the interoperability challenges with other standards/domains require complex geometric transformations (a topologically valid separation between exterior and interior for GIS, thermal interfaces for simulations, …) • Geometry is often the one single aspect that is uniformly described among different models
  10. Computational geometry Triangle mesh Well-understood, canonical visualization format, requires lots

    of data for curved surfaces. Convex and planar. Polyhedron Suitable for hard surface modelling, polygons convenient to manipulate (e.g. inset, extrude). Boundary Representation (BRep) Carries more semantics (e.g. cylinder radius), implementation a lot more complex Voxels Regularized grid, implementation trivial and robust. Slanted surfaces only approximated as “staircases”. Computational Solid Geometry Implicit format, when only using primitives, limited usability, typically combined with other representations as operands
  11. Material associations IfcWall ↑ | IfcRelAssociatesMaterial | ↓ IfcMaterialConstituentSet |

    * ↓ * IfcMaterialConstituent | ↓ IfcMaterial → Fraction, …
  12. Material associations IfcWall ↑ | IfcRelAssociatesMaterial | ↓ IfcMaterialLayerSet(Usage) |

    * ↓ * IfcMaterialLayer | ↓ IfcMaterial → LayerThickness, … ‘Body’ representation is typically an extrusion of a polygonal footprint In addition, an ‘Axis’ representation is present that informs on the longitudonal direction of these layers
  13. Material associations IfcWall ↑ | IfcRelAggregates | ↓ IfcBuildingElementPart ↑

    | IfcRelAssociatesMaterial | ↓ IfcMaterial Decomposing into multiple physical parts gives more freedom over exact geometric form
  14. Export idioms, ambiguity and automation I can export whatever I

    want I can look at the data I can ask whether ‘Fraction’ represents thickness/mass/volume ? vs
  15. Coming back to voxels as a generic representation of mass

    / space Calculate headroom height in the model taking all geometric elements into account
  16. Coming back to voxels as a generic representation of mass

    / space Calculate distance to the exterior for any point in the model taking into account obstacles
  17. Voxel processing language … ▪ surfaces_obstacle = sweep(surfaces_padded, dx=0, dy=0,

    dz=-0.5) □ walkable_region = subtract(surfaces_sweep, surfaces_obstacle) ▪ walkable_seed_real = subtract(walkable_seed, surfaces_padded) ▪ reachable = traverse(walkable_region, walkable_seed_real) ▪ reachable_shifted = shift(reachable, dx=0, dy=0, dz=1) ▪ reachable_bottom = subtract(reachable, reachable_shifted) ▪ reachable_padded = offset_xy(reachable_bottom, 0.2) ▪ full = constant_like(surface_voxels, 1) ▪ surfaces_sweep_1m = sweep(surface_voxels, dx=0, dy=0, dz=1.0) ▪ deadly = subtract(full, surfaces_sweep_1m) □ really_reachable = subtract(reachable_padded, surfaces_obstacle) ▪ result = intersect(really_reachable, deadly)
  18. 3D Conv. learning on voxelized BIM J Luttun, T Krijnen

    (2024). IfcVoxNet: 3D segmentation and classification of voxelized IFC building models with Deep Learning. Proceedings of the 41st International Conference of CIB W78, Marrakech, Morocco, 2-3 October, ISSN: 2706-6568. (ISSN: 2706-6568), http:/ /itc.scix.net/paper/w78-2024-68
  19. Analogy Semantic Web vs LLM IFC vs voxels Spent decades

    trying to label data vs implicitly inferring understanding Gary Larson – The Far Side
  20. Industry Foundation Classes | The IfcOpenShell software library | Computational

    geometry Thomas Krijnen AECgeeks.com https:/ /speakerdeck.com/aothms/ DTU – Oct 21, 2024 BIM, IFC & IfcOpenShell