FreeCAD on Raspberry Pi 4
scruss.com
scruss.com
Since it seems like there's a good demand for FreeCAD on ARM between Raspberry Pis and even the new Pinebook Pro, and there's now opportunity with our recent DigitalOcean infrastructure sponsorship [3], I think I'm going to start up an apt repository soon for ARM packages, at, say, apt.freecad.io. That way I can provide the dependencies for Python 3 builds, plus FreeCAD itself in Python 2 & 3 flavors of 0.18.4 stable, and eventually daily builds as well. This is in addition to the PPA [4] which could provide ARM packages for Ubuntu on the Pi/PBP, but I mostly have those architectures disabled currently.
[1] https://github.com/coin3d/coin/
[2] https://forum.freecadweb.org/viewtopic.php?f=42&t=37458
[3] https://www.kwk.systems/blog/posts/november-and-december-upd...
To me, the 4 GB Raspberry Pi 4 is quite an acceptable desktop. Yes, I could have a Pinebook, but they don't have the support community.
I wrote about FreeCAD because the charity I work for — Makers Making Change [1] — makes open source 3d printed assistive tech to empower people with disabilities. We're always looking for free CAD solutions, and to get FreeCAD running well on a Raspberry Pi 4 was too good to miss.
I'm trying to get as many of our designs usable in free software as possible. Up to now, I've been a pretty solid OpenSCAD user. It's good, but not perfect: it's possible to generate non-manifold volumes even if you do the right thing all the way through.
eg the Part and PartDesign workbenches seem ok, but there seems to be no stable way of assembling multiple parts together.
Instead, there seem to be several competing assembly modules, all incompatible with each other. And none of which are stable.
So, when I create a part intended to be a reference design, I can't use it in any assembly as it'll then be incompatible with every other one.
How do you do things with FreeCAD, as the above assembly problem seems like a complete blocker for any real world use? :(
I believe "Assembly4" is the most advanced assembly workbench but I've never tried it, I'd be interested in hearing from someone who has.
Yeah, I've tried both A2+ (A2plus) and Assembly4. Both seem to work ok for at least basic things.
However Assembly4 requires attachment points to be defined in the source parts instead of just storing the attachment info in an Assembly file.
That means source parts will have Assembly4 stuff added to them, ruining their re-use (eg with external people) unless they're also using Assembly4 exclusively.
It's really unfortunate, as I wanted FreeCAD to be useful for publishing reference designs people could use even (say) 10+ years in the future. :(
How did you try to learn FreeCAD? It took me quite a few tries to get the hang of it, but it is super powerful once it starts to click.
The "Part Design" workflow is best, in my opinion. Set workbench to "Part Design", create a "body", create a "sketch" on one of the xy,xz,yz planes, and then draw rectangles, circles, line segments, arcs, b-splines, etc. in the sketch. Constrain it using the constrains, pad it into a solid shape of a given width, then click on a surface on the solid and create a sketch on that surface, again draw the sketch and constrain it, and then you can either create a pad out of that surface, or a pocket into it, and so on. Once you're done, select some edges that you want to tidy up and either fillet or chamfer them, and the part is done.
You can also add or remove material by creating another sketch on one of the base planes and adding a new pad or pocket, or by revolving a sketch around a construction line. You can create "datum planes" in space to allow you to create sketches on planes that don't actually exist as either base planes or surfaces in the part. And you can add a linear pattern to duplicate a feature in a straight line, or a polar pattern to duplicate it in a circle, or a multitransform pattern to combine several of these. The Part Design workbench is really powerful.
There are some good tutorials on YouTube, but make sure you're watching "Part Design" tutorials. The older "Part" workflow is almost useless in comparison, it's basically the same as what you can do in OpenSCAD except without the programmability.
The worst part about FreeCAD is that sometimes if you ask it to do a complex operation (e.g. a fillet on some weird geometry), rather than just saying it can't work out how to do it, it segfaults.
This GIF shows a simple part I recently made in FreeCAD: https://incoherency.co.uk/blog/cad-dojo/img/lathe-tool-holde... - It starts out with a sketch that is basically a rectangle with a dovetail cross-section cut out of it, padded up into a solid. Then a new sketch is created on one end with which to cut out the rectangular slot, and then a sketch is created on top to cut out holes to the required depth, and then some of the edges are chamfered.
In Fusion360, you can create global variables/parameters, calculate new values from them, and reuse them across parts. I haven't found any equivalent "central configuration" ability in FreeCAD, which is pretty important to my workflow.
(I use Fusion too, and think it's overall easier to use and more polished, it just seems strange that the lack of parametricity is what irks you.)
For example you could create a cell called "cylinderbore" and have either a static value in it, or a value computed from something else, and you could set a radius constraint to "cylinderbore/2", or "cylinderbore/2 + 0.3" or whatever you want.
There's a demonstration in this 5-minute video: https://www.youtube.com/watch?v=b07qbhYHZbU
(Contrary to what the video implies, you don't have to manually click on each constraint whenever you change your spreadsheet, the global recalculate button will do it.)
For the central driving paramterss I recommend using a spreadsheet, as others have mentioned. I usually call that "inputs". And then have another one called "outputs" if I need to calculate something based on geometry, like total material/weights etc.
FreeCAD 0.17 release was dedicated to Roland Frank.[0]
FreeCAD has an OpenSCAD module and it makes for a really simple workflow of exporting your .csg files and importing them to FreeCAD. Both applications are scriptable, too, so with a little bit of bash and python you can automatically generate updated STLs and STEPs as you code in SCAD.
Being able to run both on an RPI4 maybe with curaengine would make a powerful little shop PC.
OpenSCAD is _awesome_ for targeting 3D printers, though.
Hint: 32GB of memory is not enough.
And now using OpenSCAD feels like a chore, too much bruteforce coding.
I was sort of hoping this post would at least mention in passing the complexity of assembly that is possible on this hardware.
You have to stay in the limitations you have, but that's true on any system and always has been.
I guess education? Especially given the pi is very cheap and can be used for all sorts of other things?
Well, it did about 2-3 months ago when I found the system - an ancient Dual 3GHz Xeon (Nocona era) with 5GB of ram - and pt Win7 on it just to see if it would work.
It was even fairly usable.
Some software that needed more recent CPU instructions (~SSE something?) didn't work, but Firefox seemed ok.
Interestingly, no modern Linux distribution was able to boot. Wouldn't even get into the installer. FreeNAS 11.2.<something> booted and worked fine.