←back to thread

238 points jamesbvaughan | 2 comments | | HN request time: 0.417s | source
Show context
rao-v ◴[] No.44437398[source]
Isn’t the python based build123d the current best CAD in code solution? The problem with OpenSCAD is that it cannot export solid geometry, just a final mesh.

More broadly, I was genuinely shocked to realize, when I was playing with it, that there is no cross CAD file format that captures even simple design concepts like “this hole is aligned to the center of this plate” or even “this is a 2mm fillet”. STEP (the file format) mostly just captures final geometry.

I think CAD people just … redesign the part again if they need to move from say Fusion 360 to FreeCAD or whatever. How do they live like that?!

replies(4): >>44437853 #>>44437963 #>>44438309 #>>44439117 #
mk_stjames ◴[] No.44438309[source]
It's really hard to explain if you don't know how CAD kernels produce final BREP shapes via their process trees, but, try give an example- something like "this is a 2mm fillet" requires a 'fillet solver' that is deeply ingrained in the kernel. It isn't something that would ever be portable, say, from Fusion360 to CATIA natively because those are completely different kernels with different ways of 'solving' the model (and not just fillets, but, everything).

That is why STEP containing the final BREP manifold solid is the standard interchange that it is - it is a final representation of the solved output that IS portable, and anything else is... difficult.

replies(1): >>44439962 #
1. rao-v ◴[] No.44439962[source]
This is helpful but surely we can save a consistent description of the process step and the input parameters alongside the final geometry in the same file format?
replies(1): >>44447197 #
2. mk_stjames ◴[] No.44447197[source]
Yes, we could, but there are very few open source fully parametric couplings of kernels and the file format out there. FreeCAD (using OpenCASCADE as a kernel) is one of the few. And that is nothing close to the vastness of modern CAD+PLM systems in level of functionality.

There is a reason that systems like Dassault's CATIA are both ubiquitous in aerospace and automotive and closed source- it is literally the culmination of probably 3000+ person-years of programming, stemming from the 1970s. The same for many others... making them interoperable would mean making the entire chain of systems open source and there isn't a reason for them to do so.

For small projects though, building DSLs and graphical tools on top of OpenCASCADE (which is GNU LGPL version 2.1 licensed) is about the closest you could get right now, particularly, in my opinion, building something like a pseudo-gui+textural tool with the Python package Build123D.