
FreeCAD 参数化标准件库如何从单件建模到批量生成的完整指南【免费下载链接】FreeCADOfficial source code of FreeCAD, a free and opensource multiplatform 3D parametric modeler.项目地址: https://gitcode.com/GitHub_Trending/fr/FreeCAD本文带你走通一条完整的路线把 FreeCAD 里反复手画的 GB/ISO 标准件六角螺栓、螺母、平垫圈变成可复用的参数化标准件库——从复用内置 ISO 螺纹数据、手工打造参数化螺栓模型到脚本批量生成整个规格系列再到图纸上的配合标注。读完你可以直接套用到自己的项目上。每次画标准件的隐性成本先说一个很典型的场景一个中型装配80 颗六角螺栓其中 40 颗是 M8×30。设计评审后全部改成 M10你得找到 40 处逐一修改改完发现还有 5 处头部对边尺寸手滑填成了 13.5而垫圈散落在七八个文档里没人说得清哪个版本是对的。问题根源都一样标准件被当成了几何而不是数据。画出来的实体只是一堆坐标改一处不会牵动别处。一旦它变成数据就能被引用、被替换、被批量生成。读源码FreeCAD 是怎么存 ISO 标准数据的动手之前建议先看看 FreeCAD 自己是怎么处理标准件的——它不画标准件它查表生成。以螺纹为例孔特征的实现和配套的测试文件里维护着两张标准表ISOMetricProfile粗牙和ISOMetricFineProfile细牙覆盖 M1 到 M68 全序列# ISO 公制粗牙系列摘录名称即直径x螺距 ISOMetricProfile: [ M6x1.0, M8x1.25, M10x1.5, M12x1.75, M16x2.0, ]链轮是同样的思路链轮特征内嵌了一张含 ISO 606 的规格表# ISO 606 滚子链链轮参数[节距, 滚子直径, 内孔, 名称] 16: [0.375, 5.72 / 25.4, 5.2 / 25.4, ISO 606 06B], 17: [0.500, 7.75 / 25.4, 7.0 / 25.4, ISO 606 08B],由此可以提炼出标准件的两层结构参数表层标准号 → 一组数字节距、头高系数、公差带参数化特征层由参数表驱动的模型改数字即重新生成。自建 GB 库时照这个结构来别跳过第一层——后面所有批量能力都长在它上面。免画 M8 螺纹复用内置 ISO 螺纹数据只需要同轴标准螺纹孔时内置数据比你自己建螺旋体可靠得多。在 PartDesign 里选一个孔特征ThreadType下拉里列出的就是上表的全部规格import FreeCAD as App doc App.newDocument(HoleDemo) body doc.addObject(PartDesign::Body, Body) hole body.newObject(PartDesign::Hole, Hole) hole.ThreadType ISOMetricProfile # ISO 公制粗牙 hole.ThreadSize M8x1.25 # 规格直接查表 hole.ThreadLength 30.0 doc.recompute()两个细节值得留意TestHole.py里有条注释保存文件用下标而非字符串引用规格数组顺序是兼容性契约。以后扩展自己的规格表时只在末尾追加切勿中间插入螺纹孔只解决了孔端螺栓端的实体模型要自己建——这是下一节的事。用三个特征建一颗参数化六角螺栓以 ISO 4017 M8 六角头螺栓为例它只由三个特征组成六角头对边 13mm 的正六边形草图拉伸 5.5mm 高杆身直径 8mm 圆柱长度取公称长度螺纹表示真实螺旋体计算成本高工程上常用小径圆柱 图样装饰螺纹线代替。import FreeCAD as App doc App.newDocument(Bolt_M8_L30) body doc.addObject(PartDesign::Body, Body) sketch doc.addObject(Sketcher::SketchObject, HexSketch) # 正六边形草图 body.addObject(sketch) pad body.newObject(PartDesign::Pad, Head) pad.Profile sketch pad.Length 5.5 # M8 六角头高度mm doc.recompute()真正的功夫在参数化三个字上不要把 13、5.5 这类数字直接写死在草图约束里而是让尺寸引用一个参数表公称直径 d、头高系数 k、长度 l 三个自变量即可覆盖整颗螺栓。Spreadsheet 工作簿很适合当这张表用表达式把单元格绑定到特征尺寸上。改一个单元格整颗螺栓跟着变——这就是模板和死模型的区别。GB 标准参数映射把差异做成数据GB/T 5782 六角头螺栓与 ISO 4017 的几何差异不大主要集中在头高系数上GB 约 0.7dISO 约 0.65d。这类差异用参数表处理而不是用 if-else 特判代码# GB/ISO 螺栓参数映射表单位 mmkey 为标准号value 为各直径参数 BOLT_TABLE { GB5782: {8: dict(d8, head_h5.5), 10: dict(d10, head_h7.0)}, ISO4017: {8: dict(d8, head_h5.3), 10: dict(d10, head_h6.4)}, } params BOLT_TABLE[GB5782][8]三条实操建议表独立成模块或独立工作簿建模脚本只读表以后加 JIS 列只改表不改模型每张表头注释来源标准号、条款页码过审时查得到依据表里查不到的规格应直接报错绝不静默猜值——猜出来的尺寸比没有尺寸更危险。一个循环批量生成整组 GB 螺栓系列有了参数表和参数化模型批量生成只是两层循环import FreeCAD as App def make_bolt(standard, d, l): doc App.newDocument(fBolt_{standard}_M{d}_L{l}) # 调用单颗建模函数把 d/l 写入参数表并重新计算 doc.saveAs(f~/FreeCAD/GB_Parts/bolts/{standard}_M{d}_L{l}.FCStd) for d in (6, 8, 10, 12): for l in (20, 30, 40, 50): make_bolt(GB5782, d, l)落地时有三个约定值得遵守命名即检索文件名按标准号_规格_长度组织装配里拖进来一眼认得出目录对齐表结构bolts/、nuts/、washers/按品类分目录与参数表 key 一一对应生成即校验批量任务结束前统一 recompute 一遍参数表的错误要暴露在这一步而不是装配里打开才发现某个文件算不出来。图纸上的配合标注用 TechDraw 的 ISO 286 孔轴配合标准件不止有 3D 模型图纸上还得标配合。TechDraw 孔轴配合工具内置了 ISO 286 配合表按松/紧定/过盈三类组织结构一目了然# TechDrawTools 源码摘录配合组合表基准制 配合性质 holeValues [ [h9, D10, Loose fit], [h6, H7, Loose fit], [k6, H7, Snug fit], [s6, H7, Press fit], ]这个三列结构轴公差带、孔公差带、配合性质本身就可以当模板把你自己的 GB/T 1801 配合数据按同样的列布局写进独立脚本就得到一个 GB 版的配合选择器和内置工具用法完全一致。三个坑会让标准件库报废的事⚠️规格顺序是契约。如前所述ISOMetricProfile的下标会被保存文件引用。自建表时顺序一旦固定就不许重排只能追加否则旧文件打开后规格错位。模板里不许有硬编码。草图约束里直接写 13 和 5.5 的螺栓不是模板是死模型。模板的价值全部来自参数化尺寸这一点没有商量余地。装配里引用而不是复制。把一颗螺栓复制粘贴 80 份改参数就是 80 份返工。正确做法是链接标准件 FCStd 作为部件模板更新时装配自动跟上。再往前走的三件事扩参数表给BOLT_TABLE加 JIS 列或 GB 螺母、平垫圈GB 6170、GB 97两张表切换标准变成一个参数写合规校验脚本遍历生成的 FCStd把模型实测尺寸与参数表逐项比对输出差异报告作为入库前的最后一道闸协作化标准件库用 Git 仓库管理GB_Parts目录团队共享同一份参数表需要查阅内置 ISO 标准数据表时可以把源码克隆到本地浏览# 克隆源码用于查阅内置 ISO 标准数据表只读参考 git clone https://gitcode.com/GitHub_Trending/fr/freecad【免费下载链接】FreeCADOfficial source code of FreeCAD, a free and opensource multiplatform 3D parametric modeler.项目地址: https://gitcode.com/GitHub_Trending/fr/FreeCAD创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考