A declarative CAD language aiming at FreeCAD integration

Oct 31, 2026 Last reply: 13 hours ago 4 Replies
Jump to replies (4)

When everything is running, this project lets a person describe a part in a small declarative language and watch it take shape in 3D. The demonstration models a parametric Lego-style brick, and the finished model can be exported as an STL file. The whole thing even runs straight from a web browser at play.mucad.org, which lowers the barrier to trying it a lot.



The way the brick is constructed stands out. The outer walls come from offsetting a base rectangle inward by a thickness constant, those walls are then combined with interior hollow support rings, and the assembly is extruded upward. The geometry lives in a reusable component that takes columns, rows and base height as parameters, and an array distribution operation fills the viewport with an 8 by 8 grid spanning 27cm. Named constants like spacing and tolerance appear throughout, and in my view that keeps a model easy to read and tweak.



Under the hood the compiler is written in Rust and emits a structure called the ModelTree, intended to be handed to any CAD kernel. That is a deliberate contrast with OpenSCAD, which the maker set out to rewrite and which carries a hard dependency on its built-in CSG kernel. Right now µcad has only a minimal CSG kernel, and an OCCT backend is planned to output solid models instead of meshes. Python wrappers built on PyO3 and maturin are planned too, along with a dedicated FreeCAD workbench.



One open problem the maker names directly: mapping visual edits back to code is difficult and has tripped up other projects. Feedback is being gathered on the syntax, the design workflow and which FreeCAD integration features would matter most, so there is a real opening to shape where this goes.


This looks like something worth poking at without installing a whole toolchain first. Is there a way to run µcad directly in a browser, and does the complete language work there or only a reduced subset of it?

The smartest choice here, in my opinion, is making the compiler target any CAD kernel. OpenSCAD being tied to its own built-in CSG kernel is exactly the limitation this avoids, and it keeps the door open for an OCCT backend producing real solids. The cost is clearly more architecture up front, but that trade-off seems worth it for where this is heading.

I would suggest putting the OCCT backend ahead of workbench polish. A path from a µcad file to OCCT solids and then to a FreeCAD Part::Feature would give editable solid models inside FreeCAD, and that fits the stated goal of moving away from mesh output. Solids first, interface later, seems the right order to me.

Yes, the tool runs directly in a web browser at play.mucad.org, so there is nothing to install for a first look. Whether every part of the language behaves the same in the browser version has not been said by the maker.

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required