For reference here are some of the items I designed using OpenSCAD:
https://cache.getlazarus.org/images/projects/101/case-and-st...
https://cache.codebot.org/prints/soldering-station.jpg
https://cache.getlazarus.org/images/desktop/soldering-kit-mo...
https://cache.codebot.org/prints/power-supply.jpg
https://cache.getlazarus.org/images/projects/102/control-box...
If you want to learn the distance between two arbitrary points on a part, you need to read the code, and sometimes even do some trig even if you wrote the code. Having markings on the axes is not the same thing: you really want to select two points on a drawing and say "show me this".
This is my biggest wish for OpenSCAD.
Even better would be a procedural way to "measure" things on models returned by code.
e.g. a method that would return a sorted list of intersection points between a 3D line and a model.
This would be a killer feature for OpenSCAD.
This is all the more sad that the underlying engine (CGAL) does support this feature.
But later, I did start to feel the limitations. Not having automatic fillet/chamfer was huge. And sometimes, I wanted the ability to measure the distance between two points selected visually to make sure all my math involving offsets was correct.
And as the article mentions, certain shapes end up with a lot of artifacts unless you "render" them, which can take a while. I designed a refillable catnip toy [0] and all the holes in it made the CSG subtraction take ~15 minutes, IIRC. Without rendering though, the opening on the bottom was solid, along with other glitches.
Fillets and chamfers though, yeah. The lack of those drives me away. As Quinn (Blondihacks) says: "Chamfers are what separate us from the animals.", and as This Old Tony says: "When it comes to chamfers, you don't want to cut corners." (And if you don't know who I am quoting, you clearly don't waste enough time watching machinists on Youtube.)
Fun fact: BOSL2 was written by the same person who made the world’s most 3D printable 3D printer. [1]
But things get complicated pretty fast, and as you say, no fillet or chamfer is a terrible limitation. It calls for complex and unpleasant/ugly alternatives (usually, extruding 2D shapes that already have the right angles).
The other big problem with OpenSCAD is that very few true CAD programs are able to import it, and those who do, don't do it well.
So it is fun to play with, but unfortunately it's not really usable for serious work.
https://github.com/jscad/OpenJSCAD.org/tree/V2
A fairly substantial rewrite is underway, the V2 branch linked above.
Solidworks and Catia are often seen as unbeatable for industry but there are so many issues with them, particularly when used in smaller companies or startups. Need Mac support, never. Need multi-threading support, nope never going to implement it. Update the graphics so it doesn't look so ancient and clunky, never. Fusion/autocad are good but are full of bugs and the cloud service is annoying (e.g. I continuously have to delete log files to open the program). Being picky but this stuff shouldn't be hard by now given how long CAD has been around.
Are there any projects using something like rust or c++ to do a build and customise style cad program with versioning? I've tried cadquery, libfive etc. and none really fit the bill.
I've been learning qcad recently, which is OK, but it really wants you to make extensive use of the mouse. I feel like I could probably be just as productive by typing code and seeing a 2d plot of what I specify. Way back when I used SweetHome3d, which works pretty well for interiors, but (at least when I tried it) didn't have very many tools for exteriors.
Think OpenSCAD but based on a proper BREP kernel, so you can express something closer to actual curved surfaces instead of just rasterized approximations.
"Right now, I’m learning CadQuery which promises to address the shortcomings; it uses a more powerful BREP based CAD engine (OpenCASCADE) combined with the power of Python and inspiration of JQuery, of all things.
"CadQuery is still in semi-early development – it started as a FreeCAD plug-in before becoming independent for the recent 2.0 release.
"Most importantly, the output capability of CADQuery allows for proper STEP, SVG and DXF export, eliminating most of the problems discussed in this article.
I've started to switch to Cadquery from OpenSCAD because it lacks proper fillets and chamfers.
I usually prefer the CSG (arithmetic tree of union/difference/intersection + transforms + base shape leaves) to model 3D objects, as opposed to Cadquery's "draw on 2D surfaces and extrude" approach, but OpenSCAD's lack of fillets / chamfers combined with the "everything is a polygonal mesh" approach of the rendering engine is just too limiting.
Cadquery has a lot of potential (the underlying engine uses a traditional hierarchical NURBS BREP, IIUC), but it also has a lot of shortcomings:
Here are some I've bumped into:
. very strange "stack-based" model. For complex objects, it's hard to wrap your head around it, and the workflow it forces on you as a user does not always fit your mental model of the object.
. the underlying hierarchical nature of the object (the BREP) is forcibly hidden from the user, which leads to kafka-esque situations when one wants to e.g. select parts of an object.
. selecting parts (faces and edges) in a object is a nightmare. cadquery has "selectors", which are a) its own weird little DSL b) very difficult to use on complex shapes c) does not support name-based retrieval: can't label things and get to them later by name.
See this github issue for example: https://github.com/dcowden/cadquery/issues/29 - the UI (cq-editor) is unusable for real-world work: no perspective rendering, no graduations in ortho views, no way to measure things on the object, no way to examine the BREP, etc ... Generally speaking, the UI is only a visualizer, and does not let you query / inspect the model in any detailed way.
- fine-grain control over tessellation (conversion to mesh) is lacking.
- good for modeling mechanical parts / lousy for modeling anything organic-looking
- importing external models that don't fit the cadquery BREP-based represention is basically impossible.
TL;DR: a nice tool to add to your belt, but not a very mature environment yet, and certainly can't replace OpenSCAD yet.OpenSCAD is based on constructive geometry, which means the compute complexity scales up mainly along the complexity of the CSG tree which can get very big, but the number of triangles is quite low and independent of the resolution. This is not rasterized but the operation on CSG trees partition the space and the number of regions to consider may grow very quickly and this algorithm is very prone to numerical instabilities, like z-fighting between regions.
ImplicitCAD on the other hand is based on signed distance fields rendered with an pruned octtree marching cube. The algorithm is simpler and more stable numerically. The internal representation is of perfect resolution, but to get a triangulated output you need a number of triangles which grows proportionally to the surface of your object expressed in precision required units. But if you skip this triangulation process, using a custom slicer to generate the toolpaths or a ray tracing renderer to visualize it, you can have perfect resolution for very cheap.
The alternative is BRep, but this is a surface representation which don't bring the same topological guarantees, (like non-self intersection).
Mmmh, I'm not so sure.
Is that still maintained?
The reality is that the professional market is majority SolidWorks and everyone else fights over the rest. Though Dassault seems to be turning the screws a little too tight these days, so you never know what's in store in the future.
We use it for creating as crappy designs as fast as possible, not getting designers to premature optimization.
For serious design no, we use expensive commercial software for that, once it is clear what the solution is.
For exploring lots of different spaces cheap 3d printer, cheap CNC milling machines and laser cutters are amazing.
We restrict access to serious software for early prototyping because people will try things like super complex organic shapes that require supports or special milling machines instead of machines that cost 100 less money.
That makes time to market so long and a design a competitor could squash the price when he uses cheap alternatives for manufacturing.
Restricting access to CAD features is a perplexing way to compensate for lack of mechanical engineering skills.
$fa = .01;
$fs = $preview ? 5 : 1;
This will make your maximum facet size 5mm in preview and 1mm in render.