VariantCAD is a hybrid CAD system for variant generation:
- Code-first modeling and rule definition
- A user-friendly parameters UI for guided configuration
- A future path to generate code from UI actions
In traditional CAD tools, the common approach is:
- Build a 3D model first.
- Add scripts on top to modify that model.
That workflow often becomes hard to maintain as complexity grows, since you need to handle CAD template files.
VariantCAD combines both worlds:
- The model is created directly in code.
- Variant rules are embedded in that same code.
- Geometry and configuration logic are defined together from the start.
- A CAD-style UI exposes parameters for non-coders and design engineers.
VariantCAD supports annotated variables in code.
Those annotations are automatically exposed as UI controls in the Parameters panel.
This supports multiple user groups:
- Design engineer / developer works in code (full modeling and rule logic).
- CAD engineer / technical user works in the Parameters panel (guided configuration).
- Future workflows can move from UI interaction back to generated code.
Users in the Parameters panel do not need CAD scripting expertise.
They can only choose predefined, valid values and valid combinations.
- Faster creation of product variants
- Safer configuration with fewer invalid setups
- A maintainable rule-based modeling workflow
- Better collaboration between engineering and non-engineering users
VariantCAD is based on the Open Cascade geometric kernel (via CadQuery).
- Open Cascade provides the core CAD/geometry engine.
- CadQuery provides the Python-based modeling syntax used to define parts, assemblies, and rules.
VariantCAD uses a server-first architecture.
- Heavy geometry computation and model generation run on the backend.
- The frontend acts as a configuration and visualization client.
- Parameter metadata is read from code annotations and exposed automatically as UI controls.
- Generated outputs (for example GLB and STEP) are produced on the server and delivered through API endpoints.
From the repository root:
pnpm run build
pnpm run upServices:
- Frontend:
http://localhost:5173 - Backend API:
http://localhost:8000 - Postgres:
localhost:5434
Stop services:
pnpm run downThis repository is proprietary and licensed under the terms in LICENSE. No permission is granted to use, copy, modify, publish, distribute, or create derivative works without prior written permission from the copyright holder.
