惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

V2EX - 技术
V2EX - 技术
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
T
Threat Research - Cisco Blogs
T
The Exploit Database - CXSecurity.com
S
Schneier on Security
S
Securelist
P
Privacy & Cybersecurity Law Blog
Scott Helme
Scott Helme
T
Threatpost
C
Cybersecurity and Infrastructure Security Agency CISA
L
LINUX DO - 热门话题
Cyberwarzone
Cyberwarzone
Cisco Talos Blog
Cisco Talos Blog
量子位
博客园 - Franky
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Latest news
Latest news
T
Troy Hunt's Blog
N
News | PayPal Newsroom
Google Online Security Blog
Google Online Security Blog
Apple Machine Learning Research
Apple Machine Learning Research
N
Netflix TechBlog - Medium
小众软件
小众软件
P
Palo Alto Networks Blog
Spread Privacy
Spread Privacy
C
Cyber Attacks, Cyber Crime and Cyber Security
C
Check Point Blog
aimingoo的专栏
aimingoo的专栏
WordPress大学
WordPress大学
L
Lohrmann on Cybersecurity
L
LINUX DO - 最新话题
D
Darknet – Hacking Tools, Hacker News & Cyber Security
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
The Last Watchdog
The Last Watchdog
S
Security @ Cisco Blogs
P
Privacy International News Feed
Last Week in AI
Last Week in AI
Microsoft Security Blog
Microsoft Security Blog
T
Tailwind CSS Blog
博客园_首页
云风的 BLOG
云风的 BLOG
V
Vulnerabilities – Threatpost
D
DataBreaches.Net
Recent Announcements
Recent Announcements
酷 壳 – CoolShell
酷 壳 – CoolShell
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
罗磊的独立博客
Engineering at Meta
Engineering at Meta
Forbes - Security
Forbes - Security
T
Tenable Blog

博客园 - 我才是银古

第16章:常见问题、排错与最佳实践 第15章:扩展生态、MCAD 与外部集成 第12章:实战案例:机械结构与 3D 打印零件 第14章:构建、测试、调试与贡献流程 第13章:OpenSCAD 源码架构与核心执行流程 第11章:预览、渲染、网格精度与性能优化 第09章:列表推导、递归与算法建模 第08章:参数化零件库与复用设计 第10章:导入导出、命令行与自动化 第06章:CSG 布尔建模方法 第07章:二维图形、拉伸、旋转与投影 第05章:基础几何、坐标系与变换 第04章:参数、变量、函数、模块与作用域 OpenSCAD 教程目录 第03章:OpenSCAD 语言基础 第02章:安装、环境配置与开发工作流 第01章:OpenSCAD 项目全景与学习路线 第02章:源码获取、编译与开发环境配置 第01章:OCCT项目全景与学习路线 第18章:二次开发实战与综合案例 第17章:与 Qt VTK Python pythonOCC 生态集成 第18章:综合实战案例 第17章:数据交换与协同 第16章:源码架构与二次开发 第14章:Python脚本宏与自动化 第13章:FEM仿真分析 第12章:CAM数控加工 第11章:SurfaceMesh与逆向工程 第10章:Draft二维绘图与BIM建筑 第09章:工程图TechDraw 第07章:参数化表达式与Spreadsheet 第08章:装配设计Assembly 第06章:Part工作台与几何内核 第05章:PartDesign实体特征建模 第04章:草图Sketcher约束建模 第02章:安装版本与工作环境配置 第03章:界面工作台与基础操作 第01章:项目全景与学习路线 第十二章:插件开发、研究功能与最佳实践 第十章:定时任务与自动化(Cron) 第七章:技能、记忆与自学习闭环 第八章:MCP 集成与上下文文件 第六章:工具系统与终端后端 第五章:模型供应商与配置体系 Hermes Agent 教程目录 第十一章:语音、视觉、浏览器与子代理协作 第四章:CLI/TUI 与会话管理 第十二章:学习路线、实战方案与最佳实践 第十一章:源码结构、开发调试与插件开发 第十章:自动化、远程访问、日志与排障 第九章:Control UI、节点、Canvas 与语音能力 第七章:工具、技能、插件与能力扩展 第八章:安全模型、访问控制与沙箱实践 第六章:Agent 工作区、会话与多智能体路由 第五章:多通道消息接入与聊天平台配置 第四章:配置体系、模型接入与认证管理 第三章:Gateway 架构、协议与运行机制 第二章:安装、环境准备与快速上手 第一章:OpenClaw 项目概览与核心定位 oh-my-openagent 教程目录 09-命令模型回退与配置参考 10-实战案例最佳实践与故障排除 05-工作模式-Ultrawork-Prometheus-Atlas 08-Hooks与MCP系统 06-Category与Skill系统 07-核心工具链 04-智能体全景详解 03-安装与环境配置 02-整体架构与多模型编排机制 01-项目简介与核心理念 01-项目概览与学习路线 02-安装部署与工具适配 03-Skill机制与using-superpowers 05-TDD系统化调试与完成前验证 04-需求澄清方案设计与计划编写 07-并行智能体子智能体与Git-Worktree 第六章:代码审查、反馈处理与分支收尾 08-中国特色Skills与本土团队落地 09-MCP构建工作流执行与自定义Skill 第23章:FreeCAD-Python-API Clipper2 C# 源码解读教程 第19章:PolyTree 多边形树结构 第20章:实际应用与最佳实践 第18章:Minkowski 和与差 第17章:RectClip 矩形裁剪优化 第16章:ClipperOffset 偏移类详解 第15章:填充规则详解 第14章:布尔运算执行流程 第13章:ClipperD 浮点裁剪类 第11章:OutRec 与 OutPt 输出结构 第9章:Active 活动边结构 第10章:Vertex 顶点与 LocalMinima 局部极小值 第12章:Clipper64 裁剪类详解 第7章:高精度运算与128位整数 第8章:ClipperBase 基类详解 第5章:枚举类型与常量定义 第6章:InternalClipper 内部工具类 第2章:核心数据结构 - Point64、PointD 第3章:路径与多边形表示 - Path64、PathD、Paths64、PathsD 第4章:矩形边界 - Rect64、RectD
第15章:插件与自定义工作台开发
我才是银古 · 2026-05-05 · via 博客园 - 我才是银古

第15章:插件与自定义工作台开发

1. 为什么开发工作台

当宏变多、命令需要图标、菜单、工具栏、任务面板和偏好设置时,就应考虑开发工作台。工作台可以把一组业务工具组织成 FreeCAD 原生界面,例如企业标准件库、行业建模工具、自动出图工具、格式转换工具。

2. 工作台基本结构

典型 Python 工作台包含:

  • Init.py:App 层初始化。
  • InitGui.py:GUI 层工作台注册。
  • 命令类:定义资源、激活逻辑、可用状态。
  • 图标资源:SVG 或 PNG。
  • 任务面板:Qt UI 或 Python 构建界面。
  • 模块代码:几何、导入导出、工具函数。

FreeCAD 官方模块目录中大量工作台也采用 Init.pyInitGui.py 入口。阅读现有模块是最好的学习方式。

3. 命令设计

一个好命令应具备:

  • 清晰名称和工具提示。
  • 可预测的输入对象。
  • 对错误选择给出提示。
  • 支持撤销/重做或至少不破坏文档。
  • 尽量通过对象属性保存参数。
  • 在报告视图输出有用信息。

命令不应把业务逻辑都写在按钮回调中。应将核心算法与 GUI 分离,便于测试和脚本调用。

4. 任务面板

任务面板用于复杂输入。设计原则:

  • 字段按工作流程排列。
  • 提供默认值。
  • 明确单位。
  • 对非法输入即时提示。
  • “预览”和“确定”逻辑分离。
  • 取消时恢复或不提交修改。

Qt Designer 可制作 UI 文件,也可用 PySide 动态创建界面。

5. 资源与图标

图标应简洁,符合 FreeCAD 工具栏视觉。建议使用 SVG,便于缩放。资源路径不要写死,应相对模块目录解析。

6. 参数化对象封装

工作台的核心价值常在于创建业务对象,而不是一次性几何。例如“槽钢”“法兰”“支吊架”“设备基础”。这些对象应:

  • 有明确属性。
  • 支持重计算。
  • 可从属性面板修改。
  • 可导出标准几何。
  • 可被工程图和装配引用。

7. 插件发布

发布插件前检查:

  • 目录结构清晰。
  • README 或文档说明安装和用法。注意本博客教程目录不生成 README,但插件项目本身通常需要。
  • 许可证明确。
  • 支持的 FreeCAD 版本明确。
  • 无硬编码本机路径。
  • 依赖可安装。
  • 典型模型测试通过。

Addon Manager 生态要求插件元数据规范,正式发布前应参考官方插件要求。

8. 兼容性

FreeCAD API 会随版本演进。插件应避免依赖未公开内部细节。建议:

  • 在稳定版和开发版都测试。
  • 对可选 API 做存在性检查。
  • 捕获异常并给出版本提示。
  • 不要覆盖全局配置。
  • 保持 Python 代码风格清晰。

9. 从宏到工作台的迁移

迁移步骤:

  1. 把宏中的业务逻辑提取为函数。
  2. 创建命令类调用这些函数。
  3. 加入图标和菜单。
  4. 增加任务面板输入参数。
  5. 将输出对象改为参数化对象。
  6. 补充示例文件和文档。

完成迁移后,用户可以像使用内置命令一样使用你的工具。