We will develop this program under Windows 10.
Below lists the libraries that I used:
- CGAL: Version 5.1.1
- boost: Dependency of CGAL, Version 1.75
- QT: IDE for development, convenient to create UI, Version 5.15.2 (msvc2019_64)
I will attach the CGAL and boost library here. Download and put them in C:/dev
https://drive.google.com/file/d/1dbSDf-wNOQJwgzVqnwHMa4O_Jo3yn6M1/view?usp=sharing
You can add the QT library in the IDE. Make sure it is QT5.15 msvc2019_64.
A general overview:
CMakelists.txt
: information about library linking in compilationmain.cpp
: generated files for UI where I haven't touchedmainwindow.ui
: If you double click this file, QT takes you to the UI page where you can modify the UImainwindow.h
,mainwindow.cpp
: generated files for UI. The UI logics are defined here. For example, if you add a button, the button logic are defined in these files. To learn more about UI logic, Google "QT slots and signals".Analyzer.cpp
,Analyzer.h
: These two files defines Analyzing functions in the Analyzer class.parameter.h
: parameter to the Analyzer objectobjects.h
: defines some CGAL objectsresult.h
,result.cpp
: class definitions for storing Analyzer results.utility.h
,utility.cpp
: some utility functions
- User opens
DentalAnalyzer.exe
, they will see the UI, which is defined inmainwindow.ui
. - User click buttons to input their 3D model files, the buttons' logic are defined in
mainwindow.h
andmainwindow.cpp
. Most of these buttons will read the input string and store it in a parameter object. The parameter class is defined inparameter.h
. - When the user click "Analyze", it will trigger the
on_pushButtonAnalyze_clicked()
function inmainwindow.cpp
. This function will create a analyer object and run itsanalyzer()
function in a new thread. If you directly run it, the mainwindow will freeze because the main thread is busy running the analyze function. - The
Analyzer::analyze()
function will read in the models, and run the compute functions. When running the functions, the result will be saved to thestudent_result
variable in Analyzer object. - When you export the result as csv using the button, the result object from the previous step will be used and write data to a csv file.