7 ms·
µcad: New open source programming language that can generate 2D sketches and 3D
- actinium226 1y agoThis 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?
- sho_hn 1y agoHmm - are you familiar with OpenSCAD, which is highly popular? This would appear to compete there. There's a few others, e.g. CadQuery.
- lovemenot 1y agoSuch languages can be amenable to LLM generation, reducing barriers to entry.
- aclindsa 1y agoJust 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.
- ponyous 1y agoInteresting. I’m building a SaaS around this idea. And I managed to do things waaay more complex than that using LLMs. Especially “several times”. My AI can do a parametric trophy cup from one prompt in a couple of attempts, I would be shocked if it didn’t know how to make rectangular cube…
- 2muchcoffeeman 1y agoI’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.
- jwagenet 1y agoThe 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.
- atrettel 1y agoThis 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".
- Normal_gaussian 1y agoI'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.
- WillAdams 1y agoIf 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.
- raddan 1y agoI 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.
- krisoft 1y agoCurious. 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?
- fainpul 1y agoI've also been asking myself what people do with programmatic CAD. I've used OpenSCAD once to create a simple, cylindrical object, but about 80% of the things I create (using conventional CAD, like Fusion 360) would be way too complex for that. And even the simplest shapes are just much faster to create and modify in Fusion. Maybe this is the "everything looks like a nail" problem for programmers who have never tried CAD?
- joker99 1y agoI recently used this https://makerworld.com/de/models/1765102-10-inch-mini-rack-generator https://makerworld.com/de/models/1765102-10-inch-mini-rack-g... to generate various mounts for my home lab mini rack. The idea is that everything needs to fit into the same width of rack, but every device is slightly different so custom creating these becomes annoying quickly. This generator was a godsend
- octoberfranklin 1y agoSo what is the big advantage of this over OpenSCAD?
- beeflet 1y agoI found this: https://docs.microcad.xyz/language/book/intro/preface.html 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.
- Surac 1y agoI 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
- theamk 1y agoSo.. OpenSCAD, but with strong types and rust-flavored syntax?
- cke 1y agoThis almost feels like going back to old school Autocad.
- WillAdams 1y agoYes, but if one wants to use that sort of thing, why not go _all_ the way back: https://brlcad.org/ https://brlcad.org/
- aclindsa 1y agoOne 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.
- don-bright 1y agoThat 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/ 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.
- beeflet 1y agowow, this is really neat. I always noticed how, when panning around with ortho view, it didn't need to re-render
- marcosscriven 1y agoI didn’t know they’d added an alternative kernel. The CGAL one used arbitrary precision which massively slowed it down. Also, fillets are made using the Minkowski operation, which is super slow.
- tdeck 1y agoThey added it in the dev branch. There hasn't been a stable release since 2021 and there has been a lot of ongoing development in the meantime, many people use the development release since it's significantly faster.
- awinter-py 1y agoTried 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'.
- WillAdams 1y agoThe 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/ https://fornjot.app/
- nicman23 1y agofreecad with the new ui + its openscad integration is pretty good. openscad in general is quite easy if you can functionally program
- exasperaited 1y agoAFAIK FreeCAD's core OpenSCAD replacement is being suggested for replacement with an alternative so things may further improve. OpenSCAD in a FreeCAD context does address many of the limitations of OpenSCAD, but it's not perfectly compatible.
- WillAdams 1y agoThat's a shame. If I could use FreeCAD by programming in OpenSCAD, I'd be far more inclined to use it.
- deckar01 1y agoThis 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.
- beeflet 1y agoInteresting 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.
- jwilber 1y agoYeah, 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…
- iammattmurphy 1y agoThe server appears to be down right now too :/
- teaearlgraycold 1y agoIf so that means they asked the AI to use PHP. Which is even more horrifying.
- swaits 1y agoPHP is fine. If the site sucks it’s not because of the language.
- altmanaltman 1y agoyeah, a lot of frontend/styling choices are pretty non-asthetic other than the suboptimal performance.
- GaryBluto 1y ago>https://microcad.xyz/?brx_pyuqqz%5B%5D=code&brx_pyuqqz%5B%5D=release&brx_pyuqqz%5B%5D=updates&brx_pyuqqz%5B%5D=video https://microcad.xyz/?brx_pyuqqz%5B%5D=code&brx_pyuqqz%5B%5D... >brx_pyuqqz That's certainly an array name.
- masfoobar 1y agoWhile PHP is not my goto language.. and the language has likely changed a fair bit when I last used it.. I don't think the issue is PHP.
- pedropaulovc 1y agoI'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 https://zoo.dev/docs/kcl-samples/lego [2] Lego brick in µcad: https://microcad.xyz/index.php/2025/11/12/lego-bricks/ https://microcad.xyz/index.php/2025/11/12/lego-bricks/ [3] Gear in KCL: https://zoo.dev/docs/kcl-samples/spur-gear https://zoo.dev/docs/kcl-samples/spur-gear [4] Gear in µcad: https://microcad.xyz/index.php/2025/11/12/gears/ https://microcad.xyz/index.php/2025/11/12/gears/
- its-summertime 1y agoDoesn't it solve the problem by being local? https://codeberg.org/microcad/microcad https://codeberg.org/microcad/microcad
- fallat 1y agoZoo 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 :)
- hekkle 1y agoLooks like a promising alternative to OpenSCAD. Although am I the only one to notice the swastika in their logo?
- GaryBluto 1y ago> 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.
- ruicraveiro 1y agoMaybe it could be Bauhaus inspired instead. (This isn't a serious suggestion, but if you're biasing your opinion based on their German origin, why not from the good stuff instead?)
- deleted 1y ago[deleted]
- fainpul 1y agoIt's probably just AI generated.
- fainpul 1y agoIf you see a swastika there, do you also see it in the Python logo?
- lukan 1y agoPersonally I would not have seen a swastika here, but when looking for it, here it would be more obvious, the python logo has only half of it. Still, questionable if it was intentional .. and if it was, does not necesarrily mean they are Nazis (they did not invent, but just used the old symbol). Also this project was funded in part by the german Federal Ministry of Research, Technology and Space and they are not known to fund open Nazis in general.
- cyrusradfar 1y agoSuper 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!
- sciencesama 1y agoWhy not openscad
- willvarfar 1y agoI've been searching for a CAD language that supports iteration in a good way. I've been designing a self-build house and it occurs to me that, once I have the walls etc, filling in the details for the manufacture of those walls could be done by a programming routine. Such a routine could work out how many studs are needed and their placement etc and generate the kind of cut-throughs where you can see the construction inside the wall that you sometimes see in construction books. Anyway, without for-loops that kind of thing is really difficult and I've given up.
- nakedneuron 1y agoThen build123d might be for you.
- deleted 1y ago[deleted]
- arcanemachiner 1y agoI know that FreeCAD has architectural support. I think it's called BIM, which tells you how well-informed on the subject I am (not).
- tnlogy 1y agoNice with another alternative. I have been using shapescript, which I think is easier than openscad, and available on ios. https://shapescript.info/ https://shapescript.info/
- betimsl 1y agoCould you please make the book into a PDF?
- kulhur 1y agoJust click print in the top right.
- naaqq 1y agoIt makes LLMs stronger because code is something LLMs are good at.
- 0xFEE1DEAD 1y agoYou should remove any reference to LEGO from the website and the examples. LEGO is extremely protective of its brand (similar to / worse than Nintendo) and does not want third parties using its name, because it is concerned that LEGO could become a generic term which could put its trademark at risk. See: "Lego sues Dutch firm over anti-terror blocks using name and shape" https://www.thetimes.com/world/europe/article/lego-sues-dutch-firm-over-anti-terror-blocks-using-name-and-shape-c8w2lwkzb https://www.thetimes.com/world/europe/article/lego-sues-dutc... ( http://archive.today/q5XrX http://archive.today/q5XrX )
- hju22_-3 1y agoI'm willing to die on the hill that lego already is a commonplace word, but I can't argue that they've held on to the LEGO trademark for pretty long. Though, I'd say Nintendo is a lot worse than LEGO, and I've never heard LEGO do the frankly insane crap that Nintendo has.
- 0xFEE1DEAD 11mo agoThey actually sued a lego youtuber (or threatened to sue - unsure) for using a lego brick in his logo. this lead to him creating a new word for lego bricks "Klemmbausteine" which means "clamping building bricks".
- taskforcegemini 11mo agothat's where the word comes from? he should (or should have) trademark it, it's very widely used
- utopiah 1y agoNo Web notebook for https://docs.microcad.xyz/tutorials/book/lego_brick/ https://docs.microcad.xyz/tutorials/book/lego_brick/ no install? (as https://machineblocks.com/docs/scad-crash-course-101 https://machineblocks.com/docs/scad-crash-course-101 does)
- knollimar 1y agoSo this is more an autocad equivalent? Does it have interfaces to enable reusability in some other file format (e.g. any way to get it into generic models eventually importable into revit?)
- thesurlydev 1y agoPlease provide a trivial example of the code and the generated sketch front and center on your front page.
- gcr 1y agoThere’s tons of examples just past the fold!
- estimator7292 1y agoThere is zero reason for you to have a cookie banner taking up a third of the page. At this point, everyone making websites should be well aware that there is no requirement for cookie banners and that implementing such is active disrespect towards your users. Your cookie banner does not tell me you care about my privacy, it tells me you're trying to collect some type of data about me and want to annoy me into letting you sell that data. A cookie banner is exactly as much a red flag as an obviously AI generated hero image at the top of your page. Disrespectful.
- tasn 1y agoMany many years ago I created my own JS -> OpenScad generator, so I defo agree the OpenScad language could be better. Though the engine worked well. Putting it here in case anyone is curious: https://github.com/tasn/scadjs https://github.com/tasn/scadjs
- skolos 1y agoLooking at examples I see: ``` c = Sector(radius, start = 180°, end = 270°).translate(y = radius); ``` Programming language that requires (maybe it does not require, but then example is not good) to type degrees. Or maybe it is not designed to be typed and rather ai generated?
- UncleEntity 1y agoI saw another example where they had 'mm' as well so I'm guessing that's all part of the type system as postfix attributes? Poked around in the docs a bit but didn't see a grammar so, dunno... I can only guess it does automatic type conversion if you only type the numbers without the qualifier.
- WilstonOreo 11mo agoYes, we use units as postfix attributes. The grammar is here, in case you are interested: https://codeberg.org/microcad/microcad/src/branch/main/lang/grammar.pest https://codeberg.org/microcad/microcad/src/branch/main/lang/...
- addaon 11mo agoopt-shift-8
- conorbergin 1y agoCan it do fillets?
- zombot 11mo agoI find it horrible that all the examples are given as videos. No can do.
- winlundn 11mo agoYesterday, these people pulled their microcad-based Spirograph code. No explanation given... now it's just a 404 page. What's up with that, Microcad? This kind of reflects poorly on your overall ability to do things like host the actual code for microcad itself.
- winlundn 11mo agoReference: https://microcad.xyz/2025/11/20/spirograph/ https://microcad.xyz/2025/11/20/spirograph/ ^ This link worked yesterday when Ycombinator cited them. Now it doesn't work. Who at Microcad is scared right now? Or does this removal regard perhaps a more common situation -- such as their code wouldn't compile with microcad and so they had to pull it, rewrite it, and will publish Spirograph later?
- WilstonOreo 11mo agoHey, microcad dev here. We are definitely not scared, just a bit overwhelmed by the amount of good and constructive feedback. The new link is here: https://microcad.xyz/spirograph/ https://microcad.xyz/spirograph/
- iddar 11mo agoThat's interesting project, what do u think about include more export types for 3d print?
- morcutt 11mo agoQuite excited to try this.