10 ms·
OpenSCAD is kinda neat
- ai-christianson 10mo agoIs OpenSCAD still being maintained?
- aeonik 10mo agoYes. https://github.com/openscad/openscad https://github.com/openscad/openscad
- bdcravens 10mo agoIt's worth noting they haven't had a new "release" in 4 1/2 years, so you'll have to build it yourself or download a development snapshot https://openscad.org/downloads.html#snapshots https://openscad.org/downloads.html#snapshots
- aeonik 10mo agoI totally forgot about this. I build from git using the AUR.
- starkparker 10mo agoMore usefully, https://github.com/openscad/openscad/issues/3640 https://github.com/openscad/openscad/issues/3640
- c0nsumer 10mo agoThe last release was 2021.01 but the GitHub repo seems to be recently updated. So I'd say... Maybe? That said, there are often times software gets so stable that not having a new release for years is fine. Maybe this is one of them? (I'm very new to OpenSCAD so I haven't run into bugs yet... But maybe it's pretty solid?)
- crazysim 10mo agoApparently the nightlies are the one to use. At least, they build it for Apple Silicon in those.
- floating-io 10mo agoYes. The "official release" is just so old as to be useless at this point. They should either update it or take it down and point people at github or something, IMO. I use the latest version all the time. The newer renderer ("manifold", IIRC) is much faster, and there are newer facilities that make it possible to build 3MF files containing multiple objects for multi-color printing, though that takes a bit of thought to do correctly.
- MattRix 10mo agoYes everything this person said is correct. The Manifold backend is no joke, probably 100x faster. To do multi-color printing it’s pretty easy now, just turn on the poorly named feature in preferences called “lazy-unions”. This will make it so that each top level object in your file gets exported as a separate subobject in the 3mf file.
- MattRix 10mo agoYes, but the main downloads on the site are very old for some reason. Just get the nightly version instead, and then in Preferences -> Advanced -> Backend change it to “Manifold”. It will make your models “render” 10x faster (or more!).
- overtone1000 10mo agoI completely agree! https://overdesigned.org/shhh-dont-move-it-cant-see-us-if-we-dont-move/ https://overdesigned.org/shhh-dont-move-it-cant-see-us-if-we...
- convolvatron 10mo agoI love the model, it's nice to be able to generate things parametrically instead of grabbing knots with the mouse. so I use scad pretty often. but it has real problems - the language is weird and unfortunate. not anything super fatal, just the obvious product of evolution that would be more cohesive if it were architected wholesale epsilons are really unfortunate. you have to expect that after getting what you want in the whole, you're going to have to scan over the whole thing and look for cracks or collision where there shouldn't be performance is quite sad. here you are happy going back and forth between the view and text windows, but as you go on, it starts taking .. minutes.. to update the view once you have a reasonably complicated geometry high-level operators would also be nice. I made the mistake of using a thread library once, not only did that make my model unrenderable, there was so much noise in the model and the manufacturing process I had to make 3 expensive test prints in sintered nylon to get the fit right. (I'm thinking an annotation on a cylinder that says 'standard 1mm thread')
- MattRix 10mo agoIt actually renders things incredibly fast if you get the nightly version and set the backend to Manifold. It is probably 100x faster (!!). In fact it renders so fast that I put a render() command at the top of my hierarchy so that everything just renders all the time, it’s faster and more performant. I make incredibly complex models with it too, with hundreds of holes, complex svg files with text in them, etc.
- WillAdams 10mo ago
- bradfitz 10mo agoI find myself using OpenSCAD regularly to 3D print little things for the house. (Most recently: hooks to attach Christmas lights to our roof deck's glass walls) And when something gets too trick, ChatGPT is amazing at writing in it. Often it nails the whole design in the first try, like https://bsky.app/profile/bradfitz.com/post/3maelwomyw22n https://bsky.app/profile/bradfitz.com/post/3maelwomyw22n to mask off certain Raspberry Pi pins to make reassembly of projects easier later.
- jasonthorsness 10mo agoOpenSCAD is great! I used it to create a bunch of things to cut on a CNC router over the years. Best achievements were a scale model of Mount Rainier and some one-piece picture frames with text cut into them.
- charlie-83 10mo agoJust started using OpenSCAD recently and love it. While most CAD tools have a million features to learn, OpenSCAD is completely described by a cheat sheet you could print on a piece of A4 (like most programming languages). I would really recommend using the git master than the latest release though. The last release was 2021 but they are still actively working on it and it's much faster now. I also have to recommend the BOSL2 library which means you don't have to implement all of those one million features from typical CAD software yourself. Its definitely got a bit of a learning curve but the fact that you can always default back to vanilla OpenSCAD and that you can actually see how stuff is implemented makes it much more satisfying to me to learn than learning what all the traditional CAD GUI buttons do.
- porkloin 10mo agoCommenting off of you since I wrote all of this and then realized it's basically exactly what you're saying. But to +1 everything you just said in my own words: I love OpenSCAD. I've been 3D printing for a while, but I never really got to a place where I could design interesting parts until I started to get the precision of doing models in code. Sometimes it is slower, for sure. Every time I've used as a CAD GUI program I would get to this point where I would need to alter a single dimension by 0.25mm and realize that _all_ of my fastener holes, cutouts, etc have to be nudged with the keyboard or mouse to accommodate it. The input devices lack precision for that kind of task, and having to repeat the operation dozens of times (or bulk select) gave me a terrible sinking feeling, and I'd often just step away and give up on the design at that point out of frustration. I try to approach everything in OpensSCAD in a way that means I never have to experience that feeling again. I will also say that doing everything from scratch in OpenSCAD would be it's own special kind of hell. Libraries like [BOSL2](https://github.com/BelfrySCAD/BOSL2 https://github.com/BelfrySCAD/BOSL2) provide a good set of core ideas and preferences that help set you on a good path. A good example: BOSL2 shapes tend to have a "center origin" by default, which is different than the OpenSCAD default, but makes doing transforms later way easier. Anyway, happy to see OpenSCAD getting some attention here :)
- s5300 10mo ago[dead]
- Robdel12 10mo agoOpenSCAD has become my go to with my 3-D printer for dumb little things. And the best part is LLMs are getting decent / pretty good with it! My favorite thing I’ve printed is a little downsize coupler for the cool shirt system I built for my spec miata. It’s realllly silly & small thing, but it saved me!
- yehoshuapw 10mo agoworth also looking at cadquery, build123d and similar https://github.com/gumyr/build123d https://github.com/gumyr/build123d
- deleted 10mo ago[deleted]
- anfractuosity 10mo agoIt's super useful, been using with my 3D printer to print things such as an adapter to connect a Canon EF lens to night vision tube and parts to link motorised linear stages together. Currently I'm playing with a gear library which is part of BOSL2 (https://github.com/BelfrySCAD/BOSL2/wiki/gears.scad https://github.com/BelfrySCAD/BOSL2/wiki/gears.scad), to make something to rotate a polariser in my microscope.
- constantcrying 10mo agoOpenSCAD is very cool, but completely unusable once you understand how great state of the art CAD Software like Fusion or Onshape is. The big distinction is that those work implicitly, while OpenSCAD requires you to be implicit.
- d_silin 10mo agoexcplicitely, you mean?
- WillAdams 10mo agoThe thing is, I've crashed-and-burned every time I've tried to do traditional 3D CAD --- the closest I've come to success was making it all the way through the tutorial for Dune 3D: https://news.ycombinator.com/item?id=37979758 https://news.ycombinator.com/item?id=37979758 https://news.ycombinator.com/item?id=40228068 https://news.ycombinator.com/item?id=40228068 OpenSCAD "just works", even on quite limited hardware, and if one has trouble modeling something, well, arriving at a solution is just a matter of learning the appropriate mathematics.
- constantcrying 10mo agoTo be honest, I found Fusion 360 and Onshape very intuitive to learn. >and if one has trouble modeling something, well, arriving at a solution is just a matter of learning the appropriate mathematics. Which is the terrible thing about OpenSCAD. YOU need to derive the equations. In a modern CAD program you define the constraints on the object and the equations are derived for you.
- kiba 10mo agoThe way I learned CAD is the same way I approach programming projects. I tackle simple, bite size projects, which then increase in complexity until I have the skills necessary to tackle big complicated projects. I found that standard CAD to be no simpler than OpenSCAD. Really, the biggest disadvantages that OpenSCAD have is usability and a library which is fixed by using BOLS2. BOLS2 has the same problem as standard CAD, it is overwhelmingly big. In some cases, I didn't know features were already in BOLS2 so I don't have to reinvent the wheel writing my own inferior library. So, how to tackle it? Same thing as any learning projects. I just tackle it in bite size chunk.
- elcapitan 10mo agoFor me as a casual 3d-modeler, my favorite thing about OpenSCAD is that I don't have to learn a new application the size of Photoshop with everything hidden 7 levels deep in some menu that is probably intuitive for some people who learned CAD in the 80s. Instead it's basically like graphics programming, with a couple of basic primitives, some linear transformations and a bit of set theory. When I do a model a month and get back to previous work, I read a few lines of code and know exactly how I achieved the result.
- unbelievably 10mo agoI was once a big OpenSCAD user myself but I'm really skeptical that there are many use cases where it's actually more intuitive than a traditional CAD program, even if you're a programmer. It's true CAD programs have a huge amount of features but the basic sketch, extrude, revolve, and loft tools aren't conceptually difficult and are basically the same between Onshape, Fusion, Solidworks, etc. Those tools are sufficient to make 99.99% of OpenSCAD models I'm seeing. I also have the opposite experience about understanding previous scripts. Unless it's dead simple I'm usually thinking why the hell did I multiply this thingy by sqrt(3)/2 plus this other thing. Maybe a documentation problem, but it's inescapable that sometimes you need a lot of math for what are trivial constraints in an interactive sketch. A real CAD program will let you roll back to any feature to figure out how it's constructed step by step so there's really nothing to decipher.
- WillAdams 10mo agoI've been trying to model joints for woodworking, and in traditional tools, the shapes I wish to arrive at verge on nightmarish, while I was able to knock them out in OpenSCAD in pretty short order --- except that when I sent a 1" x 2" x 1" test joint to a CAM program, it took some 18 minutes and generated a ~140MB G-code file, hence my working on: https://github.com/WillAdams/gcodepreview https://github.com/WillAdams/gcodepreview
- IshKebab 10mo agoYeah I agree. OpenSCAD is good for highly parametric modelling: fasteners, gears, generative art, ... that's about it. Most things aren't like that, and a traditional parametric CAD program is 10x easier.
- rcpt 10mo agoI haven't tried the latest models but for at least a year LLMs have been mostly able to generate openscad to match my descriptions. It's neat that I can tell the computer what I want in words and then have that object come out of the 3D printer
- WillAdams 10mo agoThe great thing about OpenSCAD is that it makes it easy to 3D model things which may be described using spheres, cylinders, and cubes which are stretch, and/or rotated, and arranged in 3D space. The awful thing about OpenSCAD is that what one can model in 3D is limited by one's ability to mathematically stretch, rotate, and/or arrange spheres, cylinders, and cubes in 3D. For folks who want "real" (read mutable in normal terms of scope) variables there is a Python-enabled fork (which should become part of the main release presently: https://pythonscad.org/ https://pythonscad.org/
- M_bara 10mo agoOr perhaps take a look at cadquery? It’s also pretty neat - http://cadquery.readthedocs.io/ http://cadquery.readthedocs.io/
- culi 10mo agoThere's also OpenJSCAD. Which, being JavaScript ofc, can run in the browser https://openjscad.xyz/ https://openjscad.xyz/ https://github.com/jscad/OpenJSCAD.org https://github.com/jscad/OpenJSCAD.org
- spwa4 10mo agoDon't people think this is one tool that would greatly benefit from using the very fastest languages available? Where's the C++, Rust, maybe even FORTRAN version?
- htgb 10mo agoThis is only the language for describing the volumes. That's not heavy, rather the importance is that you can express the ideas you want. The heavy lifting of rendering and computing how volumes interact etc is already implemented in native code.
- WillAdams 10mo agoMy understanding is that the core of OpenSCAD is done using C++. If you wish to use Rust for 3D modeling directly there is: https://fornjot.app/ https://fornjot.app/ (the developer of which is actually working on a BREP kernel)
- JonathanRaines 10mo agoAlso check out CADQuery and or build123d (python equivalents)
- alhirzel 10mo ago+1 for CADQuery - it lets you easily specify surfaces as the basis for manipulation, and results in much less fragile designs than OpenSCAD.
- Ccecil 10mo agoIf you are a programmer OpenSCAD is likely for you. It certainly has benefits in things that are repeating patterns (gears and such)...and if your mind is good at visualizing things in "code" things will likely go a lot faster. I personally do better with CAD software such as fusion or freecad since my mind doesn't work in the code realm since I have more of a hardware mindset. Translating the picture in my head to code is more difficult than drawing it using the standard CAD set of tools. My opinion on OpenSCAD is that it is a very useful piece of software which many have used to make some very interesting things. If you have a background in code I recommend giving it a go. I largely view it as "the coder's CAD".
- shmeeed 10mo agoI was just about to say the same: OpenSCAD is CAD for programmers. It's very different from what's generally considered "CAD". That's not necessarily a bad thing; there's a clientele for it, especially here on HN. But as a mechanical engineer who's used quite a few industry standard CAD systems, I'm sorry to say I wouldn't touch it with a ten foot pole. Funnily, just a few days ago I tried FreeCAD, and found it to be better than I had expected.
- ThrowawayTestr 10mo agoFreeCAD feels like blender before the UI revamp. I can tell it's powerful but the UI is opaque to me.
- Ccecil 10mo agoI switched from Fusion to Freecad just before the 1.0 update. Freecad 1.0 is a gamechanger IMHO. It so far has suited all my needs as well as being significantly easier to use than the pre 1.0 versions.
- cluckindan 10mo agoFor functional-oriented programmers. There is no explicit iteration, so if you want to do flexible spacing for any reason, like distribute a feature evenly along a dynamic length, you need to use recursion.
- fcpk 10mo agoopenscad is quite nifty for small geometric projects. unfortunately it lacks some Features that make most bigger cad programs really useful... for example: - the ability to select faces/paths from a render, which can be hugely helpful when modifying complex models. - the ability to do constrained sketching in both 2d and 3d - caching at intermediate render levels - nested Projects and joining parts with mechanical constraints. it's still pretty nifty but very niche. I personally would dream of having the tools of a tool like fusion 360 or Catia, but in a gilly textual progemmatic way, while keeping the ability to select objects from the rendrr view.
- coryrc 10mo agoIt does have caching, but you are otherwise correct. I would also add that it can't do arcs; any curve is discretized immediately upon creation.
- WillAdams 10mo agoIf you want arcs in a DXF (or G-code), I've been working on that in: https://github.com/WillAdams/gcodepreview https://github.com/WillAdams/gcodepreview
- khufiya 10mo agoI've been experimenting with using Claude Code and the Gemini CLI to generate OpenSCAD with the renderer in the loop. https://github.com/rahulgarg123/openscad-mcp https://github.com/rahulgarg123/openscad-mcp It’s still strictly worse than what these models are capable of for general-purpose coding, but for simple tasks where precision isn't the bottleneck, it's surprisingly decent.The "aha" moment for me was an image-to-object workflow: found a geometric design on the web --> generated OpenSCAD to match the image --> 3D printed it. Going from seeing a JPEG to holding the physical object in a few hours.
- timonoko 10mo agoI have solved the only problem OpenSCAD ever had and that is total lack of interactivity. https://youtu.be/eG5lhLYvihQ?si=ehet5COZhiNrcK9b https://youtu.be/eG5lhLYvihQ?si=ehet5COZhiNrcK9b
- timonoko 10mo agoNow they say newest version of OpenSCAD has this functionality builtin. It took only a year.
- xixixao 10mo agoThis is important and should be a given. But the more interesting challenge is to highlight the object you’re editing (where your cursor is). It’s not clear even how to exactly visualize it (it could be inside subtract of union of subtract etc).
- timonoko 10mo agoIt moves or grows or whatever. What other indication you want? I have not yet invented any other improvement. I tried decimal points, but that was stupid, you just add "/100" if you want micrometer accuracy.
- xixixao 9mo agoIf you're subtracting cube A from cube B, and you position cube A such that there's no overlap between the cubes, you can't even see cube A. But you can imagine that when I place my cursor in an editor onto the code that generates cube A, that it could be rendered (say transparent), to indicate where it is. You can then more easily position it. Otherwise you have to explicitly render it yourself, or switch between difference and union operators.
- ifndbdb 10mo agoThe OpenSCAD kernel is significantly overrated in my opinion. Many operations take ages to compute or are not possible at all Ok if you want to generate a couple of cubes, but if you want anything advanced the kernel quickly falls apart
- coryrc 10mo agoIt's switched to a new backend https://github.com/elalish/manifold https://github.com/elalish/manifold Which you can also use directly instead by writing C++. Trivial operations are two orders of magnitude faster and complex ones every faster.
- timonoko 10mo agoThe openscad-nightly is lightning-fast, but makes occasional occlusion errors. Assuming you make all the necessary adjustements in preferences.
- seamossfet 10mo agoHow does this compare to something like Zoo?
- cpeth 10mo agoCheck out https://zoo.dev/ https://zoo.dev/ I went from OpenSCAD -> cadquery/build123d -> Zoo/KCL It still is early days, and it needs some more helper functions but it's really nice having two-way capabilities (not just code -> model, but also the reverse). Of course having Text-to-model as a first class citizen is also nice.
- dbuxton 10mo agoI have played with this but been underwhelmed. However I do think probably on the right track. I know the ecosystem not-at-all (sum total knowledge of the CAD ecosystem is that my kids got a Bambu printer for Hanukkah) but it feels to me that current LLMs should be able to generate specs for something like https://partcad.readthedocs.io/en/latest/ https://partcad.readthedocs.io/en/latest/, which can then be sliced etc. Curious to know what others think? I come at this from the position of zero interest in developing the fine design skills needed to master but wanting to be able to build and tweak basic functional designs.
- bob778 10mo agoI want to like Zoo but the rendering engine is so buggy currently that it’s not really usable for more than simple shapes. The text-to-CAD feature they highlight is slow and error-prone, so much so that they explicitly use a “prebuilt” version in the tutorial, and each time I tried it, it gave tool errors or took so long I just did it manually.
- bilsbie 10mo agoFYI I’ve had really surprising success using AI to generate openscad code. And even if it’s not perfect it saves a lot of time looking up the documentation and generally gets the relationships between objects right.
- WillAdams 10mo agoThere is at least one blind designer who has been using this approach to surprisingly good effect: https://makerworld.com/en/models/2040939-accessible-christmas-calendar-made-by-blind-person#profileId-2201912 https://makerworld.com/en/models/2040939-accessible-christma...
- cmrdporcupine 10mo agoI came here to ask how good LLMs are at working with this. I wonder if a person could take it a step further with some MCP tools that the agent could use to verify and work with the design.
- zihotki 10mo agoMind you, it can't export to step file. That makes it impossible to re-use the models in other CADs to make assimblies. Also it's tedious to use for 3d printing when you want to include modifier objects with your model. Otherwise it's great and good enough for part modeling
- fogleman 10mo agoIt is kinda neat, but OpenSCAD's limitations are the main thing that motivated me to write this Python library to generate 3D meshes used signed distance functions: https://github.com/fogleman/sdf https://github.com/fogleman/sdf One big plus to doing it this way is that it's "just" Python and you can use arbitrary logic to help construct your model. You can even load an existing 3D mesh and operate on it as an SDF. Great for hollowing, chopping, eroding/dilating, etc. existing models. I should probably do more with this project. I think there's a lot of interest in this space.
- JonathanRaines 10mo agoI've used your library and really like it!
- deleted 10mo ago[deleted]
- jandrese 10mo ago> You can even load an existing 3D mesh and operate on it as an SDF. Great for hollowing, chopping, eroding/dilating, etc. existing models. This has my instant interest. Multiple times I have wanted to take an existing .STL file and cut a hole on it or add another object to it and have never had success. I've tried things like Meshlab, but while the interface has what appears to be a hundred different functions, attempting to use anything returns some error code that requires a PhD to understand and none of the "repair" functions seem to help. I mean seriously: Mesh inputs must induce a piecewise constant winding number field. How the hell am I supposed to accomplish that on a STL file?
- kesor 10mo agoOpenSCAD can load STLs and cut holes in them.
- fogleman 10mo agoThat feature requires getting pyopenvdb installed, which can be a headache, and I never really updated the README with examples, but it does work. There is one example script: https://github.com/fogleman/sdf/blob/main/examples/mesh.py https://github.com/fogleman/sdf/blob/main/examples/mesh.py You basically just say: f = Mesh.from_file(path).sdf(voxel_size=0.25, half_width=1) Then you can operate on `f`.
- jacquesm 10mo agoIt is amazing. I spend more time in OpenSCAD than in any other program I use and I'm amazingly productive with it. 3 to 4 cycles / day, the longest time is waiting for the printer to cough up the next iteration, then it is building debugging and improving again. The power of parametric cad is such that I wouldn't be a 10th as productive using an interactive cad system. And because it is effectively software you are writing (even if it compiles into physical objects) you can use all of the goodies that you can use to manage software. Diff files, git, kompare, branching, merging. It is nothing short of amazing, it is like I have a design team and a prototype injection molding facility in one. And the turnaround time is something you'd have killed for in the 90's.
- echoangle 10mo ago> The power of parametric cad is such that I wouldn't be a 10th as productive using an interactive cad system. This sounds like parametric and interactive CAD are polar opposites. Normal CAD software is generally parametric too. The other points about the advantage of text files still applies though.
- jacquesm 10mo ago'Normal' cad software is parametric in an entirely different sense. You don't normally build up from entities just like you would in software, which you can then manipulate symbolically. There are cad packages that can do this but unlike OpenSCAD the main interaction there is the 3D window, not the text editor. Though AutoCAD of course had this with AutoLISP since 1986. Interestingly, I'm not sure which has the steeper learning curve, OpenSCAD or AutoLISP. OpenSCAD is really great once it clicks but most people give up long before then.
- jazzyjackson 10mo agoIirc autolisp applies to 2D drawings, so it's not a competitor for generating meshes Mathematica however is Lispy enough and has a lot of helpful geometry primatives and can export STL
- 10mo ago
- arjie 10mo agoOh I had no idea that OpenSCAD was a programmatic toolkit. I recently bought a 3D printer and I don't model so much as describe to Claude Code how to write a Python script that will generate the required STL that I then rescale or whatever in Bambu Studio. LLMs are great at code-oriented stuff so I've stayed away from traditional modeling tools because I assumed you'd have to point and click and so on and I don't really want to learn the ins and outs of their interface. I just need the right mesh made. The chatbots kept recommending I try using OpenSCAD but I resisted without even giving it a look. The results I had with just the Python script are quite adequate for the tasks I had. You can just ask the LLM to add a fillet to a vertical pin on a plane or to chamfer some edge and it is pretty good at doing it. https://wiki.roshangeorge.dev/w/Blog/2025-12-01/Grounding_Your_Agent https://wiki.roshangeorge.dev/w/Blog/2025-12-01/Grounding_Yo... if you want to roughly see the workflow. I'm going to try using OpenSCAD for things in the future. Does anyone else use exclusively an LLM with OpenSCAD (I used Claude Code and Codex) and if you do what did you do to make it more effective? The Python script wouldn't always generate printable meshes so I had to give it a check script to operate on.
- ThrowawayTestr 10mo agoFusion 360 is free for hobbyists and it's not too hard to learn for basic stuff
- arjie 10mo agoMaybe I should suck it up and just give it a crack. Thank you for the recommendation.
- avmich 10mo agoIs it online only? I in general prefer locally installed software, without Internet requirements.
- fainpul 10mo agoThe software is installed locally (runs on macOS and Windows), but your files are stored on Autodesk's servers. You have to sign in to use it. Program startup takes ages. But the features are great. If you don't need fancy features, have a look at FreeCAD as well.
- dvh 10mo agoI rage-quited every other CAD program. Then I found OpenSCAD. Now I'm looking forward to work in it every time I need to do some 3d modeling (usually new part model for kicad or some other project).
- moebrowne 10mo agoI had the same experience. I think OpenSCAD is ideal for people with a 'developer' brain. As it happens I wrote about this almost exactly a year ago https://mountainofcode.co.uk/3d-modeling-for-developers https://mountainofcode.co.uk/3d-modeling-for-developers
- exasperaited 10mo agoNeat-ish. I don't really see why that code is better, more logical, more readable or more robust than the equivalent quite trivial parametrics in more or less any GUI CAD program, and I think the geek discourse is really harmed by people who don't understand the value of the things that OpenSCAD can't ever offer.
- avmich 10mo agoI wonder what kind of things OpenSCAD can't ever offer... It's pretty automatable.
- unbelievably 10mo ago[dead]
- exasperaited 10mo agoThe main thing it cannot ever offer is the ability to further process its own generated geometry. It has no concept of edges, vertices or faces in 3D so you cannot do operations on them, which means no generalised operations like fillets or chamfers, only specific implementations for specific shapes. This difference is profound, is the point I am getting at. It also lacks any concept of constraints or constraint solving in 2D sketches, which makes some quite simple shapes extremely difficult to make without advanced maths. So in both cases you never get away from the maths, and the maths complexity increases as your design complexity increases. You can see this reflected in the complexity of any large OpenSCAD codebase and in the number of functions in any large utility library. CAD software should aid design. That’s its entire purpose. OpenSCAD just lets you plot 3D shapes and do some very limited operations to combine them.
- haberman 10mo agoA long time ago I read that CadQuery has a fundamentally more powerful geometry kernel than OpenSCAD, so I dropped any attempt to try OpenSCAD. Years later, I never actually got the hang of CadQuery, and I'm wondering if it was a mistake to write off OpenSCAD. I am pretty new to CAD, so I don't actually know when I would run into OpenSCAD's limitations.
- WillAdams 10mo agoThe notable limitations for OpenSCAD are: - functional programming model --- some folks find not having traditionally mutable variables limiting - output is as an STL, or DXF using polylines - native objects are spheres, cylinders, cubes, with functions for hull and Minkowski, so filleting and other traditional CAD operations can be difficult
- gunalx 10mo agoOnce had a complex model that would fully crash and lockup fusion, but once redone in openscad rendered after a little while. (badly designed + slow pc at tye time)
- tylervigen 10mo agoI’ve used OpenSCAD for 3D printing random objects for years. It’s the perfect tool for designing super simple geometric objects, because it giant demands that you remember hardly anything about his the interface works. Contrast with Fusion 360 or any other more powerful tool, which are fantastic if you use them daily but a slog of you only boot them up a few times a year. Also with OpenSCAD, you can feed the documentation to your favorite LLM and ask it for a starter design of whatever you are building. (Or you can skip the documentation; it is in the trading data after all.) Maybe in the future that SVG Pelican on a bike test will be a 3D model in OpenSCAD.
- rcarmo 10mo agoOoh, an LLM that could take requests for custom Gridfinity bins would be a good step towards AGI indeed.
- WillAdams 10mo agoThis is being done for photographic inputs for shapes --- I believe at least one of these tools does that: https://www.shapescan.pt/ https://www.shapescan.pt/ https://www.tooltrace.ai/ https://www.tooltrace.ai/
- lorenzohess 10mo agoThat let() {} expression seems pretty similar to the LISP let()() form: https://lisp-lang.org/learn/variables https://lisp-lang.org/learn/variables
- mcv 10mo agoThere's a tutorial? Maybe I should have started there. I recently started messing around with OpenSCAD too. I found these boxes that are great for storing the tiles for various 18xx railroad boardgames: https://www.printables.com/model/287297-parametric-18xx-tile-tray/files https://www.printables.com/model/287297-parametric-18xx-tile... Cool thing is that you can easily print them in whichever size you like, and the sizes in the supplied files are rather large, so I tried some smaller sizes, and discovered some details weren't actually centered properly, so I dove into the code, tweaking some bits here and there until I got it centered properly. Then my dad asked me to print boxes for a game that had slightly larger tiles, so I needed to tweak the sizes, the thickness, and made everything just a bit more configurable. I've got another idea I haven't tried yet: print the shape of the track on the tile on the spot its meant for. That's a whole new feature and not merely tweaking an existing one, so maybe it's time to finally learn how this format actually works. Although I did see in the code that you create shapes through intersections and substractions with other shapes. And that's where I got stuck. Maybe it's time to pick it up again. It's a fun way of building shapes.
- WillAdams 10mo agoFor my part, when I have to rough out a design in OpenSCAD, I'll often use: https://www.blockscad3d.com/editor/ https://www.blockscad3d.com/editor/
- mcv 10mo agoThat is really awesome. Thanks! And not just for me; now I might also be able to get my kids to design stuff to print.
- WillAdams 10mo agoIt's one of my favourite tools. If/when your kids outgrow it, there's also: https://github.com/derkork/openscad-graph-editor https://github.com/derkork/openscad-graph-editor
- rcarmo 10mo agoI’ve been using it for almost a decade and I still miss proper fillets and chamfers (and yes, I know the usual tricks).
- Brian_K_White 10mo agoIt's a lot of work to make models that are useful in real life, but for some things it's worth it because it's sooo nice having 2k of plain text that describes an entire object, and it's even fully parametric, and it even comes with a customizer panel for the parameters, so every model isn't just a model, it's a model generator app, and even has meaningful diffs in git. The same model in freecad is like 6 megs of zipped xml and realistically not nearly as usefully parametric. That couple-k of plain text is such a huge deal that it makes all the other difficulty worth it for mechanical/functional stuff.
- dheera 10mo agoOpenSCAD is the only CAD tool I use. I can'd figure out how to operate a graphical 3D software with a 2D GUI so it's just easier to describe things mathematically. I just wish it had operations for subtractively chamfering, rounding, etc. as doing minkowski() with cones and spheres to achieve that result can be unwieldy.
- derkades 10mo agoDo you know about BOSL2? It can do rounding or chamfering very easily. cuboid([20, 20, 30], chamfer=5);
- Brian_K_White 10mo agoA few years ago I made a little module rounded_cube that generates a cube by drawing 1/8 spheres wrapped in hull, andnsince then I've been using that for everything, making inside fillets by using a rounded cube as a cut shape. Since it can generate a hollow box with a desired wall thickness, you have the shell of an enclosure box in a single call. Over time I added other things like a single linear fillet, a single radial fillet, both interior and exterior, convenience things built out of those like a screw post with a fillet base etc. But really I always end up just using mirror_copy and rounded_cube a lot. There is a scifi book series aboit a programmer who gets zapped into a fantasy world that has magic, and he becomes the most powerful wizard in the world because he applies the coding concept of reusable components and building big things out of smaller things and automation, which none of the other wizards ever thought of. openscad is like that. To get anywhere you first have to build a library of useful higher level things out of the low level things. Like forth or assembly, or really all programming I guess.
- ur-whale 10mo agoOpenSCAD is kinda of neat, especially if you pair it with something like codex to build objects. And then, you discover that those darn LLMs have absolutely no spatial intuition. None. It is seriously frustrating: one the one hand you can just feel the raw potential of vibe coding complex geometries, and on the other, when you do, you keep seeing the agent making mistakes a 5 year old playing lego would never make. Absolutely infuriating.
- ur-whale 10mo agoOpenSCAD is great, and I use it all the time.Especially these days if you combine it with an LLM agent like codex and start vibe coding objects (see my other post on this). However, there are a number of limitations that are truly and deeply frustrating. 1. The language is downright weird. Don't get me wrong, it's a very nice little exercise in implementing a functional-tasting scripting language. Someone obviously wanted to scratch a functional DSL design itch and he did, but the result is unfortunately extremely limiting. Creating a function that does not return geometry is barely possible (only bloody lambdas IIRC). He should have picked python instead (and yes, I know about SolidPython2) 2. From my POV: the main headache with OpenSCAD is there is no way to partially evaluate an object and use the result of that partial evaluation in the rest of the construction. For example, if you try to take two complex assemblies and place them tangent to one another ... very good luck to you sir, I pray and hope the 3D math is really strong with you. Whereas: if you had a simple rayIntersect(csg_tree, line_in_3d_spce) that would return the first intersection and two normals ... something you can reuse in subsequent transforms and construction, man would life be simpler. These days, with LLMs you can sort of build a scaffolding to work around this by asking the agent to break down the assembly in multiple stages and use external libraries to do the partial eval for you, but ... ugh ... what a mess. 3. Speed. The moment your CSG assembly gets complex (e.g. uses a ton of morpho ... hull, minkowski, etc...), OpenSCAD crawls to a halt. 4. NO FILLETS. The age-old, standard methodology of building things CSG style with cubes, spheres, cylinders, etc ... and then once the object is finished adding the rounding ... simply not possible with OpenSCAD. Adding fillets after the fact once you've built a complex CSG tree ... nightmare with OpenSCAD. So, YMMV, but caveat emptor, if you get serious with the toole, you're bound to hit some very hard walls.
- WillAdams 10mo agoFor a different language choice see: https://pythonscad.org/ https://pythonscad.org/
- VerifiedReports 10mo agoAnything that helps people shun Autodesk's despicable, anti-customer and anti-industry practices is laudable.
- iamwil 10mo agoAh OpenSCAD. I wrote a tutorial a long time ago about the 10 things you need to know to get started. https://cubehero.com/2013/11/19/know-only-10-things-to-be-dangerous-in-openscad/ https://cubehero.com/2013/11/19/know-only-10-things-to-be-da...
- vjvjvjvjghv 10mo agoIt’s pretty neat but for my taste the language is too functional. I don’t think a purely functional paradigm works well with CAD parts and the way they are constructed. The language gets in the way. Debugging complex parts is also quite difficult from my experience. But with some better tooling I think it could be absolutely great.
- WillAdams 10mo agoWell, there is a Python option now: https://pythonscad.org/ https://pythonscad.org/
- jdranczewski 10mo agoAn interesting use case of OpenSCAD is open source hardware with many contributors - the reasoning being that we only have mature version control tooling for text-based files (say git), and so your CAD design should be text-based. I was introduced to this idea by https://openflexure.org/projects/microscope/ https://openflexure.org/projects/microscope/ - they managed to build a fairly complex 3D printed microscope project on this principle. I'm aware of Onshape having a git-like workflow as well, wonder how the two compare! A fully cloud-based suite would probably not work well for an open source project.
- deleted 10mo ago[deleted]
- WillAdams 10mo agoYeah, I wish that this had been popularized in the Maker movement, but Autodesk nuked that field when they made Fusion 360 "free" (which was probably their intent).
- Joel_Mckay 10mo agoOpenSCAD is great if you follow a subtractive workflow. Define simple stock geometry, and subtract away each feature with slightly wider primitives to avoid zero thickness intersections. This ensures you will not get weird bugs later, and a fairly accurate part for plastic printers. As many correctly pointed out, STL & DXF are not considered professional file-formats anymore by some people. Some fabricators will not respond to quote requests, as without a Step file they are literately self-confessed useless clowns without Onshape/Fusion true solids handling the ugly math. It is partially a unofficial standards issue, but customers without Step files may have to look around for fabricators. YMMV =3
- imtringued 10mo agoSTL is not used outside of 3d printing for obvious reasons. STLs have an obvious quality problem with geometry since they have an internal resolution that cannot be changed. The amount of people printing STL artifacts into their plastic parts is kind of ridiculous, honestly speaking. The other problem is that CNC machines turn the geometry encoded by STEP files into toolpaths. This is basically impossible with meshes unless you want to mill the STL artifacts right into your part with a generic tool. In subtractive manufacturing the manufacturer has to choose a selection of tools and assign each tool to the relevant features of the part. If you want holes you need a drill, if you want threads you need a tap, if you want fillets or chamfers, there is a tool for that and so on. Your STL file is the equivalent of a JPEG here. It has already lost the critical information that is needed to manufacture your part.
- Joel_Mckay 10mo agoThe STL file literally means Stereolithography, and was created by 3D Systems. It is the intended use-case, and is limited like any other file format. The fact many fabs avoid DXF is unit and format version ambiguity. However, the other reason is predicting bend deduction is often wishful thinking. Most high end CAD packages are fairly good at handling that mess for people, but often still have issues figuring out how features will deform. CAD can also start to fail on large complex geometries, as even a simple single combo-tool g-code macro to drill, helical mill, and chamfer threaded-holes in a plate often is done by the time CAD/CAM path-planners finish/crash. Best of luck =3
- thdrtol 10mo agoTip (a lot of people don't know this): you can set the resolution by setting the $fn variable. This can be useful when you want to export smooth objects. $fn = $preview ? 32 : 64;
- voxleone 10mo agoJust a minor aside: When exporting geometry for FEM, you generally should not make $fn very high (values around 32–64 are usually fine). High $fn improves visual smoothness, but it often hurts FEM meshing and solver performance without improving accuracy, since FEM accuracy is governed by the solver’s mesh rather than the CAD tessellation.
- givc 10mo agoI found that combining OpenSCAD with SVGs for extruding complex shapes is quite powerful. I made a map of Manhattan that could not be handled by any other CAD program I tried without crashing, but OpenSCAD handled it really well. I wrote more about it here, although I only mentioned OpenSCAD briefly https://hackaday.io/project/202488-manhattan-subway-map/details https://hackaday.io/project/202488-manhattan-subway-map/deta...
- typesafeJ 10mo agoI created a simple go library to output OpenSCAD code a few years ago. https://github.com/richi0/gocad https://github.com/richi0/gocad
- yoan9224 10mo agoOpenSCAD is perfect for the "programmer's brain" approach to CAD. Being able to parametrize everything means I can design something like a project enclosure once, then generate variants for different screen sizes or component layouts by just changing a few variables. Pro tip: Use the latest nightly build and switch to the Manifold backend in preferences. Render times drop from minutes to seconds for complex models. The official 2021 release is painfully outdated. Also, the BOSL2 library is essential - it adds proper filleting, rounding, and attachment operations that vanilla OpenSCAD lacks. Makes the difference between toy projects and actually useful designs. The Git-friendliness is underrated too. Diffing .scad files is trivial compared to trying to understand what changed in a binary Fusion 360 file.
- s0rce 10mo agohmm, I didn't know about the BOSL2, I was struggling with fillets and chamfers, you basically had to figure out how to define them somehow which isn't really straightforward. Been using FreeCAD mostly which still has weird issues with fillets sometimes.
- benbojangles 10mo agoI like openscad it allowed me to create a shed generator which also provides material quantity output, so an accurate shopping list is created - all done in code super impressed. I could not figure out how to do the same thing in standard cad software.
- moebrowne 10mo agoYou don't have to use their editor either, there is a whole list of alternative editor plugins. OpenSCAD can automatically re-render a preview as soon as the external editor saves to disk https://en.wikibooks.org/wiki/OpenSCAD_User_Manual/Using_an_external_Editor_with_OpenSCAD https://en.wikibooks.org/wiki/OpenSCAD_User_Manual/Using_an_...
- gmiller123456 10mo agoI really wish OpenSCAD had objects, so you could use something like box1.width rather than having to declare variables for such things. I tried using Build123d, a Python library that lets you use all of the features of Python. And it's supposed to allow specifically things like box1.width, but it's always 0. Lots of other issues/bugs too, and severely lacking in ddocumentation.Maybe it'll get there some day.
- revision17 10mo agoMaybe it's improved since I last used it (seems to still be an issue per a 1 minute google search), but OpenSCAD doesn't really have easy support for dimensioned drawings. While it was very handy for my programmer brain to create a few 3D printed things, when I wanted to create a drawing for something I'd make myself, adding dimensions seemed very unwieldly. I used a different CAD program for those projects (maybe Autodesk Inventor?).
- nayuki 10mo ago> One part that confused me is how I needed to use let() to define startColumn and startRow inside the loop. I don’t understand this… That's because you wrote a for-loop without braces, so it can only contain a single statement, and that single statement is your let(). Here is an equivalent way to write that section of code (and I did test it): for (r = [ 1 : numRows ]) { startColumn = ((c * thicknessWall) + ((c - 1) * batteryType)); startRow = ((r * thicknessWall) + ((r - 1) * batteryType)); translate([startColumn, startRow, thicknessWall]) cube([batteryType, batteryType, heightCompartment + 1]); } Side note, related to declaring variables but not an issue that you encountered: OpenSCAD does not allow setting the value of a variable more than once. So this code is illegal: x = 1; echo(x); x = 2; echo(x); Second note is that whenever you introduce a construct such as {union(), difference(), if(), for()}, variables declared within the braces are scoped, so they don't exist between iterations or after the scope ends. if (true) { y = -1; } echo(y); // Illegal However, just introducing braces without a construct does not restrict the variable to the scope: { z = 5; } echo(z); // Legal
- platevoltage 10mo agoI love it. It's really the only 3d modeling that I know to do. I've been enjoying it more after setting up VSCode as the editor.
- gsohler 9mo agoDid you try your library with PythonsSCAD.org ? You can view your results right there and PythonsSCAD also has an onboard sdf (libfive) engine.