Slide 1

Slide 1 text

Computational Geometry Industry Foundation Classes IfcOpenShell https://speakerdeck.com/aothms https://github.com/AECgeeks/computational- design-day-2024

Slide 2

Slide 2 text

Speaker • Thomas Krijnen • past: Post-doctoral researcher @ TU Delft, NL • past: PhD @ TU Eindhoven, NL • Founder AECgeeks • Maintainer IfcOpenShell.org • [email protected] • @aothms

Slide 3

Slide 3 text

BIM as initially presented

Slide 4

Slide 4 text

IFC usage in reality

Slide 5

Slide 5 text

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 modelling preferences

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

Triangle mesh

Slide 8

Slide 8 text

Polyhedron https://doc.cgal.org/latest/HalfedgeDS/index.html

Slide 9

Slide 9 text

Boundary Representation (BRep) u (periodic) ⟶ v ⟶ 0 2π

Slide 10

Slide 10 text

Voxels 0 1 2 3 4

Slide 11

Slide 11 text

Computational Solid Geometry

Slide 12

Slide 12 text

Why python - Batteries included: - web: flask, django, e.g view.ifcopenshell.org - machine learning: pytorch, tensorflow, keras, scikit, … - geometry: pythonOCC, shapely, … - graphs: networkx, rdflib, … - Readable syntax, reasonable semantics wrt typing, expressive types (e.g sets, containment operators, …) - Interpreted (no lengthy compilation times) and high performance possible (e.g numpy, numba, pypy, …)

Slide 13

Slide 13 text

Aims Automate to solve everyday challenges Automate to create a better built environment Infer a higher level understanding from BIM

Slide 14

Slide 14 text

Voxels evacuation analysis https://github.com/opensourceBIM/voxelization_toolkit

Slide 15

Slide 15 text

Voxels headroom analysis https://github.com/opensourceBIM/voxelization_toolkit

Slide 16

Slide 16 text

ILS Space aggregation Individual spaces Aggregated interior spaces joined accross non-loadbearing partitions

Slide 17

Slide 17 text

Setup Install Miniconda (a Python distribution with optimized binary packages) https://docs.conda.io/projects/miniconda/en/latest/ Activate the "anaconda command prompt" and run conda create -n ifopsh07 conda-forge::pythonocc-core==7.5.1 python<3.11 numpy scipy matplotlib conda activate ifopsh07 python -m pip install networkx ifcopenshell jupyter lark pythreejs

Slide 18

Slide 18 text

Anatomy of a simple Python script

Slide 19

Slide 19 text

https://github.com/AECgeeks/computational-design-day- 2024/blob/main/01_visualize.ipynb

Slide 20

Slide 20 text

https://github.com/AECgeeks/computational-design-day- 2024/blob/main/02_analyze.ipynb

Slide 21

Slide 21 text

Validity

Slide 22

Slide 22 text

https://github.com/AECgeeks/computational-design-day- 2024/blob/main/04_machine_learning.ipynb

Slide 23

Slide 23 text

https://github.com/AECgeeks/computational-design-day- 2024/blob/main/03_graph.ipynb

Slide 24

Slide 24 text

https://github.com/AECgeeks/computational-design-day- 2024/blob/main/05_create_space.ipynb