this post was submitted on 30 Jan 2024
370 points (96.5% liked)
Open Source
31365 readers
152 users here now
All about open source! Feel free to ask questions, and share news, and interesting stuff!
Useful Links
- Open Source Initiative
- Free Software Foundation
- Electronic Frontier Foundation
- Software Freedom Conservancy
- It's FOSS
- Android FOSS Apps Megathread
Rules
- Posts must be relevant to the open source ideology
- No NSFW content
- No hate speech, bigotry, etc
Related Communities
Community icon from opensource.org, but we are not affiliated with them.
founded 5 years ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
view the rest of the comments
Yeah if you want to be reductive about it, FreeCAD is a GUI wrapper for OpenCASCADE, its CAD engine. FreeCAD is designed to be extensible; the workbench system allows for several different workflows, and using the Python API it's not that far out there to make your own workbench for specialized tasks. You could build a clockwork workbench if you were interested in designing escapements and such.
The tradeoff is it can seem overhwelming because there's a LOT of functionality in there. I do almost all of my work in the Spreadsheet, Sketcher and Part Design workbench, plus the A2Plus assembly workbench from the addon manager.
Yeah OpenCASCADE is amazing because it's the only real geometry kernel that's open source. There's a few smaller ones like solvespace, but they're really more like toys. It's like the Linux of the CAD world.
Writing a geometry kernel is a monumental task, not unlike writing a real os kernel or a modern web engine. I've seen people just lay the basic foundations of a kernel as their PhD thesis. Most of the commercial ones were written decades ago and are still being worked on - the big ones are Parasolid ACIS, ShapeManager, CGM. The last one would maybe be considered a newcomer cause it's only 15-20 years old.
I just thought in hindsight, my response to you plugging freecad is funny.
It's like you took me into your workshop with all these benches, and I just point at the openscad bench like a caveman and grunt "scad".
Yeah somehow I never hitched horses with OpenSCAD; like I can't imagine designing a table or cabinet purely through code. Using the Part Design workflow can work a lot like how tools work, lay out the location of the feature, draw the profile of the feature, then do an additive or subtractive operation to create the feature...the design process in basically any similar CAD package becomes a dress rehearsal for the build in a way.
That makes total sense. I was on my way to mechanical engineering when I was learning autocad and autodesk mechanical desktop if you remember that. Now it's just in autocad. (I guess that's an example of how things used to unshittify. I bet adobe would bring back MD as a separate product nowadays.)
So if you try to enter woodworking after that experience, it feels right to model projects like that. I had learned a lot of coding by this point. So adding the code into parts for flexibility felt great.
This is going to sound complicated. That's because I bet you can do this with one click. But I thought it was cool I model a compound mitre angle for a cut using numbers I calc'd on Octave (matlab-like foss). Since I'm just a tinkerer, I could only imagine how powerful that could be for pros. Lots of "where was this when I needed it" thoughts.
Curious to hear what it's like making parts with a spreadsheet. Is it like coding?
I use openscad a lot, and just tried using spreadsheets -- adding parameters to each property in a part still seems really clunky, compared to editing a scad file in Emacs, which I vastly prefer, especially now that there's AI code autocomplete.
It is very slightly like coding, it helps to understand Python's syntax because as you get into things like the macro system and referencing cells in a spreadsheet, you're skimming the upper atmosphere of FreeCAD's Python API.
Just about every text box in FreeCAD where you can enter a dimension as a literal number, like using the dimension tools in the sketcher for example, you'll notice a little f(x) button. That means you can also put in an expression as well. It can be as simple as "I don't want to divide 6.675mm by four in my head right now" so you type in =6.675mm/2, or you can reference other objects. So you can do something like =overallThickness/2 to drill a hole halfway through something.
The spreadsheet workbench gives you somewhere centrally to put in values, do those calculations, things like that. You can then refer to them when sketching and part designing; say you name your spreadsheet "Sheet", you can refer to a cell like =Sheet.B2. Or, you can give individual cells an alias, so you can have Sheet.overallThickness.
It works a bit like the Parameters feature in Fusion360, but more functional. It is a bit clunky out of the box, but there are a few macros available in the Addon Manager that let you highlight a column of cells, and it will apply the contents of each cell as the alias of the cell to it's right, there's another that allows you to click a line in the Sketch workbench, click a cell in the spreadsheet, and with one button click assign that cell's value as the dimension, and it's semi-smart as to what kind of dimension you need.
I find that doing it this way versus entering literal values into sketches puts all the dimensions in one place where I can read them all, and I don't mix up values that happen to be the same but for different reasons, which can screw you over if you have to make an alteration later. "Ugh, I have to go through like five sketches and change all those 4.5mm dimensions to 5mm. Wait why is that wrong? Oh not THAT 4.5mm..." I also try to do as much of my math in the spreadsheet as possible instead of having them in sketches, partially because again they're all in one place and easy to check, alter and fix, but also because that spreadsheet becomes a useful part of the set of drawings once I go out to the shop to build the thing I've designed. There are projects where I only printed the spreadsheet for reference in the shop. Note I forgot to list the Techdraw workbench, which is used to create dimensional drawings from your models, because sometimes I just don't.
I use the spreadsheet to hold dimensions/variable and formulas, makes it easier to modify designs. If I want to change a length, hole size height etc just change the spreadsheet values don't have to mess around with the sketches or 3d part designs directly.
One slightly frustrating thing i found is sometimes it fails to recompute the design or processes it incorrectly when values are changed by large amounts, that's probably more to do with how I design things though
I've seen it do things like that for two reasons:
If your change causes the number or arrangement of faces to change, this currently breaks things. This is what people in this thread talking about the topological naming issue are about; it keeps track of which faces are which by giving them names when they are created, and then when another feature is added to that face, it's linked by name. If you go back, edit an earlier step which creates more or fewer faces, it recomputes the model and might name them differently, so features suddenly move.
Sometimes I've had the sketcher just decide to turn a sketch inside out, because sometimes things like tangent constraints have two stable ways to be "fully constrained" or the existing constraints make different shapes with different dimension numbers.
I have seen both issues, when the sketcher starts to play up sometime I add more constraints to try to "anchor" a tangent in a certain direction but it can make the sketch messy The most reliable way I've found to stop it is small incremental changes e.g. say I want the length of a part to change my 40mm I'll change the size in 5mm increments allowing FC to recompute the model between each step. It's fiddly and frustrating but I can live with it, once you get to understand it's quirks Freecad can be very useful