- Rust 97.2%
- WGSL 0.9%
- Slint 0.7%
- TypeScript 0.3%
- Typst 0.3%
- Other 0.6%
|
|
||
|---|---|---|
| .vscode | lsp: handle viewer | |
| assets | md-test: move assets | |
| books | Version bump | |
| builtin | More READMEs | |
| core | More READMEs | |
| editors | More READMEs | |
| examples | More READMEs | |
| export | More READMEs | |
| images | add stickers | |
| import | More READMEs | |
| lang | More READMEs | |
| scripts | lsp: handle viewer | |
| std | More READMEs | |
| tests | More READMEs | |
| tools | Revert "Improve Lighting" | |
| .gitignore | add node_modules to .gitignore | |
| .gitmodules | Git remove submodules | |
| .woodpecker.yaml | cli: add rustfmt | |
| about.hbs | cargo about | |
| about.toml | BIG: fix all copyright in all *.rs, *.pest and *.toml files | |
| Cargo.toml | Version bump | |
| CONTRIBUTE.md | More doc | |
| lego_brick.json | lang: add Link | |
| LICENSE | Change license to AGPL | |
| microcad.code-workspace | lsp: handle viewer | |
| package-lock.json | vscode: packaging review | |
| README.md | Fix README.md | |
| rust-toolchain.toml | rust-toolchain: Add copyright | |
| rustfmt.toml | Update copyright | |
| test.μcad | cli: embed lib folder instead of lib/std to match default search paths | |
| Tutorial changes.md | book: fix center -> align | |
| watch_lsp.sh | plugin: add start lsp | |
μcad
CI Crates.io Dependency status
μcad (pronounced microcad) is a description language for modeling parameterizable geometric objects. Simple basic shapes can be composed to create complex geometries which then can be rendered into STL or SVG files for 3D printing or CNC milling.
Note: This project is in an early stage of development and is not yet feature complete. Feel free to contribute by opening issues or pull requests.
Content
Quick Start
μcad is programmed in Rust which easily can be
installed on several operating systems.
You can try it out with an example by using the command line tool microcad
which can be installed from crates.io by using
the following command line:
cargo install microcad
Note: Currently μcad has no binary install packages so the only ways to install
it are with cargo install or from the source code (see section
Contribute).
First Example
The following μcad source code defines a part called csg_cube, which has a body of a cube with
rounded corners and three cylinders as holes:
use std::math::*;
use std::ops::*;
use std::geo3d::*;
part CsgCube(size: Length) {
body = Sphere(r = size / 1.5) & Cube(size);
holes = Cylinder(h = size, d = size / 1.5).orient([X,Y,Z]);
body - holes;
}
CsgCube(50mm);
Installation
First, install Ninja Build which is needed to compile the manifold geometry library. For example, Debian based Linux distributions use the following line:
sudo apt install ninja-build
To install the latest release of μcad via cargo, type:
cargo install microcad
Command line usage
After installing, you can run a basic example by typing:
microcad eval ./examples/bricks/brick.μcad
This will evaluate the input file and will output the model tree. The evaluate command will not export the output geometry.
To generate an STL model file use the export command with an additional output file name:
microcad export ./examples/bricks/brick.μcad
The file brick.μcad generate a file calledbrick.stl
which can be displayed e.g. with MeshLab.
The resulting STL mesh looks like this:
Documentation
- Description of language features
- Language reference
- Basic concepts
- Glossary
- Contribute Documentation
💚 Funded by
Thanks to the Prototype Fund and the Federal Ministry of Research, Technology and Space for funding this project in 2025.
https://prototypefund.de/en/ https://okfn.de/en/ https://www.bmbf.de/EN/