I've been using zoo and its KCL language with some success for boundary-representation CAD writing. If I understood correctly, µcad serves the same purpose. Comparing code samples between both of them, I personally enjoy KCL's pipelined approach more.
My main beef with zoo is the fact that they are promoting vendor lock-in by forcing users to use their cloud-hosted geometry kernel with absolutely no local alternative. It's not clear to me how µcad solves this problem.
Tried openscad and then cadquery for some geometry iteration projects and found them clunky. It wasn't just that I was missing a UI; the functions, constraints and geometry kernel weren't as powerful as onshape, which I've used a bit, and presumably light years behind fusion 360, which I haven't used.
Even freecad, a UI-based oss cad, is not quite ergonomic for a beginner-to-intermediate user, though it has come a long way in the past few years.
I'm excited for there to eventually be a good open source cad option, whether language-only or language-plus-GUI, but am also increasingly on team 'tools matter for your productivity'.
The great thing about OpenSCAD is that it makes it easy to programmatically model objects using cubes, cylinders, cones, and spheres by placing, stretching, and rotating them.
The awful thing about OpenSCAD is that one's ability to model in it is strongly bounded by one's fluency with mathematics and ability to use math to programmatically model objects using cubes, cylinders, cones, and spheres by placing, stretching, and rotating them.
The one tool I'm aware of which is looking at a new geometry kernel which I can recall is:
One of the best things about openscad is the ability to immediately see the results of a code change in the 3D view (all I do is save the file with :w in neovim and openscad re-renders it). Being able to interact like this makes it much quicker and easier to iterate on a design.
I read through the ucad website and book for 10 minutes and haven't been able to figure out if there is an analogue to this for ucad?
There are several things that look neat about ucad's language, but I would need to recreate something like openscad's workflow to consider switching.
That immediacy is mostly thanks to OpenCSG which is essentially a magic trick to quickly fake 3d rendering of booleans between 3d objects using stencil buffer of gpu. http://opencsg.org/
In other words it renders the cylinders cubes spheres etc and their unions differences etc, to a 2d screen without actually calculating the intersection of those meshes / solids in 3d space.
This is the special thing about OpenSCAD design is they figured out how to build an abstract syntax tree that could either be sent to OpenCSG, CGAL (old engine), Manifold (new engine), or even the bare bones 'ThrownTogether' renderer (ancient engine on machines with no gpu that just draws 'negatives' as green blobs iirc).
It should be theoretically possible for any CAD program to do this. its just a lot of work.
Super fascinating project. I'm very interested in this. I truly hate using the tools by hand and as a programmer, this feels waaaay more intuitive. That said, when reviewing the gear video, I think understanding to start with the gear primitive would require giving the libraries a good once over as I wouldn't have assumed those existed.
Can imagine more and more forms being built in as the community goes.
This does not seem to have a constraint solver or any documented plans to integrate one. I love math, but I don’t enjoy maintaining walls of trig to make trivial constraints parametric.
I like openscad because it use a syntax more like c than rust. Making the syntax more c like opens the user base up. Not everyone sees rust syntax as a benefit. Just my 2 cents
This is a neat idea and I quite like some of the syntax, but what is this for? I have a hard time seeing this gaining traction over traditional sketch-based CAD for a number of reasons, so is it just meant to be a toy?
I would personally prefer to work with a language-based CAD than a strictly graphical one. Especially for parametric kinds of objects. Now that 3D printing is going mainstream, I am certain that new and interesting things are still to come in CAD.
Curious. How much experience do you have with any form of CAD? Is the preference based on that you tried graphical CAD software and you found them lacking, or is it based on imagining how they might work?
Last week at the hackspace someone asked me to quickly design a manifold which holds together a scuba mouth piece, a 48mm diameter valve and a nato 40mm screw fitting. They wanted to minimise the internal tidal volume of the manifold, while keeping enough clearance for the tubes connected to it. We ended up connecting the 3 fittings in a Y-shape and lofted the pipes together. Without seeing the resulting shape I can’t even start to guess how many edges it would have. And I have no idea how I would refer to which edges i want filleted. How would you approach something like that with your prefered method?
The hard part with 3d part creation isn’t the graphical interface or language, it’s actually describing and translating part requirements to a manufacturable design, weighing material, weight, fit, geometric, and cost tradeoffs. Openscad, opencascade, etc have been around for a long time and have specs for describing features in a way that llm should be able to handle, but if all the part constraints were available it’s far faster to make accurately in Solidworks.
This is my experience too. I took a course a long time ago in design for manufacturing, and it became abundantly clear that just because you can conceive of an idea doesn't mean that you can build it. That requires a lot more work and technical know-how that isn't always put into books or other "training data".
Just yesterday I had an LLM write an openscad module for generating a 2d rounded rectangle. It worked great! I then tried to get it to write a module to extrude a 2d shape into a 3d shape and it failed spectacularly several times before I gave up.
I'm a much more capable of designing useful models by programming than I am in using CAD software. The way I think about the construction of models is much more suited to standard programming techniques. I freely admit there is probably immense value in using the industry standard tools instead... I've printed a few projects now which I used OpenSCAD to design, and it went fairly well, and I'm confident in them. OpenSCAD is a bit of a PITA though.
I have no idea if this approach might gain traction over sketch-based CAD, I doubt it; yet this approach has a strong chance of expanding the space.
If there was a real possibility of folks being willing to use this sort of UI in industry, BRL-CAD would be far more popular, and writing AutoLISP scripts wouldn't be an obscure specialty.
I've been using zoo and its KCL language with some success for boundary-representation CAD writing. If I understood correctly, µcad serves the same purpose. Comparing code samples between both of them, I personally enjoy KCL's pipelined approach more.
My main beef with zoo is the fact that they are promoting vendor lock-in by forcing users to use their cloud-hosted geometry kernel with absolutely no local alternative. It's not clear to me how µcad solves this problem.
[1] Lego brick in KCL: https://zoo.dev/docs/kcl-samples/lego
[2] Lego brick in µcad: https://microcad.xyz/index.php/2025/11/12/lego-bricks/
[3] Gear in KCL: https://zoo.dev/docs/kcl-samples/spur-gear
[4] Gear in µcad: https://microcad.xyz/index.php/2025/11/12/gears/
Doesn't it solve the problem by being local? https://codeberg.org/microcad/microcad
Zoo has said it's open to local hosting of the kernel for years. I believe it's a matter of time because it's mostly about legal tape.
ucad is based on Manifold, so unfortunately, not really comparable, since it's all meshes vs brep, like OpenSCAD.
Note KCL could be completely augmented with another kernel. There are people who've already tried :)
Tried openscad and then cadquery for some geometry iteration projects and found them clunky. It wasn't just that I was missing a UI; the functions, constraints and geometry kernel weren't as powerful as onshape, which I've used a bit, and presumably light years behind fusion 360, which I haven't used.
Even freecad, a UI-based oss cad, is not quite ergonomic for a beginner-to-intermediate user, though it has come a long way in the past few years.
I'm excited for there to eventually be a good open source cad option, whether language-only or language-plus-GUI, but am also increasingly on team 'tools matter for your productivity'.
The great thing about OpenSCAD is that it makes it easy to programmatically model objects using cubes, cylinders, cones, and spheres by placing, stretching, and rotating them.
The awful thing about OpenSCAD is that one's ability to model in it is strongly bounded by one's fluency with mathematics and ability to use math to programmatically model objects using cubes, cylinders, cones, and spheres by placing, stretching, and rotating them.
The one tool I'm aware of which is looking at a new geometry kernel which I can recall is:
https://fornjot.app/
freecad with the new ui + its openscad integration is pretty good.
openscad in general is quite easy if you can functionally program
One of the best things about openscad is the ability to immediately see the results of a code change in the 3D view (all I do is save the file with :w in neovim and openscad re-renders it). Being able to interact like this makes it much quicker and easier to iterate on a design.
I read through the ucad website and book for 10 minutes and haven't been able to figure out if there is an analogue to this for ucad?
There are several things that look neat about ucad's language, but I would need to recreate something like openscad's workflow to consider switching.
That immediacy is mostly thanks to OpenCSG which is essentially a magic trick to quickly fake 3d rendering of booleans between 3d objects using stencil buffer of gpu. http://opencsg.org/
In other words it renders the cylinders cubes spheres etc and their unions differences etc, to a 2d screen without actually calculating the intersection of those meshes / solids in 3d space.
This is the special thing about OpenSCAD design is they figured out how to build an abstract syntax tree that could either be sent to OpenCSG, CGAL (old engine), Manifold (new engine), or even the bare bones 'ThrownTogether' renderer (ancient engine on machines with no gpu that just draws 'negatives' as green blobs iirc).
It should be theoretically possible for any CAD program to do this. its just a lot of work.
wow, this is really neat. I always noticed how, when panning around with ortho view, it didn't need to re-render
Super fascinating project. I'm very interested in this. I truly hate using the tools by hand and as a programmer, this feels waaaay more intuitive. That said, when reviewing the gear video, I think understanding to start with the gear primitive would require giving the libraries a good once over as I wouldn't have assumed those existed.
Can imagine more and more forms being built in as the community goes.
kudos!
This does not seem to have a constraint solver or any documented plans to integrate one. I love math, but I don’t enjoy maintaining walls of trig to make trivial constraints parametric.
Interesting project, I will look into it.
This site sucks. Why does it use php, and why is every link a query? Just make it a static page.
>https://microcad.xyz/?brx_pyuqqz%5B%5D=code&brx_pyuqqz%5B%5D...
>brx_pyuqqz
That's certainly an array name.
PHP is fine. If the site sucks it’s not because of the language.
yeah, a lot of frontend/styling choices are pretty non-asthetic other than the suboptimal performance.
Yeah, my guess is the team vibe-coded it because wow is does it have poor performance /is difficult to use. A few links didn’t even work for me…
The server appears to be down right now too :/
If so that means they asked the AI to use PHP. Which is even more horrifying.
So.. OpenSCAD, but with strong types and rust-flavored syntax?
So what is the big advantage of this over OpenSCAD?
I found this:
https://docs.microcad.xyz/language/book/intro/preface.html
>While OpenSCAD is easy to learn and has a syntax reminiscent of C, we felt the language could be improved in several ways:
> - more specialization for creating graphics,
> - better support for modular programming,
> - strict typing and unit handling,
> - a syntax closer to Rust than to C,
> - a solid library system,
> - plugin support for other programming languages,
> - and a more powerful visualization concept.
I like openscad because it use a syntax more like c than rust. Making the syntax more c like opens the user base up. Not everyone sees rust syntax as a benefit. Just my 2 cents
This almost feels like going back to old school Autocad.
Yes, but if one wants to use that sort of thing, why not go _all_ the way back:
https://brlcad.org/
Why not openscad
Looks like a promising alternative to OpenSCAD.
Although am I the only one to notice the swastika in their logo?
> Although am I the only one to notice the swastika in their logo?
Possibly. Although I know it's the wrong way round to be a Nazi swastika, it's made all the more odd by the fact that this is a German project.
This is a neat idea and I quite like some of the syntax, but what is this for? I have a hard time seeing this gaining traction over traditional sketch-based CAD for a number of reasons, so is it just meant to be a toy?
I would personally prefer to work with a language-based CAD than a strictly graphical one. Especially for parametric kinds of objects. Now that 3D printing is going mainstream, I am certain that new and interesting things are still to come in CAD.
Curious. How much experience do you have with any form of CAD? Is the preference based on that you tried graphical CAD software and you found them lacking, or is it based on imagining how they might work?
Last week at the hackspace someone asked me to quickly design a manifold which holds together a scuba mouth piece, a 48mm diameter valve and a nato 40mm screw fitting. They wanted to minimise the internal tidal volume of the manifold, while keeping enough clearance for the tubes connected to it. We ended up connecting the 3 fittings in a Y-shape and lofted the pipes together. Without seeing the resulting shape I can’t even start to guess how many edges it would have. And I have no idea how I would refer to which edges i want filleted. How would you approach something like that with your prefered method?
Well, there's OpenSCAD already, and for folks who like Python:
https://pythonscad.org/
Hmm - are you familiar with OpenSCAD, which is highly popular? This would appear to compete there. There's a few others, e.g. CadQuery.
Such languages can be amenable to LLM generation, reducing barriers to entry.
The hard part with 3d part creation isn’t the graphical interface or language, it’s actually describing and translating part requirements to a manufacturable design, weighing material, weight, fit, geometric, and cost tradeoffs. Openscad, opencascade, etc have been around for a long time and have specs for describing features in a way that llm should be able to handle, but if all the part constraints were available it’s far faster to make accurately in Solidworks.
This is my experience too. I took a course a long time ago in design for manufacturing, and it became abundantly clear that just because you can conceive of an idea doesn't mean that you can build it. That requires a lot more work and technical know-how that isn't always put into books or other "training data".
I’ve tried getting Gemini to follow descriptions to generate a simple object in OpenScad.
I finally got it to do what I wanted.
But I’m much much faster and if didn’t have some amateur CAD experience, I don’t know I would have ever succeeded.
Just yesterday I had an LLM write an openscad module for generating a 2d rounded rectangle. It worked great! I then tried to get it to write a module to extrude a 2d shape into a 3d shape and it failed spectacularly several times before I gave up.
I'm a much more capable of designing useful models by programming than I am in using CAD software. The way I think about the construction of models is much more suited to standard programming techniques. I freely admit there is probably immense value in using the industry standard tools instead... I've printed a few projects now which I used OpenSCAD to design, and it went fairly well, and I'm confident in them. OpenSCAD is a bit of a PITA though.
I have no idea if this approach might gain traction over sketch-based CAD, I doubt it; yet this approach has a strong chance of expanding the space.
If there was a real possibility of folks being willing to use this sort of UI in industry, BRL-CAD would be far more popular, and writing AutoLISP scripts wouldn't be an obscure specialty.