Hacker News new | past | comments | ask | show | jobs | submit login
FreeCAD on Raspberry Pi 4 (scruss.com)
91 points by app4soft on Feb 18, 2020 | hide | past | favorite | 36 comments

Hi all, I'm the FreeCAD Debian package maintainer. I just wanted to touch on the "complex technical reasons" portion. Broadly speaking, it's an interaction with our scenegraph library Coin [1] and Qt 4/Qt 5--things work with Qt 4 on ARM, but crash with Qt 5, which is now the default build configuration in Debian due to Qt 4 removal. The full troubleshooting thread is on the FreeCAD forums. [2] That bug is an outstanding issue and blocks Qt 5 support on ARM, so if anyone wants to be heroic feel free to go digging there and look for a fix. The above post presents the instructions for a Python 2, Qt 4 build, but it's also possible, with the most recent versions of several packages plus a rebuild, to have a Python 3, Qt 4 build.

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...

[4] https://launchpad.net/~freecad-maintainers

FWIW, I've been using Freecad 0.18 on a Nano Pi M4 (64-bit ARM) installed from the standard Debian 10 repository of Armbian for the past several weeks with zero problems.

Oh, that's interesting! Do you happen to know if you're using OpenGL ES? (You can e.g. `dpkg -l | grep gles`.)

Hey - I wrote this article. Kind of surprised how popular it is; think I've had more hits today than I had all of last year.

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.

[1] https://www.makersmakingchange.com/

It's amusing to see people trying to make the Raspberry PI into a desktop computer. It's basically a tablet chip on a breakout board. You can buy a Pinebook ARM laptop for $100. By the time you've added a case, a keyboard, a screen, a battery, and a power supply to a Raspberry Pi, you're over $100 anyway.

Don't assume everything you see is financially motivated. Some people extract greater value in tinkering than the extra pennies they save by having someone do the tinkering for them.

I find it amusing to see people buy a Pinebook for $100, and miss out on the amazing customization and learning experience gained by building a system on top of a Raspberry Pi. Why sacrifice the fun, personalization, and learning of building your own just to save a few pennies by buying a prebuilt system?

I use FreeCAD with the ship design/testing module and it makes my (beefy) desktop warm up the room a bit. I suspect that you could use the Pi 4 for drawing (to some limit) just fine but if you're calculating a lot of splines and then displacement, I really doubt you'd want to wait for the results (if there was enough memory to finish).

Been trying out FreeCAD recently (0.19 development), but there seems to be a lack of coherent story about "how to put more than 1 part into an assembly".

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 tend to just manually position the bodies to see if parts look like they will fit together properly. You can reduce opacity (right click a body in the tree view, appearance..., drag the slider) to see how things fit internally. Obviously this is impractical for larger projects with more parts.

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.

Thanks. :)

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. :(

I've tried to learn FreeCAD on a few occasions, but I just don't get it. I guess I'm spoiled with OpenSCAD, which actually makes sense to my programmer brain.

FreeCAD generally feels more like a traditional CAD program to me. I'd use OpenSCAD, but can't for my application: OpenSCAD fundamentally uses imprecise shape approximations. You draw a sphere but get a high-poly ball, sorta like raster vs vector in 2D imagery. This is fine for a lot of applications, but I want to CNC large, smooth undulating surfaces. The best way to get into my CNC (Shopbot PRS alpha) is via Fusion 360, and Fusion 360 barfs tremendously quickly with those high-poly shapes unless you get the actual (mathematical, "vector") shapes in with a format like IGES or STEP.

OpenSCAD is _awesome_ for targeting 3D printers, though.

OpenSCAD will barf quickly on high poly shapes too. Try asking it to render a 1000x1000 point surface some time. That's not even a particularly crazy level of detail if your 3D printer is reasonably large.

Hint: 32GB of memory is not enough.

I find FreeCAD and OpenSCAD to be good for different things but definitely prefer FreeCAD overall.

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.

The big annoyance with FreeCAD for me is the lack of true parametric design.

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.

You can create a "spreadsheet" with named cells and refer to those names in your constraints.

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.)

That's very helpful, I didn't know about this feature. I'll give it a try.

Since FreeCAD 0.17 one can do this with "Expressions". Click the Formula button in entry objects and you can make a formula that contains references like "someotherobject.propertyname".

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.

Hm. I'm not sure I follow and I use Fusion regularly and FreeCAD a little. Does the property editor/spreadsheet in FreeCAD not count? You change a value, the dependencies get recomputed. Works about the same as in Fusion and certainly satisfies "parametric" for me.

(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.)

As other folks have mentioned, you can make a spreadsheet and then use those variables. It's pretty clunky but it works.

I found FreeCAD interface too confusing, but enjoyed using Solvespace. http://solvespace.com/index.pl

And now using OpenSCAD feels like a chore, too much bruteforce coding.

I'm also primarily attached to OpenSCAD, especially for creating 3D printed designs, but I've found a nice compliment in using it side by side with FreeCAD for generating STEP files for CNC and really nice technical drawings.

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.

To be fair, FreeCAD can be really hard to "get". It's a Big Tent serving a lot of markets, but without the billions of dollars that drive the commercial CAD market behind it. The modelling feels "off" if you're coming from commercial packages, the UI can be really hit and miss, and there's nowhere near the level of network effects when it comes to actually learning it as you would get with a commercial package.

This guy's videos have been very helpful for me: https://www.youtube.com/channel/UCoe3BcVuLC9I2_yFud5vp8Q/vid...

This guy (https://www.youtube.com/channel/UC_9HwDkwxllq5lFGkYBIH9g) also had great tutorials in english (and also a german channel) but sadly he died in an car accident and did not get the chance to use / make tutorials for the new part design workflow :(

> but sadly he died in an car accident

FreeCAD 0.17 release was dedicated to Roland Frank.[0]

[0] https://www.freecadweb.org/wiki/Release_notes_0.17

For part design I can really recommend the video explanations on YouTube. Before watching them I was completely lost.

I know the RPi4 is more powerful than previous iterations but don't CAD programs generally require pretty beefy CPU/GPU hardware?

I was sort of hoping this post would at least mention in passing the complexity of assembly that is possible on this hardware.

The original release of FreeCAD was in 2002. The RPi4 will handily outclass anything anybody was running it on at the time.

You have to stay in the limitations you have, but that's true on any system and always has been.

Still wondering what the use case is...I just can't see what advantage the pi would have over using FreeCAD on any typical desktop or any laptop...

I guess education? Especially given the pi is very cheap and can be used for all sorts of other things?

I think that would be it, yes. There's a lot of people for whom giving them a ~$50-100 "computer" that blows away anything I had in 2010 is still a good thing. The more real tools and programs you can get running on that, the better off they are.

They aren't running FreeCAD from 2002, they are running FreeCAD from 2020. I bet you couldn't run 2020's Firefox on a system from 2002, even though Firefox existed in 2002.

Perhaps interestingly, Firefox runs on a (Win7) system from ~2004.

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.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact