CADventory is a 3D CAD file, categorical tagging, and associated metadata inventory management system.
It is tested on Mac, Linux, and Windows, includes code coverage testing, and code security testing.
- Install: CMake 3.25+, SQLite3, BRLCAD, and Qt6
- Clone/Install BRLCAD from https://github.com/BRL-CAD/brlcad.git
- Clone/Download CADventory from source
- Compile (see .gitlab-ci.yml for variations): mkdir .build cd .build cmake .. -DCMAKE_INSTALL_PREFIX=/path -DCMAKE_BUILD_TYPE=Release -DQt6_DIR=/path/to/qt6 -DBRLCAD_ROOT=/path/to/BRLCAD cmake --build . --config Release
Run (Mac and Linux): ./bin/cadventory Run (Windows): .\Release\bin\cadventory.exe
Click + in GUI and navigate to a folder to index.
To clear all settings, run with --no-gui command-line option.
- Create build directory from root of the project (mkdir build)
- Navigate to build directory (cd build)
- cmake -DCMAKE_BUILD_TYPE=Debug -DBRLCAD_DIR=/path/to/brlcad/build ..
- make
- ctest --output-on-failure
- lcov --capture --directory . --output-file coverage.info
- lcov --remove coverage.info '/usr/*' --output-file coverage_filtered.info
- genhtml coverage_filtered.info --output-directory coverage_report
- view coverage_report/index.html
- Dependencies:
Install CMake: On macOS: brew install cmake On Ubuntu: sudo apt install cmake On Windows: Install from the CMake website. Install LCOV and GenHTML: On macOS: brew install lcov On Ubuntu: sudo apt install lcov On Windows: Install LCOV and GenHTML through Cygwin or equivalent. Ensure make or mingw32-make is available.
- Environment Variable for BRLCAD_ROOT:
You can specify the BRLCAD_ROOT path interactively when the script runs.
- Cross-Platform Commands:
make: Uses mingw32-make on Windows. File Paths: Adapts to Linux/macOS vs. Windows paths (/usr/* vs. C:/Program Files/*). Opening HTML Reports: Uses start, open, or xdg-open based on the OS.
- Testing Workflow:
Compiles the application. Runs unit tests with CTest. Generates and filters a coverage report. Opens the report in the default browser.
- Running the Script Ensure Python is installed (version 3.6+). Run it in your project directory (cadventory): python run_tests.py or python3 run_tests.py
- Implement automatic PDF report generation (1-page per library model).
- Integrate metadata support into GUI for tagging primary models.
- Graphically depict models and iconography during GUI browsing.
- Implement support for creating & modifying collections manually.
- Implement keyword search filtering for custom inventory reporting.
Here's an architecture diagram:
┌──────────────────────────────────────────────────────────────────────┐
│ CADventory │
│ │
│ ┌──────────────────────────────────────────────────────────────┐ │
│ │ User Interface (Qt) │ │
│ └─────────────┬───────────────────────┬─────────────────┬──────┘ │
│ │ │ │ │
│ ┌─────────────▼───────────┐ ┌────────▼─────────┐ ┌────▼──────┐ │
│ │ Filesystem Processor │ │ SQLite or JSON │◄─│ Report │ │
│ └─────────────┬───────────┘ │ Storage Manager │ │ Generator │ │
│ │ └──────────────────┘ └────┬──────┘ │
│ │ │ │
│ ┌─────────────▼───────────┐ │ │
│ │ Geometry/Image/Document │ │ │
│ │ Handler │ │ │
│ └─────────────┬───────────┘ │ │
│ │ │ │
│ ┌─────────────▼────────┐ │ │
│ │ CAD Libraries │◄───────────────────────────────┘ │
│ └──────────────────────┘ │
└──────────────────────────────────────────────────────────────────────┘
MIT