Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Computational Design Day 2024

Thomas Krijnen
January 26, 2024

Computational Design Day 2024

Thomas Krijnen

January 26, 2024


  1. Speaker • Thomas Krijnen • past: Post-doctoral researcher @ TU

    Delft, NL • past: PhD @ TU Eindhoven, NL • Founder AECgeeks • Maintainer IfcOpenShell.org • [email protected] • @aothms
  2. 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
  3. 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
  4. 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, …)
  5. Aims Automate to solve everyday challenges Automate to create a

    better built environment Infer a higher level understanding from BIM
  6. 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