Rendered at 19:59:46 GMT+0000 (Coordinated Universal Time) with Cloudflare Workers.
gcr 17 hours ago [-]
Here's an example!
I recently used their sister library (build123d, same devs) to build a rotary slide rule bracelet for multiplying three-digit numbers. It was a great experience and wouldn't generally be easy to do with Fusion 360. My bracelet gets quite a lot of comments when I wear it in public. :-)
build123d is quite different stylistically from cadquery, but this should give you the flavor of programming-oriented CAD at least.
ashton314 44 seconds ago [-]
[delayed]
tda 13 hours ago [-]
Nice model, but also a great notebook. Really like this "literal coding" style for CAD in a notebook. I still sometimes prefer GUI cad for simple stuff, CadQuery is not always that easy to write. But when iterating over something complicated, the notebook style development is really nice. And being to compose a model using functions and iterators instead of the clumsy GUI workflows is a godsend. Also time I tried Opus was more helpful and capable than I would have thought. Not good enough to one-shot yet, but it is very helpful nonetheless
fainpul 8 hours ago [-]
> wouldn't generally be easy to do with Fusion 360
You would create the numbers and marks in a vector drawing program (Inkscape, Affinity Studio, Illustrator) and import that into Fusion.
itsdesmond 4 hours ago [-]
Sure but like, that is specifically NOT easier if you need to iterate once initial implementation is complete. At least in my opinion as an industrial designer turned software engineer, which I only mention to assert I’m experienced in both sets of tools.
fainpul 3 hours ago [-]
True, the logarithmic scale lends itself to programmatic creation. I just wanted to show that the wrapping part is easy. Actually much easier – that code looks non-trivial.
aaronbrethorst 16 hours ago [-]
how does it work? (the multiplication)
Loic 14 hours ago [-]
Becaus ln(A*B) = ln(A)+ln(B), you need 2 sliding elements and you work in logarithmic scale. Look at "slide rule"[0], this is really nice stuff.
Are you asking how the bracelet multiplies two numbers? It's the same idea used by slide rules -- you take the logarithm of the two numbers, then add the logarithms instead of multiplying -- same result, with somewhat less accuracy depending on available decimal places.
This method was widely used in the pre-computer era to save time in calculations. Tables of logarithms (and slide rules) were a mathematician's best friend.
acidtechno303 8 hours ago [-]
lol, as an engineer I'd never considered that other disciplines used slide rules voraciously
15 hours ago [-]
analog31 27 minutes ago [-]
This will be interesting to try. I'm not an engineer. I decided to try "vibe coding" a CAD model, by letting AI generate Python code within VS Code. I was able to make a primitive but useful part, and sent it off to Xometry. Just a "bracket with holes" kind of thing for a prototype.
It was fun, but I still appreciate what our mechanical designers can do.
willrshansen 5 hours ago [-]
Big fan overall. Designed a tension sensitive winch with this a few years back.
Doing CAD with code seems like obviously the right move to me. The ability to just write new functions in python and do version control with git are super powerful.
The big thing that struck me as innovative with CadQuery is the design intent query part. Selecting model geometry by relation to other geometry is way more resilient to changes ealier in the model's history than the regular "that point right there" you get with just clicking a point.
That the developers acknowledge that seeing the model at various steps in the script is important, and so have the CQ-editor, is also a point in their favour.
I do have a gripe though:
Having to keep all the geometry selection stuff relating to the model in my head is hard. I want gui tools that write code.
Like if I have a complex model, and variables assigned to various parts of the geometry. I want to be able to see that geometry highlighted and labeled, so I know what's easily selectable, and I want to be able to click buttons based on my design intent and get immediate visual feedback, and have each of those button presses added as code as I do them.
Each of those lines should be a gui tool interaction that generates that line of code.
oasisbob 5 minutes ago [-]
I would be curious to hear more about what makes a winch tension sensitive.
Would it limit and hold a maximum force? Slip beyond a certain limit?
ethan_smith 5 hours ago [-]
The OCP CAD Viewer extension for VS Code (works with both CadQuery and build123d) gets partway there - you can click on faces/edges in the 3D view and it shows you the selection info you'd need for your code. It's not full "click to generate code" but it helps a lot with the "keeping geometry in my head" problem. Still a long way from the OnShape FeatureScript model where GUI and code are truly bidirectional though.
hgoel 17 hours ago [-]
CadQuery and build123d have been very handy for prototyping stuff for 3d printing. AI still isn't quite good enough to generate correct scripts, but AI autocomplete at least helps with putting together small snippets.
My last project involved making a cosplay helmet. I modeled the shell in blender, it was a low poly design, so I exported it to an OBJ, then put together some Python to load the OBJ, give the triangles some configurable thickness etc. Then I used it to explore how to print the helmet in such a way that the outer surface would be too clean to tell it's FDM printed, without needing to do any sanding.
Initially I explored having cadquery put a number on the back of each triangle and I'd assemble it like a puzzle, but that didn't work out. Eventually I figured out how to cut it up into parts that would also eliminate the need for painting and outer surfaces would be clean, and because it was in code, changing which part a triangle belonged to was a matter of moving the corresponding index into another list.
I probably could've managed it all in blender too, but being much more comfortable with code, it was easier for me to play with normals and manually turning each piece into a solid.
I also go for it for functional designs because, again, tweaking code is more comfortable to me than dealing with constraints and sketches and multiple planes in, say, FreeCAD.
awinter-py 35 minutes ago [-]
yeah -- have been playing with this as well, ai's spatial reasoning is not quite there yet but with precise construction instructions it can often do the job
for shapes that are hard to print with a traditional slicer, LLMs are also surprisingly good at generating gcode with fullcontrolxyz if you're specific
maouida 11 hours ago [-]
CadQuery was an inspiration when I built FluidCAD. I wanted the workflow to be as close to traditional CAD as possible with more interactive UI.
This looks amazing. I'm going to give this a try later.
If I have a DXF or something of the outline of something (a PCB in this case) can I import it and build around it somehow?
maouida 8 hours ago [-]
Only step import at the moment. I'll add svg next.
junon 7 hours ago [-]
My particular immediate use case would be to export the board outline and mounting holes from a kicad project (SVG or DXF, whatever works) and build a chassis for it. Obviously I can do this in freecad but I've been looking for an intuitive cad-as-code system to check into git instead. So this would be awesome!
WillAdams 27 minutes ago [-]
While not code as CAD, Dune 3D has the creation of enclosures for electronics projects as its _raison d’être_, and has a facility for Python scripting:
Replicad is designed primarily to be used as a library with the web editor as a helper.
FluidCAD is designed to be used as full CAD package code + UI. I've outlined some of my motives in recent post: https://news.ycombinator.com/item?id=47721997
WillAdams 9 hours ago [-]
It was a lot more interesting to me back when it first launched and it was a FreeCAD workbench.
There are a lot of tools in this space, esp. these days when "Vibe Coding" allows folks to knock one out w/ a prompt. Most folks jus use OpenSCAD which with its large user base and weaknesses which are (mostly) not exposed by 3D printing is great, so long as what one wants to model is easily described using mathematics/programming techniques which are familiar to the user.
I'd really like to see an interactive opensource project follow OnShape's lead where a scripting language (for OS, FeatureScript) is used as a wrapper around the geometry kernel, then the graphical UI creates the model using that language, and one can always inspect the resultant code. It seems to me that this <i>should</i> be workable given the observation:
>Parametric CAD, in my view, is a perfect example of "visual programming", <BR>
>you have variables, iteration/patterning reducing repetition, composability <BR>
>of objects/sketches again reducing repetition, modularity of design though a<BR>
>hierarchy of assemblies. The alignment between programming principles and <BR>
>CAD modelling principles, while not immediately obvious, are very much <BR>
>there. An elegantly designed CAD model is just as beautiful (in its construction) <BR>
>as elegantly written code.
but these days, I'm mostly using Open(Python)SCAD (which is in the process of getting merged in to the main project).
ozmaverick72 18 hours ago [-]
Interesting. I have played with OpenScad a bit. This looks similar - i guess the difference is the syntax is python - any other major differences
gcr 16 hours ago [-]
OpenSCAD is all triangles and vertices. Fillets are difficult to do. Outputting circles/spheres generally requires you to for-loop over vertices a lot.
Libraries like build123d and cadquery use OpenCASCADE, a boundary representation kernel. You think in terms of the enclosed solid and perform operations - boolean add/subtract, fillet/chamfer, stamp text, etc - that return a new solid.
7bees 14 hours ago [-]
I'm not sure I understand your comment; OpenSCAD has functions like sphere(), cylinder(), etc. Most OpenSCAD models I have seen are built up primarily from solid primitives combined using boolean operations, just as you describe for the other tools.
OpenSCAD works natively with triangle meshes. sphere() will create a spherical triangle mesh.
These libraries on the other hand can natively represent a sphere for instance. This means that during CAD-ing you don't need to worry about resolution, that's a consideration for export only.
flowerbreeze 12 hours ago [-]
Do you mean that OpenScad performs boolean/other operations on triangle meshes, but these libraries don't until output? So they might instead use curved surfaces/edges etc as outputs for operations and only convert to triangles for output or export at the very end?
rowanG077 19 minutes ago [-]
In professional CAD systems, geometry is not stored as triangle meshes but as mathematically defined surfaces (such as parametric and NURBS surfaces).
Triangle meshes are only generated as approximations for rendering.
This is analogous to vector graphics (SVG/EPS) versus raster images (PNG/JPG).
Any serious manufacturing will work require a STEP (or something equivalent) which stores these parametric surfaces rather than a mesh.
Karliss 9 hours ago [-]
It isn't even necessary to create triangle meshes during export. You can export as step files. It is a commonly used brep based file format supported by almost any "proper" CAD software. Triangle mesh based modelers can't easily export good step files because they don't operate at that level of abstraction.
Some of the differences may be in when you are trying to reference a face/edge to build off of, not just about the primitive function being used.
ur-whale 4 hours ago [-]
> I'm not sure I understand your comment
Try to do the following with OpenSCAD:
1. put a sphere and a torus somewhat close to each other
2. find the shortest segment between the two surfaces
3. place an infinite cylinder whose axis is aligned with the segment you just found
4. fillet the cylinder with both the torus and the sphere along its intersection curve with each surface
This is very, very hard to do with OpenSCAD.
somat 9 hours ago [-]
While true your argument is weak, for example in pov-ray the shapes are pure exact mathematical concepts. But nobody is saying how great this is for 3d printing or general cad work because it's not. The real key benefit from these programs is the interchange format they can generate, something you can feed to a machine, this prevents it from ending up like pov-ray, a terminal process only fit for generating pictures. Fillets are difficult to do in openscsd because fillets are difficult to do in general. What your argument probably should have been is that if openscad had chosen a geometry kernel where fillets were already solved it could then do fillets. Which is the sort of obvious tautology that helps no one.
Now I am off to see if anyone has ever built an export plugin for pov-sdl, either a 3d rasterizer(g-code slicer) for 3d printing, or a boundary layer mesh generator for import into another program. language wise it is probably equivalent to or better than the openscad sdl,
One subtle advantage to using python as the sdl is that it gets access to the vast corpus of python modules out there. Most of which are probably useless. but one thing I want to try is to see if I can use sympy to define a more declarative style of constraint.
Oh boy. The major difference is coordinate transformations, global/local/face. OpenScad basically leaves you alone with math you should figure out on your own. Also it's math heavy for all other stuff, for example tangents, smooth connections, intersection coordinates, etc.
DrNefario 18 hours ago [-]
CadQuery can export STEP files, and is overall much nicer to use in my opinion.
Whether or no that will be useful/editable will be determined by what sort of objects and modeling approaches were used --- it's pretty easy to make a file which results in a nightmarish triangle mesh representation which is a nightmare to edit.
xrd 17 hours ago [-]
I've been using Gemini to generate openscad programs for use with my 3d printer. Is cadquery a better option I wonder?
Why do you say it is better than openscad?
xrd 17 hours ago [-]
After reading some of the docs it does look fun.
Python, so leverage your Python skills and existing libraries.
A nice GUI so you can build, view, tweak, review, iterate.
Will be a nice new toy...
ifloop 6 hours ago [-]
I have written a lot of openSCAD code, I learned about BOSL(2) and wrote even more, I tried getting into build123d (and failed, as running openSCAD/BOSL2 is way too comfortable to leave it)... the only downside is that AI fails horribly with those libs and frameworks.
I think I heard of cadquery before and decided against it, in favor of build123d.
edg5000 6 hours ago [-]
Using a coding CLI I was able to create a computed shape would otherwise by incredibly challenging to make (impossible in parametric CAD GUIs at least) LLMs + CadQuery is a powerful combo, this will be more and more common I think. It's just too powerful to ignore.
jetter 12 hours ago [-]
If you like this, you should definitely check modelrift.com which allows to build awesome cad models thanks to OpenSCAD and smart AI assistant.
As someone who uses JavaScript/TypeScript, I love Replicad. It is super easy to create and share parametric models from their online editor without any accounts.
I keep my models on github[0]. Disclaimer, they are pretty niche things I needed around the house.
I used cadquery to programmatically generate 3D models for an electronics library for a 1000 or so parts that only differ slightly in their measurements. It literally saved me days of manual work.
lutusp 14 hours ago [-]
I create CAD instructional videos based on SolveSpace, and I sometimes try to get people interested in CADQuery as well, but many people interested in CAD will learn SolveSpace or another similar design program, but don't have the programming background for CADQuery.
Too bad -- in many ways, for many projects, CADQuery gives better results, especially if a single design needs to be recreated in a range of sizes.
WillAdams 9 hours ago [-]
Where are your CAD instructional videos available?
I'd be very interested if one of them compares/contrasts SolveSpace and CADQuery.
ncrmro 9 hours ago [-]
How does this compare to anchorcad?
ponyous 12 hours ago [-]
Another library I have to integrate and benchmark against OpenSCAD for my AI SaaS[0]. I am really curious how constructive solid geometry compares to sketching and extruding that CadQuery is build on.
Anyone curious in the writeup? I have a pretty good harness for evaluating 3d generation performance.
I'm working on a CAD kernel in Rust with a frontend either as a Blender plugin or a Blender fork (leaning towards fork at this point) It's not at all ready but I have reached first part status (before going back and rewriting a large chunk of the kernel)
fxff 11 hours ago [-]
At the time of writing this there are 24 comments, of which 4 promote alternatives. I feel that recently the number of shameless plugs and check-out-my-SaaS's surged drastically
I believe that in general the comments pointing to alternatives and the shameless plugs are useful in these HN threads, even when their connection with the discussed subject is tenuous.
Such comments have become more useful recently, as a form of curated search, when standard Internet searching has started to provide an avalanche of garbage links, to Web pages that only summarize or repeat the primary sources, frequently with errors and failing to point to the original sources.
Even if inspecting the suggested alternatives may show them as worthless, finding this may still save time over using a search engine and having to filter an order of magnitude more misleading links.
Those not interested in such comments can easily skip over them and not visit any suggested links.
When I visit Wikipedia pages, the most frequent reason is for their lists of useful links. Similarly, when reading a HN comment thread, I appreciate links to more or less related content.
Today I value such sources far more than a few decades ago, when Google could easily and effortlessly find any desired information, while today you must struggle with any search engine, as they will provide you almost any kind of information, except that requested by you.
maouida 9 hours ago [-]
+1 for what adrian_b answered above.
All the promotion are for free open source projects and none of them is profitable.
I think this is totally fine, people like to know about alternatives and all these tools are for the purpose of learning and making parametric CAD more approachable to users. They have same goal with different implementation.
I recently used their sister library (build123d, same devs) to build a rotary slide rule bracelet for multiplying three-digit numbers. It was a great experience and wouldn't generally be easy to do with Fusion 360. My bracelet gets quite a lot of comments when I wear it in public. :-)
Here's an IPython notebook with lots of pictures so you can see how the different operations come together: https://github.com/gcr/sliderule-bracelet/blob/main/version-...
build123d is quite different stylistically from cadquery, but this should give you the flavor of programming-oriented CAD at least.
Actually...
https://www.youtube.com/watch?v=DNiQJyRTs50
You would create the numbers and marks in a vector drawing program (Inkscape, Affinity Studio, Illustrator) and import that into Fusion.
[0]: https://en.wikipedia.org/wiki/Slide_rule
This method was widely used in the pre-computer era to save time in calculations. Tables of logarithms (and slide rules) were a mathematician's best friend.
It was fun, but I still appreciate what our mechanical designers can do.
Doing CAD with code seems like obviously the right move to me. The ability to just write new functions in python and do version control with git are super powerful.
The big thing that struck me as innovative with CadQuery is the design intent query part. Selecting model geometry by relation to other geometry is way more resilient to changes ealier in the model's history than the regular "that point right there" you get with just clicking a point.
That the developers acknowledge that seeing the model at various steps in the script is important, and so have the CQ-editor, is also a point in their favour.
I do have a gripe though:
Having to keep all the geometry selection stuff relating to the model in my head is hard. I want gui tools that write code.
Like if I have a complex model, and variables assigned to various parts of the geometry. I want to be able to see that geometry highlighted and labeled, so I know what's easily selectable, and I want to be able to click buttons based on my design intent and get immediate visual feedback, and have each of those button presses added as code as I do them.
Look at this example model: https://cadquery.readthedocs.io/en/latest/examples.html#a-pa...
This bit that selects some points?
Each of those lines should be a gui tool interaction that generates that line of code.Would it limit and hold a maximum force? Slip beyond a certain limit?
My last project involved making a cosplay helmet. I modeled the shell in blender, it was a low poly design, so I exported it to an OBJ, then put together some Python to load the OBJ, give the triangles some configurable thickness etc. Then I used it to explore how to print the helmet in such a way that the outer surface would be too clean to tell it's FDM printed, without needing to do any sanding.
Initially I explored having cadquery put a number on the back of each triangle and I'd assemble it like a puzzle, but that didn't work out. Eventually I figured out how to cut it up into parts that would also eliminate the need for painting and outer surfaces would be clean, and because it was in code, changing which part a triangle belonged to was a matter of moving the corresponding index into another list.
I probably could've managed it all in blender too, but being much more comfortable with code, it was easier for me to play with normals and manually turning each piece into a solid.
I also go for it for functional designs because, again, tweaking code is more comfortable to me than dealing with constraints and sketches and multiple planes in, say, FreeCAD.
for shapes that are hard to print with a traditional slicer, LLMs are also surprisingly good at generating gcode with fullcontrolxyz if you're specific
https://fluidcad.io
If I have a DXF or something of the outline of something (a PCB in this case) can I import it and build around it somehow?
https://docs.dune3d.org/en/latest/python.html
Previous discussions:
https://news.ycombinator.com/item?id=24520014 (6 years, 49 comments)
https://news.ycombinator.com/item?id=30232344 (4 years, 43 comments)
https://news.ycombinator.com/item?id=30219940 (on Hackaday, 4 years, 28 comments)
https://news.ycombinator.com/item?id=17038257 (8 years, 16 comments)
https://news.ycombinator.com/item?id=28083578 (a Show HN from 5 years ago w/ 1 comment)
There are a lot of tools in this space, esp. these days when "Vibe Coding" allows folks to knock one out w/ a prompt. Most folks jus use OpenSCAD which with its large user base and weaknesses which are (mostly) not exposed by 3D printing is great, so long as what one wants to model is easily described using mathematics/programming techniques which are familiar to the user.
I'd really like to see an interactive opensource project follow OnShape's lead where a scripting language (for OS, FeatureScript) is used as a wrapper around the geometry kernel, then the graphical UI creates the model using that language, and one can always inspect the resultant code. It seems to me that this <i>should</i> be workable given the observation:
https://news.ycombinator.com/item?id=31471109
>Parametric CAD, in my view, is a perfect example of "visual programming", <BR> >you have variables, iteration/patterning reducing repetition, composability <BR> >of objects/sketches again reducing repetition, modularity of design though a<BR> >hierarchy of assemblies. The alignment between programming principles and <BR> >CAD modelling principles, while not immediately obvious, are very much <BR> >there. An elegantly designed CAD model is just as beautiful (in its construction) <BR> >as elegantly written code.
but these days, I'm mostly using Open(Python)SCAD (which is in the process of getting merged in to the main project).
Libraries like build123d and cadquery use OpenCASCADE, a boundary representation kernel. You think in terms of the enclosed solid and perform operations - boolean add/subtract, fillet/chamfer, stamp text, etc - that return a new solid.
https://en.wikibooks.org/w/index.php?title=OpenSCAD_User_Man...
These libraries on the other hand can natively represent a sphere for instance. This means that during CAD-ing you don't need to worry about resolution, that's a consideration for export only.
Any serious manufacturing will work require a STEP (or something equivalent) which stores these parametric surfaces rather than a mesh.
Some of the differences may be in when you are trying to reference a face/edge to build off of, not just about the primitive function being used.
Try to do the following with OpenSCAD:
This is very, very hard to do with OpenSCAD.Now I am off to see if anyone has ever built an export plugin for pov-sdl, either a 3d rasterizer(g-code slicer) for 3d printing, or a boundary layer mesh generator for import into another program. language wise it is probably equivalent to or better than the openscad sdl,
One subtle advantage to using python as the sdl is that it gets access to the vast corpus of python modules out there. Most of which are probably useless. but one thing I want to try is to see if I can use sympy to define a more declarative style of constraint.
Why do you say it is better than openscad?
Python, so leverage your Python skills and existing libraries.
A nice GUI so you can build, view, tweak, review, iterate.
Will be a nice new toy...
I think I heard of cadquery before and decided against it, in favor of build123d.
Community built examples: https://modelrift.com/models
Anyone has used it?
I keep my models on github[0]. Disclaimer, they are pretty niche things I needed around the house.
[0] https://github.com/Stanko/3d-cad-models
I'd be very interested if one of them compares/contrasts SolveSpace and CADQuery.
Anyone curious in the writeup? I have a pretty good harness for evaluating 3d generation performance.
[0]: https://grandpacad.com
https://github.com/ginkgo/trackball/
I'm working on a CAD kernel in Rust with a frontend either as a Blender plugin or a Blender fork (leaning towards fork at this point) It's not at all ready but I have reached first part status (before going back and rewriting a large chunk of the kernel)
https://news.ycombinator.com/item?id=47803846 https://news.ycombinator.com/item?id=47803475 https://news.ycombinator.com/item?id=47802988 https://news.ycombinator.com/item?id=47803416
Such comments have become more useful recently, as a form of curated search, when standard Internet searching has started to provide an avalanche of garbage links, to Web pages that only summarize or repeat the primary sources, frequently with errors and failing to point to the original sources.
Even if inspecting the suggested alternatives may show them as worthless, finding this may still save time over using a search engine and having to filter an order of magnitude more misleading links.
Those not interested in such comments can easily skip over them and not visit any suggested links.
When I visit Wikipedia pages, the most frequent reason is for their lists of useful links. Similarly, when reading a HN comment thread, I appreciate links to more or less related content.
Today I value such sources far more than a few decades ago, when Google could easily and effortlessly find any desired information, while today you must struggle with any search engine, as they will provide you almost any kind of information, except that requested by you.