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.
Hm, at least build123d (which I had never heard of, thanks!) can export STEP, which I believe is becoming a necessity if one wants to assemble real-world models with FreeCAD (and nicely also slicers are picking up support to it). I'm on the edge though if I'd really like a proper DSL instead of building it on top of Python, although I can see that too has its benefits (e.g. library access).
Does anyone have idea about the STEP export support status for KCL/µcad? To me it looks like KCL cannot, and I cannot find information on it about µcad. The one tool I'm familiar within this space is OpenSCAD and it cannot. While FreeCAD is able to (sometimes?) convert from STL to STEP, it seems actually working with such models in FreeCAD is quite compute-inefficient.
If you're talking about CAD in general I can see your point.
For FreeCAD specifically, there looks to be an OpenSCAD import process directly. I don't have experience with how it works, but that may be better than going through STL
I know the process is there, but I really, really doubt it does anything else than just uses OpenSCAD code to render the mesh, as FreeCAD can also deal with meshes. I think it would be pretty unlikely that the FreeCAD devs would have implemented such a rendering system based on OpenSCAD.
Converting from STL to STEP is essentially always a case-by-case thing.
If you import, sew, check geometry, refine, etc., you can eliminate unnecessary triangles in planar faces. But you can't magically make a 120-sided-polygon that should be a circle a circle; you're going to have to do that yourself.
And FreeCAD is not the best tool for correcting broken meshes, which are commonplace. MeshLab and the vaguely-on-life-support AutoCAD MeshMixer are better at it.
STEP/IGES is as you say more or less essential if you want to work with code-CAD output in any other serious context. STL is not enough: it is like converting to JPEG in the middle of a photo editing flow, not at the end. It destroys information — in this case geometry.
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.
> 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).
Mostly.
I've still had several instances when drawing curved solids that the OpenCSG renderer worked well with (visually) but when it came to render-time, there was something wrong. It is very hard to debug things, or at least I found it so, when it goes wrong like that.
They 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.
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:
As someone who has been using FreeCAD starting in 2020, I can't tell any major differences. The problems are the same they have ever been. It's only the renderer that got a little bit more "sexy", but that is just looks.
I'm self-taught with CAD, and have repeatedly tried and discarded FreeCAD for several years. (Tangent: perceived absence of a decent CAD solution in Linux is one of very few things keeping me using Windows.)
I recently happened upon a video which mostly changed my mind [0], in which someone successfully passed a Solidworks professional certification using FreeCAD. And to my eyes, their workflow was only rarely any worse than e.g. Fusion360, Solidworks, etc.
I've since been trialling FreeCAd via the 'bleeding edge' weekly development builds [1]... and it's not perfect, and it's a touch clunky in certain areas, but it's now more than usable. (In some areas, it's actually better than the competition I've tried, IMO - for example making and cutting threads.)
That is an interesting and important video, and I think it helps make the point that "commercial" CAD is often viewed through rather rose-tinted spectacles because FreeCAD's GUI has been unfriendly and obstinate. Beginner friendliness simply hasn't been on their radar until this point, because it would have been pointless to focus on it until TNP was mitigated to the level it now is.
I don't think FreeCAD is perfect, but I do think it's remarkable we have it at all.
Lots changed since 2020 in the current 1.0.2 release, including TNP mitigations and the core assembly workbench.
The 1.1 developer release (which is stable and useful and getting quite close to final release) contains further TNP mitigations; further improvements to the core assembly workbench; radically better lighting; datums have moved into the core; there's a way of enabling the advanced attachment mode in Part Design; compound body support in Part Design by default; significant comfort improvements in Sketcher, transparent previews, dragger gadgets and improved pattern tools in Part Design; support for external intersection geometry, Qt6 GUI improvements; lots of improvements to the Preferences panels, and that's before looking at FEM, BIM and CAM.
Oh and the Ondsel stuff — the web sharing service, its plugin and its headless worker support — is also under the control of the FreeCAD project, free of its AWS dependencies and being actively maintained.
It's still idiosyncratic but it goes way, way beyond looks. There was a big hump to get over between 0.21 and 1.0, re-engineering RealThunder's TNP mitigations to be more practical and adding the core Assembly workbench, but there's been enormous progress since.
HN's negativity around FreeCAD no longer astonishes me because I think HNers in general have a rather misbegotten sense of what GUI CAD even is, what its strengths are instead of just its weaknesses, and how much of a challenge something with FreeCAD's scope really is. I mean Dune3D is interesting but frustrating still, SALOME is interesting but has huge money behind it; FreeCAD is the sort of hard-won, low-governance, pure-open-source-no-corporate-bullshit project HNers should prefer. Is it the equal of commercial CAD packages? No it's not. It's a different beast and an absolute social good.
I agree with this. Per my comment just above, I've been one of the HNers recommending against FreeCAD for years, because that was my experience.
I've recently started to change that opinion; using the build I linked above, it's now pretty usable and competitive/usable for a hobbyist. I'm now considering it my first-line CAD package (until proven otherwise!)
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'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.
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.
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?
I have a lot of experience with openscad. I design a lot of small, simple-to-moderate parts. I want to use something like fusion instead, but the GUI learning curve is a huge blocker for me.
I'm not a CAD professional, I can't seem to find the time to watch hours of video to get the basics down. With code based CAD, the way to start is usually obvious. When I run into a blocker, I search online, find examples, and try them out. Then, crucially, I copy and paste code snippets into my design, and modify them, to solve my problem.
In a GUI cad tool, I find that I spend most of my time hunting for buttons in the UI, often finding UI layout discrepancies between my version and whatever video I found.
In code, I do have to repeatedly solve little trig or geometry problems, and I'm always aware that a constraint based GUI tool would eliminate that completely. But I always know that I can just spend five minutes with pencil and paper and get it done, whereas switching to fusion means adding an hour or more of work to multiple designs.
I really want to design more effectively, with better fillet flexibility. But for my simple tasks, the barrier to becoming productive in a GUI is just too high.
I believe the "command palette" in e.g. VS code solves this well, perhaps a GUI cad with that would be workable for me.
Maybe what would really help me, is a larger more complex project which I can develop over a longer time in fusion while I learn to use it. Too bad I don't have anything that naturally fits that bill.
To me it sounds like it would be worth it for you to learn the basics of Fusion or FreeCAD. You would probably quickly recover the hours spent on learning with increased productivity.
I recommend going through some basic tutorial (written or in video form) to build a simple part. The tutorial should teach view navigation, drawing and constraining a sketch, extruding or rotating it to create a 3D body, modifiying that with chamfers / fillets, creating sketches on top of that to add or cut away parts, add holes, create patterns from features. I don't think you need to learn surface modeling at this point. After that you should be good to go on your own projects. You will still need to look up how to do something (as you do now), but that will improve quickly.
I'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?
I recently used this 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
So the appeal for you, as the "user", is that you can easily customize the parameters which are made customizable by the designer and get a suitable model without requiring proprietary software (or any software at all). I can see the appeal of that.
But I assume the designer spent quite a lot of time, creating this in OpenSCAD and make it customizable. He was also restricted to making shapes which are easily described in OpenSCAD, where he might have gone for a more elaborate design if it was easy to do.
Agree with this. I've tried the various programmatic CAD options before, and creating initial shapes is relatively easy, but figuring out how to refer to parts of those subsequent shapes - to e.g. modify further, or build from, or connect to other shapes, is really complex and clunky.
Neither is 3D printing going mainstream nor do I see any reason why it would push people away from industry standard CAD software.
CAD is already complex. Why would giving those people an extremely underpowered programming language, which makes creating even the simplest 3D models a chore, cause change in the CAD world.
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.
Interesting. 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…
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.
If you look hard enough almost any 4 way rotation symmetry will result in a variation of swastika like shape. You would have to almost completely ban 4 way rotation symmetry to avoid it.
I personally find it unhealthy to actively search, extend and strengthen the association of hate symbols based on vague similarity out of context. Sure remember the crimes they have done and avoid the exact specific shape, proportions, color commonly used by the hate groups, but also take context into account. Don't promote them by giving them credit for things they didn't do. Don't let the hate groups win by allowing few dozen years of years of activity destroy thousands of years of cultural and language history and future for wide category of symbols and simplest geometric patterns. Don't erase words from common language. Don't let them make your life worse by self inflicted excessive censorship. Grow the good associations not the bad ones, dilute and take away the strength from hate groups instead of letting them take away common language from you. If you look at thousand year old budhist or ancient greek stone carving which uses one of the few dozen swastika variations and think those time traveling Nazis plastering their symbols all over the place they win.
When looking at children playing with paper pinwheel, is your first thought also they must be Nazi? When you look at cardboard box with 4 flaps overlapped on top of each other do you think Nazi?
With regards to other people speculation how this happened I doubt they intentionally tried to create a swastika, it just happens naturally when you use rotational symmetry. Looking at this logo I personally see the overall cross and spinning shape formed by positive space first. The image of swastika formed by negative space is kind of weak and clunky due to thickness mismatch created by curved rhombus. If they had used 4 overlapping squares or circles it would be more problematic, at that point a logo designer would likely stop and try to mixup things to get rid of it.
Personally 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.
Maybe 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?)
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/
Lego brick in build123d: https://build123d.readthedocs.io/en/latest/tutorial_lego.htm...
Gear in build123d: https://github.com/GarryBGoode/gggears
Hm, at least build123d (which I had never heard of, thanks!) can export STEP, which I believe is becoming a necessity if one wants to assemble real-world models with FreeCAD (and nicely also slicers are picking up support to it). I'm on the edge though if I'd really like a proper DSL instead of building it on top of Python, although I can see that too has its benefits (e.g. library access).
Does anyone have idea about the STEP export support status for KCL/µcad? To me it looks like KCL cannot, and I cannot find information on it about µcad. The one tool I'm familiar within this space is OpenSCAD and it cannot. While FreeCAD is able to (sometimes?) convert from STL to STEP, it seems actually working with such models in FreeCAD is quite compute-inefficient.
If you're talking about CAD in general I can see your point.
For FreeCAD specifically, there looks to be an OpenSCAD import process directly. I don't have experience with how it works, but that may be better than going through STL
I know the process is there, but I really, really doubt it does anything else than just uses OpenSCAD code to render the mesh, as FreeCAD can also deal with meshes. I think it would be pretty unlikely that the FreeCAD devs would have implemented such a rendering system based on OpenSCAD.
Converting from STL to STEP is essentially always a case-by-case thing.
If you import, sew, check geometry, refine, etc., you can eliminate unnecessary triangles in planar faces. But you can't magically make a 120-sided-polygon that should be a circle a circle; you're going to have to do that yourself.
Though Mark Ganson's MeshRemodel workbench looks interesting: https://github.com/mwganson/MeshRemodel
And FreeCAD is not the best tool for correcting broken meshes, which are commonplace. MeshLab and the vaguely-on-life-support AutoCAD MeshMixer are better at it.
STEP/IGES is as you say more or less essential if you want to work with code-CAD output in any other serious context. STL is not enough: it is like converting to JPEG in the middle of a photo editing flow, not at the end. It destroys information — in this case geometry.
You might find DeclaraCAD interesting.
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 :)
> There are people who've already tried :)
And they were never heard of, ever again? :-)
Don't they use their own kernel? What legal tape?
It makes LLMs stronger because code is something LLMs are good at.
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.
> 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).
Mostly.
I've still had several instances when drawing curved solids that the OpenCSG renderer worked well with (visually) but when it came to render-time, there was something wrong. It is very hard to debug things, or at least I found it so, when it goes wrong like that.
I 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.
They 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.
wow, this is really neat. I always noticed how, when panning around with ortho view, it didn't need to re-render
A viewer/preview is in development.
they got a grant for that. i couldn't find an english version though, sorry.
https://www.prototypefund.de/projects/microcad-viewer
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/
If you want a classical GUI based cad tool for 3D modelling, I'd suggest taking a look at solve space and dune3d
freecad with the new ui + its openscad integration is pretty good.
openscad in general is quite easy if you can functionally program
AFAIK 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.
As someone who has been using FreeCAD starting in 2020, I can't tell any major differences. The problems are the same they have ever been. It's only the renderer that got a little bit more "sexy", but that is just looks.
I'm self-taught with CAD, and have repeatedly tried and discarded FreeCAD for several years. (Tangent: perceived absence of a decent CAD solution in Linux is one of very few things keeping me using Windows.)
I recently happened upon a video which mostly changed my mind [0], in which someone successfully passed a Solidworks professional certification using FreeCAD. And to my eyes, their workflow was only rarely any worse than e.g. Fusion360, Solidworks, etc.
I've since been trialling FreeCAd via the 'bleeding edge' weekly development builds [1]... and it's not perfect, and it's a touch clunky in certain areas, but it's now more than usable. (In some areas, it's actually better than the competition I've tried, IMO - for example making and cutting threads.)
[0] https://www.youtube.com/watch?v=VEfNRST_3x8 [1] https://github.com/FreeCAD/FreeCAD/releases
That is an interesting and important video, and I think it helps make the point that "commercial" CAD is often viewed through rather rose-tinted spectacles because FreeCAD's GUI has been unfriendly and obstinate. Beginner friendliness simply hasn't been on their radar until this point, because it would have been pointless to focus on it until TNP was mitigated to the level it now is.
I don't think FreeCAD is perfect, but I do think it's remarkable we have it at all.
This is my understanding as well.
It's incorrect, then!
Lots changed since 2020 in the current 1.0.2 release, including TNP mitigations and the core assembly workbench.
The 1.1 developer release (which is stable and useful and getting quite close to final release) contains further TNP mitigations; further improvements to the core assembly workbench; radically better lighting; datums have moved into the core; there's a way of enabling the advanced attachment mode in Part Design; compound body support in Part Design by default; significant comfort improvements in Sketcher, transparent previews, dragger gadgets and improved pattern tools in Part Design; support for external intersection geometry, Qt6 GUI improvements; lots of improvements to the Preferences panels, and that's before looking at FEM, BIM and CAM.
Oh and the Ondsel stuff — the web sharing service, its plugin and its headless worker support — is also under the control of the FreeCAD project, free of its AWS dependencies and being actively maintained.
It's still idiosyncratic but it goes way, way beyond looks. There was a big hump to get over between 0.21 and 1.0, re-engineering RealThunder's TNP mitigations to be more practical and adding the core Assembly workbench, but there's been enormous progress since.
HN's negativity around FreeCAD no longer astonishes me because I think HNers in general have a rather misbegotten sense of what GUI CAD even is, what its strengths are instead of just its weaknesses, and how much of a challenge something with FreeCAD's scope really is. I mean Dune3D is interesting but frustrating still, SALOME is interesting but has huge money behind it; FreeCAD is the sort of hard-won, low-governance, pure-open-source-no-corporate-bullshit project HNers should prefer. Is it the equal of commercial CAD packages? No it's not. It's a different beast and an absolute social good.
I agree with this. Per my comment just above, I've been one of the HNers recommending against FreeCAD for years, because that was my experience.
I've recently started to change that opinion; using the build I linked above, it's now pretty usable and competitive/usable for a hobbyist. I'm now considering it my first-line CAD package (until proven otherwise!)
Hm, I may have to reconsider the amoral recommendation of pirate SOLIDWORKS
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'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.
I know that FreeCAD has architectural support.
I think it's called BIM, which tells you how well-informed on the subject I am (not).
Then build123d might be for you.
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!
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.
While 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.
Half the web uses PHP. Nothing wrong with PHP for web work, and absolutely nothing bad about the site is related to its use of PHP.
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.
>https://microcad.xyz/?brx_pyuqqz%5B%5D=code&brx_pyuqqz%5B%5D...
>brx_pyuqqz
That's certainly an array name.
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?
Could you please make the book into a PDF?
Why not openscad
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/
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
Nice with another alternative. I have been using shapescript, which I think is easier than openscad, and available on ios. https://shapescript.info/
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?
I have a lot of experience with openscad. I design a lot of small, simple-to-moderate parts. I want to use something like fusion instead, but the GUI learning curve is a huge blocker for me.
I'm not a CAD professional, I can't seem to find the time to watch hours of video to get the basics down. With code based CAD, the way to start is usually obvious. When I run into a blocker, I search online, find examples, and try them out. Then, crucially, I copy and paste code snippets into my design, and modify them, to solve my problem.
In a GUI cad tool, I find that I spend most of my time hunting for buttons in the UI, often finding UI layout discrepancies between my version and whatever video I found.
In code, I do have to repeatedly solve little trig or geometry problems, and I'm always aware that a constraint based GUI tool would eliminate that completely. But I always know that I can just spend five minutes with pencil and paper and get it done, whereas switching to fusion means adding an hour or more of work to multiple designs.
I really want to design more effectively, with better fillet flexibility. But for my simple tasks, the barrier to becoming productive in a GUI is just too high.
I believe the "command palette" in e.g. VS code solves this well, perhaps a GUI cad with that would be workable for me.
Maybe what would really help me, is a larger more complex project which I can develop over a longer time in fusion while I learn to use it. Too bad I don't have anything that naturally fits that bill.
To me it sounds like it would be worth it for you to learn the basics of Fusion or FreeCAD. You would probably quickly recover the hours spent on learning with increased productivity.
I recommend going through some basic tutorial (written or in video form) to build a simple part. The tutorial should teach view navigation, drawing and constraining a sketch, extruding or rotating it to create a 3D body, modifiying that with chamfers / fillets, creating sketches on top of that to add or cut away parts, add holes, create patterns from features. I don't think you need to learn surface modeling at this point. After that you should be good to go on your own projects. You will still need to look up how to do something (as you do now), but that will improve quickly.
> In code, I do have to repeatedly solve little trig or geometry problems,
BOSL2!
I'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?
I recently used this 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
So the appeal for you, as the "user", is that you can easily customize the parameters which are made customizable by the designer and get a suitable model without requiring proprietary software (or any software at all). I can see the appeal of that.
But I assume the designer spent quite a lot of time, creating this in OpenSCAD and make it customizable. He was also restricted to making shapes which are easily described in OpenSCAD, where he might have gone for a more elaborate design if it was easy to do.
Agree with this. I've tried the various programmatic CAD options before, and creating initial shapes is relatively easy, but figuring out how to refer to parts of those subsequent shapes - to e.g. modify further, or build from, or connect to other shapes, is really complex and clunky.
Well, there's OpenSCAD already, and for folks who like Python:
https://pythonscad.org/
Neither is 3D printing going mainstream nor do I see any reason why it would push people away from industry standard CAD software.
CAD is already complex. Why would giving those people an extremely underpowered programming language, which makes creating even the simplest 3D models a chore, cause change in the CAD world.
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.
Interesting. 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…
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.
Looks like a promising alternative to OpenSCAD.
Although am I the only one to notice the swastika in their logo?
If you look hard enough almost any 4 way rotation symmetry will result in a variation of swastika like shape. You would have to almost completely ban 4 way rotation symmetry to avoid it.
I personally find it unhealthy to actively search, extend and strengthen the association of hate symbols based on vague similarity out of context. Sure remember the crimes they have done and avoid the exact specific shape, proportions, color commonly used by the hate groups, but also take context into account. Don't promote them by giving them credit for things they didn't do. Don't let the hate groups win by allowing few dozen years of years of activity destroy thousands of years of cultural and language history and future for wide category of symbols and simplest geometric patterns. Don't erase words from common language. Don't let them make your life worse by self inflicted excessive censorship. Grow the good associations not the bad ones, dilute and take away the strength from hate groups instead of letting them take away common language from you. If you look at thousand year old budhist or ancient greek stone carving which uses one of the few dozen swastika variations and think those time traveling Nazis plastering their symbols all over the place they win.
When looking at children playing with paper pinwheel, is your first thought also they must be Nazi? When you look at cardboard box with 4 flaps overlapped on top of each other do you think Nazi?
With regards to other people speculation how this happened I doubt they intentionally tried to create a swastika, it just happens naturally when you use rotational symmetry. Looking at this logo I personally see the overall cross and spinning shape formed by positive space first. The image of swastika formed by negative space is kind of weak and clunky due to thickness mismatch created by curved rhombus. If they had used 4 overlapping squares or circles it would be more problematic, at that point a logo designer would likely stop and try to mixup things to get rid of it.
If you see a swastika there, do you also see it in the Python logo?
Personally 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.
Python logo actually has 3/4 of swastika. It's only one the vertical line that is missing.
> 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.
It's probably just AI generated.
Maybe 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?)