|
|
|
|
|
by darksaints
744 days ago
|
|
I really love the idea of openscad, but the execution is just not there, and I think it really does need the ability to explore the space via GUI and be able to snap to points/planes and have selection filters, etc. Think about the use case where you cut an object into two pieces, and then subsequently perform an extrusion off of a face of one of the pieces. With a purely code-based solution, you have to dig through the results to find the piece that you want to extrude, but with a GUI you can just point and click. I think the holy grail would be a GUI-based CAD that stores your design history as a text-based editable script written in a very readable programming language. I think with the growth of AI-assisted design, algorithmic engineering, and topology optimization, we will eventually get there. It practically requires it...you need to be able to specify the boundaries and constraints of what you need and let the system do its work, but you also need to be able to iterate off of the results and refine your boundaries and constraints to get to what you want. |
|
I don't think the kernel OpenSCAD uses is capable of this; it's triangle mesh CSG so there's no representation of an edge or a face at all.
More to the point, it's all one way -- declaration to object -- and there is no reflection of the object back into the code.
CadQuery/Build123D can do this (Python), and I think the browser-based RepliCAD exposes faces and edges in its JS API. All of these use OpenCascade, one way or another, which is a proper (if flawed) bRep kernel.
Re: storing your design history as code -- it seems like FreeCAD could be moving back this way, in some small ways.
In 0.22-dev, if you copy a Sketcher sketch to the clipboard, what gets copied actually is the Python code to produce that sketch.
If you watch the Python console while you work in FreeCAD you will see it show you all the commands necessary to repeat what it is doing. Now, granted it's code more like a macro recorder would produce, but it's all you need. Even to the point of controlling the GUI (the commands for which get added to the console, commented out). In this aspect it's always been that way, which is its weirdo superpower.