About this project

vCAD is an open-source, cross-platform parametric Computer-Aided Design (CAD) application designed with a "kernel-first" architecture. The project aims to provide a robust core that can support multiple frontends, including a full-featured desktop application for Windows, macOS, and Linux, as well as a specialized client for iPadOS focused on 3D printing. The software leverages OpenCASCADE Technology (OCCT) for its geometric kernel and uses bgfx for rendering. The user interface for the desktop version is built with Qt 6.8 LTS. A key architectural feature is the strict layering system enforced by build scripts, ensuring that the core kernel remains independent of UI frameworks like Qt or SwiftUI. This design allows the same core to be compiled for different platforms without compatibility issues. Key capabilities include: - **Parametric Modeling**: Supports sketching, features, and parametric constraints. - **Topological Naming**: Implements advanced topological naming strategies to maintain model integrity during edits. - **Document Management**: Features a persistent document structure with free undo/redo history and a recomputation engine. - **Data Cache**: Utilizes a two-tier cache over assetlib's Document Data Cache (DDC) for efficient data management. - **File Interchange**: Supports industry-standard formats including STEP, IGES, and STL. - **Extensibility**: Provides a stable C Application Binary Interface (ABI) and Python bindings for scripting and plugin development. The project is currently in active development, with Milestones M1 (kernel wrapper and topological naming) and M2 (document management, DDC, and file I/O) marked as complete. Milestone M3, focusing on the renderer and Qt shell, is in progress. The codebase includes comprehensive testing across five tiers, including C++ unit tests, Rust acceptance tests via the C ABI, and Python binding tests. Building vCAD requires CMake 3.24+, a vcpkg checkout for dependencies, and optionally pybind11 for Python bindings. The project emphasizes rigorous dependency management and version pinning to ensure stability across different operating systems.