/Scan-to-BIM-Grasshopper

Scan-to-BIM toolbox for Grasshopper Rhino including mesh/pcd segmentation, classification and reconstruction

Primary LanguageJupyter NotebookGNU General Public License v3.0GPL-3.0

Scan-to-BIM Grasshopper toolbox

Overview

This toolbox includes functions for the reconstruction of BIM geometry from meshes. It features a general modular pipeline with the following steps

  1. Utility: Some utility functions for mesh and point cloud mutation.
  2. Segmentation: segments meshes and point clouds
  3. Classification: labels the segments into walls, ceilings, floors, etc.
  4. Clustering: groups labelled segments into groups of walls
  5. Reconstruction: extracts information from grouped segments to feed BIM geometry e.g. https://www.visualarq.com/ walls.
  6. Linked Building Data: Publish the intermediate results as .sjon/.rdf

The Example files contain example code for each step.
The Samples contains some meshes and point clouds for each step.

Step 1-3 are based on Matlab code. To develop the native matlab functions, use the related toolboxes (see Related Toolboxes Section)

Install & Use

  • Install Vstudio

  • Install .NET framework 4.6.1

  • Install GIT

  • Install LFS GIT

  • Clone all repositories (LFS does not support regular download)

  • Install Volvox

  • Install EleFront and MeshEdit (put it in C:\Users...\AppData\Roaming\Grasshopper\Libraries)

  • install matlab runtime 9.4.1 (2018a)

  • Open project solution

  • Add reference paths (properties of C# project Scan2BIM)

  • build solution

  • Right-click the .gha and .dll files > Properties > make sure there is no "blocked" text

  • start Rhino

  • enter commandline GrassHopperDevelopersettings and add \bin folder (where you just built the plugin)

  • Restart Rhino and Grasshopper

  • open a model containing several meshes (e.g. Samples\1.Mechelen_castle)

  • open a grasshopper canvas (e.g. Examples\Classification\M_classification_machinelearning.gh)

  • reference the meshes in the geometry on the left

  • bake the classified geometry on the right

Contribute

There are several large files in this repository (matlab .dll's and sample files) Use github's Large File System (LFS) to push changes to the origin.

  • make sure the .dll files are tracked after commiting
    • git lfs track '*.dll'
    • git lfs track '*.mat'
    • git lfs track '*.3dm'
    • git lfs track '*.obj'
    • git lfs track '*.stl'
    • git lfs track '*.json'
    • git lfs track '*.rdf'

License

If you use this software in a publication, please cite the work using the following information:

Bassier M., Vergauwen M. (2019) Clustering of Wall Geometry from Unstructured Point Clouds Using Conditional Random Fields. Remote Sensing, 11(13), 1586; https://doi.org/10.3390/rs11131586

Courtesy of the KU Leuven research group in Geomatics, TC BOUW, Department of Civil Engineering, KU Leuven, Belgium. https://iiw.kuleuven.be/onderzoek/geomatics

Do not use for commercial purposes.

Dependencies

Related Toolboxes

The grashopper plug in consumes following Open Source Toolboxes from the same author.

  • S2B-Segmentation
  • S2B-Classification
  • S2B-Clustering
  • S2B-Reconstruction