In the 60s, 70s, and 80s it was more true, but nowadays Catia, NX, Creo, and the other big CAD systems are monolithic applications with extensions and add-ons (either from the vendor directly, sold as third party add-ons, or developed in house with CAA/NXOpen/ProToolkit) for doing stuff like composite design, sheet metal, various types of analysis, and a million other things.
Under the hood they're very modular with hundreds (or thousands) of shared library modules, and sometimes those modules have long histories going back to the 70s, but the UI of the 70s is long gone, and they're used like normal shared libraries, not piping around data on the shell.
Not that it doesn't happen - I'm sure some companies have old tools they haven't updated in decades - but the day to day CAD work is all GUI based.
That's my impression working at a company doing CAD translation, anyway.
In a lot of large deployments, the CAD data isn't even stored in files, but in a PLM database. For example PTC's WindChill and Dassault's Enovia/3DX.
What you describe sounds about right, though. I think in some cases it really is just the original CAD file, as a binary blob, in a database, with metadata stored with it. In some cases it's more complicated, though.
Catia's V6 "3D Experience" system, for example, saves to their database by default, but allows exporting to Catia V5's CATPart/CATProduct format, or STEP, for data exchange. The catch is that some of the newer features in V6 don't exist in V5 and aren't fully supported by CATPart/CATProduct, so they have a way to export those bits "as result" instead of saving the full dataset - basically decoupling it from the parameters and inputs that created it and giving a BREP blob. In most cases the exported parts can be editted in V5 and sent back to V6, but the "as result" parts can't be.
It's different for every CAD vendor, though. A nebuluous mess of vendor lock-in and proprietary data formats.
Bentley and Autodesk have a Frankenstein version of this because they can’t disrupt their revenue stream for CAD software that stopped improving 20 years ago. iTwin (yes, the branding is that bad) is an attempt to link cloud to local-file-based work. ProjectWise was a first stab at that, which is worse than plain network storage in every way except that CAD managers don’t have to be responsible for configuration scripts.
Making CAD more accessible seems like a massive win, in the sense that it is really hard to get hands on experience making things nowadays—hobbyist methods and professional ones have diverged quite far! Easy web-based tool that bridge that gap without playing around in the shell could be really useful.
” very old-school native programs that either are a loosely collected group of tools that allow you to manipulate files and pass them around”
Opencascade is a C++ library and manages it’s state in single process. Examples: https://dev.opencascade.org/doc/overview/html/samples.html
The main CAD program is often the center of use, and any specialty functionality is a add-in to the main cad program (FEA, CAM, etc).
If the specialty software is stand-alone, it still needs a CAD Kernel to be able to work with the BREP, and there are essentially only 2 main commercial kernels (Parasolid and ASICs).
I think of these CAD programs as being very old-school native programs that either are a loosely collected group of tools that allow you to manipulate files and pass them around (so, like, a bunch of Linux native programs that spit out files and ingest them, and you go around in the terminal to make sure everything is in the right spot), or a nice GUI around a bunch of those types of tools (it is definitely very possible that I’ve been influenced by only seeing these tools via engineering grad school where everything is open source, the gui’s don’t count, Linux command line is assumed, and 90’s tools are the baseline).
With a web-based system, what do you do? Like, for example if the user wants to pass models to some finite element simulation tool, do they just repeatedly download/simulate/go back to the website/edit/download/simulate, or something like that?
Is there a nice way for browser based apps to pipe to each other?