简介这份 FreeCAD 中文教程 PDF 面向零基础到进阶的 3D 建模自学者与开源工具爱好者针对官方 wiki 信息庞杂、新手难以按序上手的问题把社区手册整理成循序渐进的翻译版本。内容按安装Windows、Mac、Linux、3D 视图导航、参数化建模与产品设计、工作台速览、参数对象界面、界面自定义、文件导入导出、FEM 分析、Cura 与 Slic3r 切片、Python 脚本、BIM 建模、G 代码生成、2D 图纸绘制等模块依次展开示例驱动、讲解统一可边读边对照软件操作。压缩包内共 1 个 PDF 文件约 14.8MB单文件便于跨设备阅读与按目录检索。目前已有 10990 人学习下载从中文 FreeCAD 资料的角度看具备一定参考价值读者可借它建立参数化建模的整体认知理清从建模到 3D 打印、脚本扩展的完整链路并作为日常查阅的案头手册。1. 机翻手册不是教材是路径图第一次打开 FreeCAD 的人十分钟内大概率会遇到同一件事视频里博主的工具栏上有个按钮你的界面上没有。原因往往不是装错而是工作台没切对有时是因为你手上的 FreeCAD 中文教程和屏幕上的那版软件隔了好几年。这份译稿的价值就在这里它把官方 wiki 里散落在几十个页面的安装、界面导航、草图约束、布尔运算、网格导出、切片对接、Python 脚本、FEM 与 BIM 编排成一条从零到出 STL 的直线而且是中文。它适合已经决定用 FreeCAD 干活、却被英文 wiki 的目录结构劝退的人不适合想找一本术语精准的词典的人。机翻痕迹很重“Pad”被译成“垫”、“Constraint”被译成“限制”这类问题到处都是所以正确的用法是把它当成一张路线图顺着它走流程遇到具体参数再回官方文档核对原词。2. 装起来再用三平台安装路线与首选项里必须改的六项安装这一步看着最没技术含量但后面所有“按钮找不到”“脚本跑不通”的问题一半能追到这里。FreeCAD 在 Windows、macOS、Linux 上的运行行为一致安装方式却完全不同而且它允许稳定版和开发版共存——这一点对跟着旧教程学的人特别有用因为译稿对应的是 0.16 那个年代的界面你完全可以装一个新版主力用、再留一个旧版对照菜单。2.1 三条安装路线的实际差异Windows 走的是预编译安装包双击、接受 LGPL、选路径一路下一步。要留意的是安装包里捆绑了 Python 解释器和一批附加组件装完不需要配 PYTHONPATH除非你要做二次开发。另一个容易被忽略的点是虚拟机FreeCAD 依赖 OpenGL在虚拟机里跑可能出现 3D 视图发黑或者直接拒绝启动这不是安装坏了是图形加速没透传。macOS 是 zip 包解压后把应用拖进 Applications 目录。真正的门槛在 Gatekeeper非 App Store 来源的应用首次启动会被系统拦下需要去系统设置的隐私与安全性里放行。很多人卡在这一步以为包损坏了其实只是权限策略。Linux 最省事也最麻烦。省事在于大多数发行版的软件管理器里搜 “freecad” 点安装就完事麻烦在于版本可能落后官方好几个小版本而 FreeCAD 每个版本之间的工具栏布局改动不小。社区还维护了 PPA 形式的每日构建想要贴近教程里的界面就去装开发版。开发版通常以压缩包形式分发解压即用不写系统目录可以和稳定版并存——我一般会同时留两个一个用来干活一个用来对着老教程找菜单。装完先确认版本别急着建模。打开“视图 → 面板 → Python 控制台”敲下面几行import FreeCAD as App # 版本号是三元组拼起来看更直观 print(版本:, ..join(App.Version()[:3])) print(构建修订:, App.BuildRevision()) # 配置目录和宏目录后面排查配置文件损坏、找自己写的脚本都靠它 print(用户配置目录:, App.getUserAppDataDir()) print(宏目录:, App.getUserMacroDir(True))App.Version()返回的是主版本、次版本、修订号组成的元组跟教程里的版本号对不上时先看这个再决定要不要换版本。getUserAppDataDir()指向的位置存着你的首选项、最近文件列表和自定义工作台配置FreeCAD 出现奇怪行为时把这个目录整体备份后重命名等于一次干净重置比重装快得多。getUserMacroDir(True)的True表示“如果目录不存在就创建”你写的宏最终都要落在这里才能出现在宏列表里。接着验证关键模块有没有装全。FreeCAD 的工作台本质上是 Python 模块导入失败意味着对应的工具集不可用import importlib mods [Part, PartDesign, Sketcher, Mesh, MeshPart, Fem, Arch, Spreadsheet, Draft, TechDraw] for name in mods: try: importlib.import_module(name) print(f{name:12s} OK) except Exception as e: print(f{name:12s} FAIL - {e})Part是基础几何内核的封装PartDesign是参数化实体建模Sketcher是草图约束求解器Mesh和MeshPart负责三角网格与实体转网格Fem依赖外部求解器Arch是建筑/BIM 那一套TechDraw出工程图。哪个 FAIL 了就去检查是不是精简安装、或者包管理器把可选依赖裁掉了。Fem特别容易缺因为它的实际求解要靠外部程序模块在但求解器不在也会在提交分析时报错。2.2 首选项里真正影响操作体验的六项首选项在“编辑 → 首选项”页面很多但初装阶段值得改的就那么几处。把下面这张表过一遍能省掉后面反复回头改的麻烦。位置参数建议值为什么常规 → 常规语言中文或保留英文对照中文翻译不完整部分菜单项仍是英文术语和教程对不上时可以临时切回英文定位常规 → 启动启动时打开 Start 工作台关闭每次启动都停在开始页多一次点击常规 → 启动启动时创建新文档开启直接进入可用状态省一步新建常规 → 输出窗口将 Python 消息重定向到报告视图两项都勾选脚本报错、模块加载失败的唯一可见入口常规 → 单位单位系统MKS毫米、千克、秒教程里的尺寸默认是毫米混用英寸会导致导出 STL 时尺寸差 25.4 倍显示 → 导航3D 导航样式CAD教程默认值换成 Blender 或 Revit 样式后鼠标手感完全不同保存/恢复自动保存间隔、临时目录510 分钟FreeCAD 崩溃不是都市传说后悔药就靠它语言这一项要单独说一句。中文界面是把双刃剑好处是看懂功能坏处是译稿本身是机翻界面翻译又是另一拨人做的两套译名不一致。比如你在译稿里读到“限制”界面上写的是“约束”译稿写“垫”界面上是“凸台”。所以我的习惯是把常用工作台的英文原名记牢看到中文菜单拿不准时就切英文确认找对应关系比硬猜快。重定向 Python 消息这一项新手十有八九不勾然后写第一段脚本报错时盯着空白界面发呆。勾上之后print输出和异常堆栈都会落到报告视图这是排查脚本问题的起点。2.3 备份与卸载的正确顺序卸载本身不难Windows 走控制面板删软件Linux 用同一个软件管理器移除macOS 直接拖进废纸篓。真正值得提醒的是卸载前先备份两个位置——用户配置目录和宏目录前者是首选项后者是你攒下的脚本。FreeCAD 的卸载程序通常不会碰这两处但升级大版本时格式可能不兼容留在原地反而会引发启动异常。我一般在升级前把配置目录整个复制一份改个名字加日期后缀出问题就切回去。3. 界面、视图与工作台把“看得见”变成“点得准”装好之后的第一道坎不是建模是找不到东西。FreeCAD 的界面按工作台组织每个工作台有自己的一套工具栏切错了就什么都看不见3D 视图的鼠标行为又能被导航样式整体替换教程里“按住中键旋转”这句话在老版本和新版、在不同导航样式下根本不是一回事。这章讲清楚三件事怎么在 3D 空间里稳定地转、工作台怎么切、树和属性面板怎么读。3.1 3D 视图导航的四种操作与标准视图快捷键默认的 CAD 导航样式下鼠标分工是这样的滚轮负责缩放中键按住拖动是平移按住中键再按左键拖动才是旋转。这套组合对用惯 CAD 的人顺手对从 Blender 过来的人非常别扭。首选项 → 显示 → 3D 导航里可以换切完之后菜单提示会跟着变但教程不会。比鼠标更可靠的是键盘标准视图。数字键 1 到 6 对应前、顶、右、后、底、左六个正交视图0 是等轴测视角也就是最常见的立体观察角度。建模时我基本不靠鼠标转先用 0 看整体再用 1/2/3 对齐平面画草图最后回到 0 检查干涉。用键盘切视图的好处是姿态可复现不会出现“手感对了但视图是歪的”这种玄学情况。视图立方在右上角点面切正交、点角切等轴测、拖边缘自由旋转。它和快捷键的作用重复但胜在所见即所得新手上手更快。注意视图不是建模状态的一部分切视图永远不会改变几何也不进撤销栈。再补两个高频操作。第一树里选中对象按空格键切换可见性做干涉检查时把外壳藏掉看内部结构比一层层展开树快。第二选择过滤器在状态栏右侧默认是“允许选择所有”画草图时会误选到别的边把它限成“只选顶点”或“只选边”能显著减少误操作。3.2 工作台切换的逻辑工作台不是模式切换它不会改变文档数据只改变你能看到哪些工具按钮。同一份文档可以先后用零件工作台做布尔、用零件设计工作台做参数化特征、用网格工作台转三角面、用 TechDraw 出图这一切都发生在同一个文件里。英文名中文译名主要用途高频工具Part零件CSG 式布尔建模立方体、圆柱、布尔运算并/差/交PartDesign零件设计参数化特征建模新建 Body、草图、凸台、凹槽、倒角Sketcher草图二维约束草图几何约束、尺寸约束、对称Mesh网格三角网格处理从形状创建网格、网格检查MeshPart网格零件实体与网格互转形状转网格带偏差参数TechDraw技术图纸二维工程图插入视图、标注Spreadsheet电子表格参数驱动命名别名、表达式绑定Fem有限元结构分析分析容器、材料、固定约束、求解器Arch / BIM建筑建筑与构件建模墙、结构构件、楼层新手最常见的困惑是“教程里说点凸台我这儿没有”。凸台属于零件设计工作台必须先建一个 Body 才能用而零件工作台里根本没有凸台这个概念它只有基本体和布尔运算。两条路线的产物都能导出但参数化程度差很多——这是下一章的主线。切工作台还有个副作用值得知道从零件设计切到草图工作台时如果你当前在 Body 里编辑草图界面会保持编辑态但如果你在树里双击了另一个 Body 的草图界面会自动跳走。判断当前在哪看树顶部的粗体项和左下角状态栏最准。3.3 文档树与属性编辑器怎么读左侧的模型树是整个参数化系统的“账本”。每个对象是一个节点父子关系直接对应几何依赖改父节点的参数子节点标记为需要重算。树里出现浅蓝色勾选标记表示还有对象等待重算此时视图里的几何可能是旧的。重算有两个办法菜单“编辑 → 刷新”或者在 Python 控制台执行App.ActiveDocument.recompute()。看到结果和参数对不上时先重算一次别急着怀疑自己。属性编辑器在左下分“数据”和“视图”两页这个区分非常重要。“数据”页是几何参数比如长度、半径、位置、角度改了就改模型“视图”页是显示参数比如颜色、透明度、线宽、可见性改了不影响几何也不影响导出。新手常把尺寸改在视图页然后奇怪为什么模型没变。“数据”页里最常见的是 Placement 属性它把位置和姿态打包在一起Base 是平移向量Rotation 是旋转。用 Python 操作时尤其要注意Placement.Base App.Vector(x, y, z)只改平移旋转保持原样直接赋值整个 Placement 会把旋转一起覆盖掉。如果需要旋转用App.Rotation(App.Vector(0,0,1), 45)构造绕 Z 轴 45 度的旋转再赋给Placement.Rotation比手算四元数省事得多。4. 从实体到可打印文件CSG、草图约束、网格导出与切片对接这一章是整份译稿里最实用的部分也是最容易在机翻下走偏的部分。译稿把建模拆成两条路线一条是传统 CSG用基本体加布尔运算拼形状另一条是草图加约束再加特征靠参数驱动。两条路线最后都要过“转网格 → 导出 STL → 丢进切片器”这一关而这一关的参数设置直接决定打印件是圆滑还是棱角分明、是尺寸准确还是缩水。4.1 CSG 布尔运算的顺序陷阱CSG 的思路很直白拿长方体减圆柱得到带孔的块。零件工作台里先建基本体再选“布尔运算 → 差集”。这里有个真实的坑差集的结果是“第一个选中减第二个选中”而选择顺序取决于你点树的顺序不是创建顺序。点反了得到的是一块被长方体切掉的圆柱残骸看起来像是运算失败。另一个坑是共面。当切除工具的端面和被切体的端面完全重合时布尔运算会因为数值精度出现退化面结果可能是空壳或者运算直接报错。稳妥做法是让工具在两端各多伸出一点。下面这段脚本把整个流程写全了可以直接粘进 Python 控制台执行import FreeCAD as App import Part doc App.newDocument(block_demo) # 主体40 x 20 x 10 毫米的长方体 box doc.addObject(Part::Box, Body) box.Length, box.Width, box.Height 40.0, 20.0, 10.0 box.Placement.Base App.Vector(0, 0, 0) # 挖孔圆柱半径 4高度 12起点下沉 1 毫米避免上下端面共面 cyl doc.addObject(Part::Cylinder, Hole) cyl.Radius 4.0 cyl.Height 12.0 cyl.Placement.Base App.Vector(20.0, 10.0, -1.0) # 差集Base 减 Tool顺序写死不依赖鼠标选择 cut doc.addObject(Part::Cut, BlockWithHole) cut.Base box cut.Tool cyl doc.recompute() print(体积:, round(cut.Shape.Volume, 2), 立方毫米)Part::Box、Part::Cylinder、Part::Cut都是零件工作台的对象类型用addObject建出来后通过属性赋值比在界面上点按钮更适合需要反复调整的场景。cyl.Height 12配合Base.z -1让圆柱上下各多出 1 毫米是为了避开共面退化——这 1 毫米的余量是我踩过几次“布尔结果为空”之后固定下来的习惯。最后的Volume打印是个快速校验40×20×10 减去半径 4、高 10 的圆柱理论值约 7497 立方毫米算出来对不上就说明布尔没生效。recompute()必须调否则Shape属性还是空的。这一点在脚本里比在界面上更容易忘因为界面会给你视觉反馈脚本不会。4.2 草图加约束参数化路线的核心是“全约束”CSG 建模改起来痛苦一个尺寸变了要重选一堆对象零件设计工作台走的是另一条路先画草图并施加约束再拉伸成实体。草图里每根线的位置由约束决定而不是由坐标决定改一个尺寸约束整个轮廓跟着变。常用约束就那么几种重合让两个端点粘在一起水平/垂直锁方向距离标注长度相等让两条线同长对称让两点关于轴线镜像。草图右下角会显示自由度数量减到 0 就是“全约束”轮廓变成绿色。全约束不是为了好看是为了保证拉伸方向明确、后续改参数不会让轮廓散架。机翻稿在这里最容易误导人的是译名。你在译稿里读到的“限制”就是约束“垫”就是凸台“口袋”就是凹槽。看到不认识的词看图标比看文字快。一个典型翻车场景草图画完了点凸台却报错“无法确定拉伸方向”或者干脆按钮是灰的。原因通常有三个——草图没闭合两个端点看着重合实际差了几微米需要用重合约束而不是目测对齐、草图存在重复约束同一个距离标了两次求解器矛盾、或者草图不属于任何 Body在零件工作台里画的草图不能直接用于零件设计的凸台。排查方法是看草图的任务面板里有没有求解器报错信息以及树里草图节点的父级是不是那个 Body。4.3 转网格与 STL 导出偏差参数决定成败实体是精确几何STL 是三角面片两者之间要过一次离散化这一步的偏差参数直接决定文件大小和表面质量。网格工作台的“从形状创建网格”里有两个关键值参数含义常用值影响Linear deflection线性偏差曲面离散点到真实曲面的最大距离0.050.2 毫米越小越贴合面数按平方级增长Angular deflection角度偏差相邻面片法向夹角上限0.30.5 弧度约 17°30°控制圆柱面的分段数Relative deflection是否按包围盒尺寸缩放偏差小零件可关大零件开混尺寸装配体里必须开否则小件过密大件过疏0.1 毫米线性偏差 0.5 弧度角度偏差对大多数桌面级 FDM 打印够用层高 0.2 毫米时0.1 毫米的离散误差还在打印机精度之内。把线性偏差压到 0.01文件可能从几百 KB 涨到几十 MB切片软件加载卡顿而实际打印件看不出差别。反过来偏差给到 1 毫米圆柱会变成明显的多边形直径 8 毫米的孔可能直接打不进去轴。脚本里做这一步更可控import MeshPart # Shape 来自上一步的布尔结果偏差单位与文档单位一致毫米 mesh MeshPart.meshFromShape( Shapecut.Shape, LinearDeflection0.1, # 线性偏差 0.1 mm AngularDeflection0.5, # 角度偏差 0.5 rad ≈ 28.6° RelativeFalse # 单一零件按绝对值控制 ) print(面片数:, mesh.CountFacets) mesh.write(/tmp/block_with_hole.stl)meshFromShape的第一个参数必须是Shape对象直接传文档对象会报类型错误——这是从界面转脚本时最常见的错。CountFacets打印出来是个很好的手感校准一个 40×20×10 带孔方块0.1 毫米偏差下大概几千面如果出来几十万面说明偏差给错了或者Relative没设对。4.4 对接切片器单位和格式对齐导出 STL 用“文件 → 导出”格式选 STL。FreeCAD 里 1 个单位在导出时按 1 毫米写入绝大多数切片器也按毫米读取所以只要文档单位是 MKS尺寸就是对的。出问题的情况基本都是一个早期从英寸模板建的文件导出后模型在切片器里缩成 1/25.4或者放大 25.4 倍。看到模型尺寸离谱先回去查首选项里的单位系统和文档的单位设置别在切片器里瞎调缩放。译稿里提到的 Cura 插件、Slic3r 对接属于那个年代的产物后续版本里这些入口的位置和形态都变过不要照着目录页码去菜单里找同名字段。通用做法是导出 STL 后手动丢进切片器参数在切片器里调FreeCAD 只负责几何。这样链路更短也更好排查——尺寸不对就在 FreeCAD 里量切片参数不对就在切片器里改责任边界清楚。导出前建议做一次几何自检用零件工作台的“检查几何”看有没有无效面或者在脚本里调cut.Shape.isValid()。返回 False 的形状导出的 STL 常有破面切片器会把它补成奇怪的实体打印出来孔堵了或者壁厚不对。这类问题在 FreeCAD 里不报错到了打印机上才暴露属于典型的“黑匣子”环节。5. 避坑与排查机翻稿和 FreeCAD 本身最容易翻车的五处前面四章按流程走了一遍这一章专门收问题。下面五条都是我实际遇到过、并且能稳定复现的每条按“现象 → 原因 → 解决”写看到相似的直接对号入座。5.1 教程里的菜单项在界面上找不到现象照着译稿操作提示点“编辑 → 首选项 → 显示 → 3D 视图”你的首选项里没有这一页或者名字对不上。原因有两个叠加一是译稿本身是机器翻译同一批术语在不同章节译法不统一二是译稿对应的稳定版本较老后续版本把设置项拆分重组过。解决分三步——先在首选项的搜索框里输关键词新版支持搜索搜不到就把界面语言临时切回英文用译稿里的英文原词再搜一次英文也搜不到说明这个选项在当前版本里已经改名或移走了去官方 wiki 搜原词看变更说明。这套动作慢但比重装软件快。5.2 布尔运算报错或结果为空现象选了差集结果什么都没有或者弹窗提示形状无效。原因基本是共面退化切除工具的端面和被切体的表面完全重合内核在计算交线时精度不够。解决是给工具留余量两端各多伸 0.51 毫米如果两个实体根本没相交差集也会返回原对象看起来像“没生效”这时用Shape.Volume打印一下就知道布尔到底跑没跑。还有一种情况是对象本身无效先对两个操作数分别调isValid()无效的先修别硬做布尔。5.3 草图全约束了凸台按钮还是灰的现象草图显示绿色、自由度为零但拉伸按钮不可点。原因通常是草图不在 Body 内部——在零件工作台里画的草图是独立对象零件设计的特征只认自己 Body 里的草图。解决办法是在树里选中草图看它的父节点如果挂在文档根下用“零件设计 → 新建 Body”建一个容器再把草图拖进去或者直接在 Body 里重新建草图并复制几何。另一种可能是草图只有一个开放轮廓自由度为零不代表闭合检查端点是否用了重合约束而不是碰巧对齐。5.4 脚本报错但看不到任何错误信息现象在 Python 控制台跑一段代码光标回来了什么也没输出模型也没变。原因是没有开启消息重定向异常被吞进了不可见的地方。解决是去首选项 → 常规 → 输出窗口把“将 Python 消息重定向到报告视图”和“将 Python 错误重定向到报告视图”都勾上然后重跑。如果还是看不到把同样的代码存成.py文件用命令行版解释器执行错误会直接打到终端——命令行版没有界面报错更干脆是排查脚本问题的标准姿势。5.5 崩溃之后工作没了现象改了几个参数FreeCAD 直接退出重开发现最近几十分钟的修改全丢。原因是自动保存没配。解决是提前在首选项 → 保存/恢复里设定自动保存间隔和临时文件目录崩溃后去那个目录找带时间戳的恢复文件。更稳的做法是养成阶段性手动保存的习惯重要节点用“另存为”加序号别指望一个文件从头改到尾。参数化建模的好处也在这儿只要树还在大部分修改是可以快速重做的真正难恢复的是草图里手调的尺寸。6. 把译稿用成索引宏、电子表格与一次可复现的自检读到这里流程已经跑通一遍了。剩下的事是怎么让重复劳动变少。FreeCAD 真正拉开效率差距的地方不在鼠标点得多快而在参数能不能集中管理、操作能不能脚本化。这份译稿的后半部分提到了电子表格、参数对象和 Python 脚本但那几章机翻得最厉害几乎只能当目录用具体怎么写还得自己补。先说电子表格。建一个电子表格对象在单元格里填尺寸右键单元格设“别名”比如把 A2 命名为plate_len然后在零件对象的属性栏里点那个小三角选“表达式”输入Spreadsheet.plate_len。之后所有引用这组尺寸的对象都跟着一个数走改装配尺寸不用逐个点开。我的习惯是把所有关键尺寸集中在一张表的前几列别名统一加前缀写脚本时也直接读这些别名避免散落在各对象里的魔法数字。再说宏。Python 控制台里调通的代码可以直接“宏 → 宏编辑器”存成.FCMacro文件之后在宏列表里一键运行。下面这个自检脚本我每次交付模型前都会跑一遍检查有效性和尺寸边界import FreeCAD as App doc App.ActiveDocument problems [] for obj in doc.Objects: # 只检查有 Shape 的实体类对象草图、电子表格跳过 if not hasattr(obj, Shape) or obj.Shape.isNull(): continue if not obj.Shape.isValid(): problems.append(f{obj.Name}: 形状无效) bb obj.Shape.BoundBox # 尺寸上限按你的打印机构建体积改 if bb.XLength 250 or bb.YLength 250 or bb.ZLength 250: problems.append(f{obj.Name}: 超出构建体积 {bb.XLength:.1f}x{bb.YLength:.1f}x{bb.ZLength:.1f}) print(检查对象数:, len(doc.Objects)) print(问题:, problems if problems else 无)hasattr(obj, Shape)用来过滤掉草图、电子表格这类没有几何体的对象直接访问.Shape会抛异常。isNull()排除尚未计算的对象isValid()是导出前的第一道闸。包围盒尺寸检查用的是绝对坐标装配体里位置偏移大的零件可能误报实际用时按需改成局部尺寸。最后一件事也是一个我交过学费的习惯每次改完参数先 recompute再看树里有没有未重算标记最后才导出。有次我改了一个孔位视图上看着已经动了直接导出切片打出来孔偏了两毫米——因为那次改的是父级草图子特征还在等重算视图里的旧几何刚好被我当成了新结果。从那以后我把“重算 → 检查未重算标记 → 量关键尺寸”这三步固定成导出前的强制流程一次没漏过。希望帮到你。本文还有配套的精品资源点击获取