Skip to content

KIT-IAI/SDM_Plugin_Print3DModel

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

24 Commits
 
 
 
 
 
 

Repository files navigation

Print3DModel

The Print3DModel module allows the user to make changes to the IFC file and prepare it for small scale 3D printing. Through this plugin it is possible to filter elements and standard properties from the IFC and perform a model validation based on the selected scale and available printer capacity. The printable (${\color{green}in}$ ${\color{green}green}$) and problematic (${\color{red}in}$ ${\color{red}red}$) elements are identified for a preview of the final results of the printed model.

For more details: 3D Printing of BIM Model - Thesis.

In procedings of 34. Forum Bauinformatik:
Conceptual planning and implementation of an automated workflow in scaled 3D printing with the aim of generating printable models from BIM data

User Interface

The user interface is based on wxWidgets and was made with wxFormBuilder.

IFC Elements

  • Model Type
    Pre-defined filter for model element's type based on target use case. Initialized with "Default". Model types can be edited and current choices will be saved for future use.

  • Filter elements
    Select and deselect target enitites for current work.

  • Property
    Selected elements can be filtered throught the IFC standard properties "isExternal" and/or "LoadBearing".

Details

Select level of detail for windows and doors.

"Detailed" "Simplified"
image image

Visualization

Elements

Radio button Description

"Chosen"
Show the current selected elements.

"Inverted"
Show the elements that have not been selected.

"All"
Show all the model's entities.

Colors

Radio button Description

"Color by Default"
Show the model with default colors defined by entity's type.

"Color by Entity"
Show the model with colors attributed to entity.

"Unicolor"
Show model with selected color.

Printing Preparation

  • Scale
    Select scale that the model will be scaled down in the viewer.

  • Printer
    Select printer with its capacity. The printer settings can be edited and will be used for the model validation.

  • Name
    Name of the printer.

  • Max. Length
    Maximum length of the printer's printing plate in centimeter.

  • Max. Height
    Maximum height of the printer's assembly space in centimeter.

  • Min. Thickness
    Nozzle size of the printer in milimeter.

Model Checking

Run a model validation for the scaled model with the printer's parameters. Analyse resulting height, legth, thickness and solidity of each element. The printable (${\color{green}in}$ ${\color{green}green}$) and problematic (${\color{red}in}$ ${\color{red}red}$) elements are displayed as well as a printing plate (${\color{magenta}in}$ ${\color{magenta}magenta}$) based on the printer settings.

Export

  • Problematic Elements
Choice Description
Ignore error report Ignore report of problematic elements and export IFC file as it is.
Exclude elements Exclude problematic elements from model.
Correct elements Attempt to correct problematic elements. Applicable only in specific scenarios.
  • Save Building storey separately
    Separate the IFC file per storey and introduce automatically auxiliary geometry to facilitate post-printing assembly.

  • Save
    Convert resulting IFC file into a preferred 3D printable file format (ASCII or binary *.stl, *.3mg, *.obj).

Document

Print3DModel: Methods

Method Description
buildElementList() Get IFC data from viewer and fill "Elements" parameter.
updateElements() Update viewer with selection of entities and/or visualization.
chooseOpening() Change ParametricDoorWindow to Simplified or Detailed. Update viewer with selection of "Details".
changeScale(scale) Scale elements to selected in "Printing Preparation".
checkModel(min.Thickness, scale) Model validation for solidity and minimum thickness. It saves problematic elements.
checkMeasurements(maxLenght, maxHeight) Model validation for max. lenght and max. height.
getPrintingPlate(maxLenght) Add printing plate to viewer with printer settings information.
checkModel(min.Thickness, scale) Model validation for solidity and minimum thickness.
correctProblematicElements() Correct problematic elements for specific cases.
FileSaveFeature(fileformat, name) Save printable file for model or each storey.

Print3DParameter

Parameter Description Type
Elements Contains all element types and their entities with selection information. Identified by the entity's type name. struct
Problematic Elements List with oid of entities that were problematic for printing. integer
Separated Model is to be saved separated by storey. bool
isExternal Filter "isExternal" standard property. bool
loaded Filter "LoadBearing" standard property. bool

Elements struct

Attribute Description Type
Name Name of entity's Type (Example: "IfcWall"). string
Selection Identify if user selected current type. bool
Subelements List with all entities of current type identified by oid. struct
Subelements struct
Attribute Description Type
Oid Objekt ID integer
Name Name of Entity string
Selection Identify if user selected current entity bool
Id Global ID integer

Model Types

Attribute Description Type
Name Name of model type string
Entity Type List List of the names of the entity types for the current model type ("IfcWall", "IfcWindow", etc.) string

Dependencies

Use of vcpkg:

Package Name Install Command
wxwidgets vcpkg install wxwidgets triplet=x64-windows

How to cite

@inproceedings{Lourenzi.2023,
   author       = {Shuchen Di, Fernanda Lourenzi, Andreas Geiger, Karl-Heinz Häfele, Svenja Lauble},
   title        = {Conceptual planning and implementation of an automated workflow in scaled 3D printing with the aim of generating printable models from BIM data},
   pages        = {209-216},
   publisher    = {{Ruhr University of Bochum}},
   editor       = {Sigalov, K. and Hagedorn, P. and Schönfelder, P. and Faltin, B. and Zentgraf, S. and Block, M.},
   booktitle    = {Proceedings of 34. Forum Bauinformatik},
   year         = {2023}
}

@software{Print3DModel,
   title        = {Print3DModel},
   author       = {{Fernanda Lourenzi}},
   url          = {https://github.com/KIT-IAI/SDM_Plugin_Print3DModel},
   date         = {2023}
}

About

SDM_Plugin_Print3DModel

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published