Just got a Prusa MINI+ last week and I started using it with OpenSCAD. Otherwise I'm a 3D printing noob. My use case is typical, printing enclosures for projects.
Here are my observations about OpenSCAD:
- The built-in editor (a Qt widget I guess) is trash, but you don't have to use it. I use Emacs, and as soon as I save the file OpenSCAD gets inotify'd and refreshes the display. Emacs even has a "SCAD" mode, and C-c C-o invokes OpenSCAD.
- The previewer GUI is OK, but rendering doesn't work very well with transparent surfaces, and because there is no cutting plane it's hard to see what's going on, you have to put switches in your code to remove parts.
- There is no interactive ruler / measure function in the GUI either.
- You can change parameters live in the GUI which is nice except that it doesn't refresh the view in a timely manner.
- The language is meh. It pretends to be functional but it's irregular, doesn't even have decent closures. Weird module/function distinction, no higher-order modules, no nested or anonymous modules, weird "children()" mechanism for defining operators... It's not too bad but could be much better. Because OpenSCAD has irritating language rules, some people have written generators around it. There is at least one Rust crate.
- I have also used POVRay a bit, which is a CSG (constructive solid geometry) ray-tracer, the language there is more complete, more robust and coherent.
- There is no constraint resolution facility of any sort.
- OpenSCAD is based on CSG yet is still working on meshes, you need to specify meshing parameters for example for spheres and cylinders.
- Generating text is easy and you can use arbitrary fonts.
- Documentation is good
- No facility to verify if different parts are interfering or touching
Overall for me it's still much nicer than using FreeCAD.
I don't know if there is any fork or variant, or another CAD package that allows a similar workflow (text entry) but is of a higher quality. If wouldn't have to be free but needs to work well under Linux and a cost not exceeding three digits.
For me, the things that need to be urgently done are:
- Fix the language so that it's actually functional, or maybe replace it with something that exists, like Ocaml or Scheme. There are some libraries but not too much legacy so not much would be lost if the language is completely changed.
- Redo the previewer using a fragment shader that takes the CSG tree and properly implements transparency, etc. and can do cutting planes
To scratch my own itch I'll probably just define a couple of OCaml combinators that generate OpenSCAD primitives and define things that way.