3D printing on OpenBSD? Yes, that’s a thing
undeadly.org
undeadly.org
FreeCAD has been p great OTOH, and has baked in support for OpenSCAD scripts, if you really need that.
If you are not allergic to the cloud or proprietary solutions, Onshape is a very good tool with it's own set of annoying things.
OpenSCAD might not have all the bells and whistles you’d expect from a WYSIWYG editor, but at least it doesn’t fubar hours of your work. As usual, formats you can edit with a text editor are the most robust. It is definitely not an “objectively worse way to do parametric modeling”.
However, the PartDesign workbench is substantially more capable and more comparable to other CAD programs, and a substantial portion of the dev work on FreeCAD has been targeted at making it less fragile. You can also avoid most breakages in PartDesign by following best practices that can be found on YouTube or the FreeCAD wiki.
A continuing issue is constraint-related issues which you mentioned. I've never seen a file explode after save and load - if that happened, it's likely it was already broken before save and FreeCAD failed to inform you, which I have definitely seen. What I have seen is a similar problem where a sketch is valid, but there are one or more alternative valid configuration under the same constraints. Everything is fine and the file is usable as long until you try to adjust certain parameters driving a sketch and the sketch flips into a totally different configuration. Even after reverting to old parameters, the sketch will be now be stuck in this new configuration and everything built on it will be broke. This is usually avoidable, but it requires seriously thinking about how you're constraining your sketch to avoid this kind of fragility.
It's also important to know that you can combine workbenches. A solid created in the Part workbench can be imported into the PartDesign workbench as a base feature. A PartDesign solid can be used in Part boolean operations.
This is all to say that while FreeCAD definitely has a much steeper learning curve than OpenSCAD, it can generally do the same things as OpenSCAD without any Sketch/PartDesign-related fragility while having many additional capabilities available if you need them.
> Even after reverting to old parameters, the sketch will be now be stuck in this new configuration
I have definitely experienced that too. Constraint-based design is very powerful, when it works. But it doesn't always work. A boolean operation always has a result (at least in theory), but a set of constraints doesn't always have exactly one solution, or any solution at all. Which would be okay if the program could reliably tell when something is well-constrained, so that changing a parameter doesn't make it jump to a different solution - one that isn't even on the face I'm trying to make a hole into - which causes the hole and the faces created by the hole to cease existing - along with the sketch I drew on one of those faces that now doesn't exist and so neither does my sketch... It all collapses so easily. How to keep track of faces that jump in and out of existence as the parameters defining them change would probably be a good PhD thesis topic.
I feel like I perhaps needed to further emphasize the separation between Workbenches. FreeCAD workbenches can interoperate, to a degree, and the output from one can be used in another. Moving through Workbenches is a part of advanced FreeCAD use. However, they are separate and largely self-contained tools. Different Workbenches operate in different manners not just in regards to the interface but also in regards to their underlying function.
The Sketcher Workbench is where the constraints system is, and mainly exists to support the PartDesign Workbench. The Part Workbench is a decent CSG modeling system that works mostly like OpenSCAD or any other boolean operation based modeling system. It is not reliant on the Sketcher Workbench constraints system. You could use a Sketcher Workbench created Sketch to create a Part solid, but you can also use the output of the Draft Workbench (which could even be based on an imported SVG). It also has primitives, so you can model from primitives.
FreeCAD is intended to be modular. It has a ton of Workbenches and there are more available as addons. How things work in one Workbench is not how things work in other Workbenches, and shortcomings in one should not be projected onto others. If you find OpenSCAD useful, I seriously suggest giving FreeCAD's Part workbench a try. I found that the same sort of modeling I did in OpenSCAD was often easier in FreeCAD and it has fillets to boot. I now use the PartDesign workbench more than I do the Part workbench, but I have a nice cosplay prop I drew in Inkscape and then modeled in the Part Workbench after giving up on doing the same thing in OpenSCAD.
I also feel that it is a bit unfair to say you can't trust them. The PartDesign workbench is the most popular, most complex, and most fragile workbench, but I've never seen it take a step back - every stable update has improved its function and reliability. What's more, unlike many open source projects the 'new shiny' (in this case Part Design) has not been forced on people who are using other parts of the project. It's not intended to replace the rest of FreeCAD, but specifically aimed at people looking to model complex solids in a manner comparable to commercial CAD programs, even if the workflow is very different.
edit: The only universal problem in FreeCAD is the topological naming problem, and it almost never comes up outside of PartDesign because outside of PartDesign features are rarely reliant on referencing individual components of a shape by name. CSG modeling isn't really subject to the topological naming problem.
If you want to avoid the topological naming problem(something that can be avoided with a 10-20 minute youtube video on the topic), try RealThunder's fork.
as for your complaint about fillets, there are plenty of openSCAD libraries to assist in the task. using libraries within openscad is pretty routine.
if you're designing stuff like gears/propellers/bolts/nuts/threads/pins, a purely parametric solution is fantastic. That said, I would never tell someone to go try to design their paper-towel holder or dish-rack with it or prototype a robot with it.
As with much of design, picking the right tool for the job is a large portion of the battle.
Sorry but fillets and chamfers aren't features that should be complicated, they are basics.
And if using libraries is pretty routine, why does library management boil down to "just download some scripts and throw them into some directory". Even python does this better.
Openscad is a text/programming based cad, but it doesn't fully leverage the advantages that come with that. A proper package manager, good linting, etc. are all absent. It feels unfinished and outdated in many regards.
I want to like openscad and I have made a bunch of models with it. But all in all I can't bring myself to do so.
I do, "meant to" and "actually does" can be miles* apart.
> Also OpenSCAD sucks
Counterpoint: no it doesn't.
Would we tolerate an article that claimed OpenBSD had a complete "stack" for desktop publishing if one of the steps was "save the file on a USB stick and plug it into a windows computer connected to the laser printer" or "just connect a raspberry pi running linux to the printer"?
Would we tolerate an article that claimed OpenBSD had a complete "stack" for desktop publishing if the only option for "word processing" was emacs and latex?
Saying "Blender has been in ports for ages" is hand-wavey nonsense. Does Blender actually work in openbsd?
With FreeCAD, even if you never used it before, a CAD person could figure it out. Its mostly learning which icons do what. (IB4, someone mentions the topological naming problem, that its completely avoidable with a 10 minute youtube video on the subject, or you can download the RealThunder fork of FreeCAD if that 10 minute youtube video is too time consuming)
I guess my point is: Yes its technically possible to do a lot of things on any OS, but it isnt practical.
I disagree. I'd expect any engineer these days to have at least modest skills in programming.
And OpenSCAD is a rather modest programming, the script itself always finishes, so it's not even Turing complete. So having mechanical engineer to be comfortable with OpenSCAD looks like a quite reasonable thing.
With FreeCAD you have a lot of useful and convenient things, but you immediately lose the parametrization. Can't convert back to OpenSCAD if you'd like. So it's hard to move to FreeCAD from OpenSCAD if you got used to OpenSCAD capabilities.
This is probably just your bubble.
Sure most engineers take 1 or 2 programming classes in college, but they are super basic, and once they get into industry they never program again.
Anyway, I'm one of these programmers and engineers, I make a ton of money because my fellow engineers don't program.
You can run into annoying problems with the sketch constraint solver when changing those parameters though. Depends which parameters and what you've used them for.
That specific one you can force by adding a construction line between the point and the constraint line, with an absolute angle constraint on the construction line. Because lines have direction (a hidden direction! Got to love critical functionality with no representation or control in the UI whatsoever!) the angle constraint forces the solver to pick only one of the two solutions because the other would make the angle 180 degrees out.
There are other problems that are much harder though, that I haven't yet figured out how to work with, mostly involving arcs. It's easy for the solver to flip which side of a circle a tangent constraint solves to, and because in that case there often isn't a fixed angle to work with the construction line trick doesn't work. When that happens on an arc, you end up terminating a line in free space, or wrapping the arc the other way round the circle, or something. I do wish arcs would only allow constraints between their endpoints.
What would solve a lot of these cases is a winding order constraint you could apply to a set of points - "make sure these 3 points in this selection order are always anticlockwise around their median" or something - to disambiguate solution pairs, but I dread to think what the UI for that would end up looking like.
For one of my projects, this seemed to be enough of a benefit that I redid my original FreeCAD design in OpenSCAD for eventual uploading.
For me, the next release will have something like valgrind added to OpenBSD base. IIRC you would use ktrace(1) to look for issues. valgrind is one of the very few reasons I keep Linux around.
But why not have OpenBSD doing its own checks ? Having that is in line with checks already there (ie W^X).
[1]: https://undeadly.org/cgi?action=article;sid=20230912094727
Can you print stuff if you only have OpenBSD? Yes. But can you print stuff while running the full stack on OpenBSD? No.
And there's nothing special about the first one, you could do that since a long time since there are online CAD software and online slicers.
What do you mean? It seems like he can do that just fine. Either via USB/sd or the webbrowser.