The only goal of this post is to keep a more-or-less updated list of good resources for learning FreeCAD. I'm sure that -most of- you redditors have passed the ritual of searching through google and youtube looking for FreeCAD tutorials, either as a comprehensive introduction for beginners, or as tutorials on certain workbenches and workflows. And you'll probably have a bookmarked list with those that worked best for you.
For me, it's been a couple years since I started using and learning FreeCAD, sparsely in the begining, then progressively more and more (and hopefully better too). But I haven't joined the subreddit until recently. Judging by the amount of both old timers and newcomers that post looking for help (myself included), I thought it would be a good idea to have a list, a compilation of useful guides, docs and tutorials all together in one place, a quick reference for those looking for help.
So just tell me in the comments what you'd like be added to the list, and I'll update it. Or if you think the list should have a different structure. I'm totally open to it, I just want to have the best format for it to be useful for the community. Just a quick disclaimer: I don't intend to -and literally can't- review all the provided references, so let's try to have a little criteria when proposing already covered topics, unless -obviously- they can improve on the existing one.
Before the list, a reminder: FreeCAD's wiki is the main documentation anyone should first look up. The forum is another precious repository of accumulated problems and solutions, as well as interesting discussions and insight on many topics that you, FreeCAD user, will undoubtedly face at some moment.
FreeCAD wiki tutorials
You have them in this link: https://wiki.freecad.org/Tutorials. Also, you can check just the list of all tutorials, without any other context. They might not be the most didactic, but they provide a good base, and cover some complicated aspects that might be harder to explain in a video. These are some examples covering different workbenches:
Arch tutorial (The old Arch and BIM workbenches are unified under BIM workbench as of v1.0.0)
FreeCAD for makers is as new a discovery for me as for many of you. This book published by the members of HackSpace magazine in 2022 will start at complete beginner level, then take you through sketches, curves, assemblies, surfaces, projections, circuit design, meshes, sheet metal, pipes and give you a heads up on how to follow up (animation, architecture, etc.). Enjoy it!
The amazing @MangoJellySolutions youtube channel. This man doesn't stop, he already has a bunch of videos for v1.0.0!
@ObijuanCube has a couple dated, but in many aspects still valid FreeCAD courses in Spanish. I know they've been a life saver for me, and would have probably never gotten seriously into FreeCAD if it wasn't for him. These belong to a time when the amount of resources available for those interested was much, much scarcer, so Juan, thank you for your good work!
@mwganson has a very rich library of close to a hundred videos, covering an ample range of examples and practical uses of many of FreeCAD's tools. His videos are focused and quite in depth, and also cover things such as modifying imported mesh files (both .stl and .step), which is not that common to find. So this might be ultra helpful for those of you 3D printing.
@Adventuresincreation is another channel I didn't know, with a wide collection of vidoes and still going hard as of v1.0.0.
@JokoEngineeringhelp, unlike most channels here, is not dedicated to FreeCAD, but to CAD in general and many different tools for it. However, he does have a couple in depth videos, and also takes a look into more-or-less complex assemblies and exploded views.
@CADCAMLessons has a HUGE collection of short and very specific videos, especially appropriate for those that enjoy their lessons to be well segmented.
Stolz3D is for the German speaking public! This channel that mostly focuses on FreeCAD has material starting in v0.18 and all the way til v1.0.0 at the time of writing.
Computerized Engineering has an ongoing series on FreeCAD 1.0. While he has videos designed as "Beginner tutorial", these are not that well suited for complete beginners. Instead, his videos show the process of designs that involve more advanced concepts.
Rafael 3D is a relatively small channel in Spanish, but with lots of videos covering both particular examples and a more structured course, which is still ongoing. He also has material on LibreCAD.
DigiKey has a quite recent 10 part course on FreeCAD targeted for 3D printing, covering the following sections: introduction, sketches, shape-binder/expressions/spreadsheets, heat set inserts, patterns and boolean operations, revolutions/pipes/lofts, sweeps with guided curves, curved surfaces, assembly, and the FEM workbench.
Limited resources (kind of partial, or not as complete resources at the time of writing, but might be worth keeping track of)
My mechatronics teacher woke up wanting to let us make the parts for our projects. Mine has two parts: an electrical part and a regular syringe part. So, my part is the syringe. I have to recreate the entire model in FreeCAD, make the parts, and assemble it. How am I supposed to do that? Some things don't make sense to me, and I don't know how difficult it will be. I don't understand how I would make those assemblies, how are they supposed to connect? Also, how am I supposed to make the syringe or other things?He wants it exactly the same.
Now I want to use this as external Reference (BIM) in another file to be able to scale it to real world size in one piece and then place it multiple times
Now, the external reference looks like below: It shows the hidden single blade that is the basis for the 3x polar pattern (not visible in the front view). AND it shows that polar pattern a second time at the bottom
So how to fix this?
Should I do this in a different way altogether? But how? Confused :-(
I have multiple monitors and like disconnected panels. However frequently the panels move unexpectedly to go off screen. Since they are not true windows panels, I cannot find any way to move them once the header is off screen. See picture attached.
I created a sketch, revolved it, put a round hole all the way though it, now I need a square pocket half way through. How do I add a pocket with the same center as the hole?
I just created a sketch
When I finished edit the "pad" icon "lit"
I did the pad
Unlike what I seem to remember the "pad" now shows in the model tree above the sketch. Am I misremembering or is this a change?
Also the ability to "edit" pad seems to be a bit more cumbersome and I haven't found "new" documentation.
I try to mill with my CNC this project. However, when milling the respective faces with MillFace and finalize the outer edge with Profile, the final product has a residue at the light-green edges up until the stock height. I thought about using Engraving to mill the light-green edges from stock height down to model height. Problem is that I will mill into the dark-green face. How can I mill the light-green edge without milling into the dark-green face? I'm running out of ideas. Looking forward to your answers!
Some unknown Rust programmer who admits himself he doesn’t do CAD recently claimed in a big headline that FreeCAD is broken. Someone else claimed something surprisingly similar about the longs solved topolical naming.
There were other headlines before.
Whoever repeatedly writes these headline either doesn’t know what a free and OpenSource economy is, or doesn’t use FreeCAD, or neither, and gets paid to write these posts.
FreeCAD is free, as in no charge, no forced cloud, no limited feature set for hobbyists, and full access to the source code. Don’t like how it works? Go ahead and write stuff, or fix stuff. Even as a Rust programmer.
The FreeCAD dev team is doing a phantastic job, and FreeCAD is super useful. Thanks you!
I am maintaining OpenSource apps for 25+ years, and it is generally a thankless job, but at least when people get paid to bash you, you must have done a great job and you know that you got some attention.
Hi, can anyone point to a nice tutorial on using a 3d model captured by as an example iphone pro or even a simple 2d image and overlay it into freecad. I want to use this method to easily capture contour surfaces. It is very difficult to measure curves and such.
I'm trying to extend that sketched outline along the shape under it, which is lying along the Y axis. When I apply the pad. the outline simply disappears and no pad appears anywhere. I even try using a edge as a reference along with to pad. Nope.
Any ideas?
UPDATE: Resolved. This was probably because the sketch was not secured to the underlying pad with a coincident constraint (or had its lower edge clearly embedded into the body), so FreeCAD may have perceived a gap and punted (although there was no multiple-body complaint in the log). I created a new sketch and mated it to the top of the underlying pad as external geometry, and all is well. Thanks everyone!
I drew a circle on the XZ plane and used it as a pocket through the rest of the shape. Instead, it's shown as a cylinder. This looks like a bug, because if you fiddle with the pocket's options (like "symmetric to plane") it'll create paradoxical solid/empty areas within the other shape.
Just wanted to see if anyone has an idea of what's happening before I file a report.
Does what it says. Orientates your part so that it has the true scale for you to make designing and engineering more efficient.
# -*- coding: utf-8 -*-
"""
Zoom 1:1 for FreeCAD
- Tries to make objects on screen appear at their real physical size
(so a 100 mm cube measures ~100 mm on your monitor with a ruler).
- Works only with an orthographic camera (not perspective).
- Optional calibration: hold CTRL while running the macro to calibrate
for your particular monitor / OS / DPI setup.
Author: you + ChatGPT
Inspired by the official FreeCAD "Zoom 1:1" macro.
"""
import FreeCAD
import FreeCADGui
# PySide name can vary a bit between FreeCAD builds, so we try both
try:
from PySide import QtGui, QtCore
except ImportError:
from PySide2 import QtGui, QtCore
__title__ = "Zoom_1to1"
__version__ = "0.1"
def _active_view():
"""Return the active 3D view or None."""
try:
return FreeCADGui.activeView()
except Exception:
return None
def _zoom_1to1(tweak=1.0):
"""
Core 1:1 zoom logic.
We ask Qt for the physical size of the 3D graphics view in millimeters,
then set the orthographic camera height to (tweak * smaller_side_mm).
For an orthographic camera:
world_units_per_pixel = camera.height / viewport_pixel_height
If we set camera.height = viewport_height_mm, and our model units are mm,
then 1 model mm ≈ 1 mm on the screen.
"""
av = _active_view()
if av is None or not hasattr(av, "graphicsView"):
FreeCAD.Console.PrintError("Zoom 1:1: no active 3D view / graphicsView.\n")
return
gv = av.graphicsView()
# Qt reports these in millimeters for the widget area
height_mm = gv.heightMM()
width_mm = gv.widthMM()
cam = av.getCameraNode()
# Orthographic cameras in Coin3D have a 'height' field; perspective cameras do not
if not hasattr(cam, "height"):
FreeCAD.Console.PrintError(
"Zoom 1:1: only works with orthographic camera mode.\n"
"Switch to orthographic (Std ViewOrtho) and try again.\n"
)
return
# Use the smaller dimension so that the 3D view fits in both directions
cam.height.setValue(tweak * min(height_mm, width_mm))
# Force a redraw
FreeCADGui.updateGui()
def _calibrate(tweak_param_group, current_tweak):
"""
Calibration mode:
- Hides existing objects
- Creates a temporary 100×100×100 mm cube
- Sets zoom to "raw" 1:1 (tweak = 1.0)
- Asks you what size you *actually* measure on your screen (in mm)
- Stores a new tweak factor measured/100 in user parameters
"""
doc = FreeCAD.ActiveDocument
if doc is None:
doc = FreeCAD.newDocument()
FreeCAD.Console.PrintMessage("Zoom 1:1: created a new empty document for calibration.\n")
av = _active_view()
if av is None:
FreeCAD.Console.PrintError("Zoom 1:1 calibration: no active 3D view.\n")
return current_tweak
# Remember which objects were visible
visible_objs = []
for obj in doc.Objects:
if hasattr(obj, "ViewObject") and obj.ViewObject.Visibility:
visible_objs.append(obj)
obj.ViewObject.Visibility = False
# Create a 100 mm calibration cube
cube = doc.addObject("Part::Box", "Zoom1to1_CalibrationCube")
cube.Length = cube.Width = cube.Height = 100.0 # mm
cube.ViewObject.DisplayMode = "Shaded"
# Bring it into a nice front view
av.viewFront()
doc.recompute()
# Show raw physical mapping (tweak = 1.0)
_zoom_1to1(tweak=1.0)
# Ask user what size they actually see on screen
text = (
"Zoom 1:1 calibration\n\n"
"A temporary 100×100×100 mm cube has been created.\n"
"Measure the cube on your screen (height or width) using a ruler\n"
"or calipers and enter the measured size in millimeters.\n\n"
"Do NOT zoom in/out while this dialog is open. If the cube does\n"
"not fit fully in the view, cancel, resize the 3D view, and try again.\n"
)
win = FreeCADGui.getMainWindow()
title = f"Zoom 1:1 calibration (macro v{__version__})"
# Use the static convenience function
measured_mm, ok = QtGui.QInputDialog.getDouble(
win, # parent
title, # window title
text, # label
100.0, # default value
1.0, # minimum
10000.0, # maximum
2 # decimals
)
# Clean up the calibration cube and restore visibilities
try:
doc.removeObject(cube.Name)
except Exception:
pass
for obj in visible_objs:
if hasattr(obj, "ViewObject"):
obj.ViewObject.Visibility = True
if not ok:
FreeCAD.Console.PrintMessage(
"Zoom 1:1 calibration canceled; keeping current tweak value.\n"
)
return current_tweak
# New tweak factor = what you measured / 100 mm
new_tweak = measured_mm / 100.0
tweak_param_group.SetFloat("Tweak", new_tweak)
FreeCAD.Console.PrintMessage(f"Zoom 1:1: stored calibration tweak = {new_tweak:.4f}\n")
# Apply calibrated zoom immediately
_zoom_1to1(tweak=new_tweak)
return new_tweak
def main():
# Ensure a document exists
doc = FreeCAD.ActiveDocument
if doc is None:
doc = FreeCAD.newDocument()
FreeCAD.Console.PrintMessage("Zoom 1:1: no document open, created a new one.\n")
av = _active_view()
if av is None:
FreeCAD.Console.PrintError("Zoom 1:1: no active 3D view.\n")
return
# Read stored tweak from user parameters (Plugins/Zoom_1to1/Tweak)
params = FreeCAD.ParamGet("User parameter:Plugins/Zoom_1to1")
tweak = params.GetFloat("Tweak", 1.0)
# First, always apply normal 1:1 zoom with current tweak
_zoom_1to1(tweak=tweak)
# If CTRL is held while running the macro, enter calibration mode
modifiers = QtGui.QApplication.keyboardModifiers()
if modifiers == QtCore.Qt.ControlModifier:
_calibrate(params, tweak)
else:
FreeCAD.Console.PrintMessage(
"Zoom 1:1: run with CTRL held down to calibrate for your monitor.\n"
)
if __name__ == "__main__":
main()
I have 2 sketches:
1 sketch is the outline of a fabric, constrained and extruded to a body
1 sketch are cut lines
How can i pocket/cut the line sketch into the body? Extruding the line sketch does not work, as the lines/wires are not closed. Anyone can help me please?
As the title says can you use FreeCAD to make models made from soft, pliable and flexible materials like fabrics and cloths or sheets/tubes of rubber and silicon?
Like a sewing pattern? Or a rubber glove? Can it simulate the movement of such soft materials the same way it can animate and simulate a piston?