
Fusion360机电协同
Fusion360机电协同
OSHWHub14Fusion360 机电协同 —— 嘉立创 EDA 专业版扩展
通过 WebSocket + HTTP 实现 PCB 3D 模型在嘉立创 EDA 与 Fusion360 之间的实时协同。支持模型导出、双向位置同步、交叉定位、删除同步。
功能特性
| 功能 | 说明 |
|---|---|
| 3D 模型导出 | 将 PCB 的 STEP 模型分片传输到 Fusion360,支持大文件 |
| 下载脚本文件 | 一键保存 Fusion360 Add-In 脚本到本地 |
| 双向位置同步 | EDA 拖动元件 → Fusion360 跟着动,反之亦然 |
| 交叉定位 | 点击一边的元件,另一边自动聚焦 |
| 删除同步 | EDA 删除元件,Fusion360 同步移除 |
环境要求
| 项目 | 要求 |
|---|---|
| 嘉立创 EDA 专业版 | ≥ 3.0 |
| Fusion360 | 已安装且可运行 |
| Python | Fusion360 自带 Python 环境 |
| 网络 | 本机可用(localhost) |
安装步骤
第一步:安装 EDA 扩展
- 打开 嘉立创 EDA 专业版
- 安装完成后,在扩展列表中找到 Fusion360机电协同,确认已启用
- 开启外部交互权限:点击 扩展 → 扩展设置 → 开启 外部交互 权限(WebSocket 通信需要)
第二步:安装 Fusion360 脚本
-
下载脚本 (脚本文件也可以通过 EDA 菜单 Fusion360机电协同 → 下载脚本文件 一键保存到本地)

-
打开 Fusion360 新建一个文档

-
新建模块

-
打开脚本文件所在位置 用下载的脚本文件替换脚本内容 注意脚本需要和创建时候脚本名字一致

-
点击运行 这里注意一定是运行模块而不是脚本文件

-
验证启动成功:在 Fusion360 的文本命令窗口中应看到:
[EasyEDA] CustomEvent registered
[EasyEDA] Add-in 启动完成 ✅
[EasyEDA] Starting WebSocket server on ws://0.0.0.0:8767
使用教程
一、导出 3D 模型到 Fusion360
-
确保 Fusion360 Add-In 脚本已运行
-
在 Fusion360 中新建或打开一个部件设计文档

如果脚本已经运行,直接点击导出按钮即可 会自动打开一个新文档
-
在 EDA 中打开一个 PCB 设计文件,进入 PCB 编辑器
-
点击菜单 Fusion360机电协同 → 导出3D到Fusion360

5. 自动连接 Fusion360、获取 STEP 文件并分片上传


三、启用双向交互
导出模型后,可以启用双向交互实现实时同步:
- 点击菜单 Fusion360机电协同 → 启用双向交互

- EDA 会自动将元件位号与 Fusion360 3D 对象建立映射(build_mapping)
- 映射成功后可以:
- 在 EDA 中拖动元件 → Fusion360 中的 3D 模型实时跟随移动
- 在 Fusion360 中拖动对象 → EDA 中的元件同步移动(通过 HTTP 轮询检测位置变化)
- 在 EDA 中点击元件 → Fusion360 自动选中并聚焦(闪烁高亮)
- 在 Fusion360 中点击对象 → EDA 自动定位到对应元件
已知限制: 映射关系是一一对应的 开多个页面会导致映射关系冲突 请在单页面操作时使用
四、停止双向交互
- 点击菜单 Fusion360机电协同 → 停止双向交互

- 所有映射关系和监听会被清除
五、连接管理
| 菜单选项 | 功能 |
|---|---|
| 导出3D到Fusion360 | 自动连接 + 分片上传 + 导入 |
| 启用双向交互 | 开启实时双向同步 |
| 停止双向交互 | 关闭同步并清理映射 |
| 断开Fusion360 | 断开 WebSocket 连接 |
| 下载脚本文件 | 保存 Fusion360 脚本 |
技术说明
通信架构
EDA ←— WebSocket:8767 —→ Fusion(命令通道:上传/映射/位置更新/交叉定位)
EDA ←— HTTP:8768/poll ←— Fusion(状态通道:选中检测/位置变化)
| 方向 | 协议 | 说明 |
|---|---|---|
| EDA → Fusion | WebSocket | 文件上传、位号映射、位置同步、交叉定位、删除、重命名 |
| Fusion → EDA | HTTP 轮询 | 每 2 秒检测选中状态和位置变化,返回给 EDA |
关键技术决策
| 项目 | 方案 | 原因 |
|---|---|---|
| WebSocket 实现 | 纯 Python 手写 | Fusion360 环境无法安装第三方库 |
| HTTP 服务器 | Python 内置 http.server | 轮询检测 Fusion 状态变更 |
| STEP 导入 | executeTextCommand('Translator.Import') | 可从后台线程安全调用,绕过 DataFile 限制 |
| 选中/移动检测 | HTTP 轮询 ui.activeSelections | Fusion360 API 事件(activeSelectionChanged、selectionEvent)在此版本不响应元件选择 |
| 位置变化阈值 | 位置 0.1mm,旋转 0.5° | 过滤浮点噪声,避免反馈循环 |
线程安全
Fusion360 API 要求所有文档操作在主线程执行,但 WebSocket/HTTP 运行在后台线程。
- 读操作(选中检测、位置读取):直接从 HTTP/WS 后台线程调用,实际可用但不完全稳定
- 写操作(位置更新、交叉定位、删除):通过 WS 接收命令后直接调用
executeTextCommand:可安全从后台线程调用(Fusion 内部在主线程执行)- 轮询间隔 2 秒可减少线程竞争导致的闪退概率
常见问题
连接 Fusion360 失败
请按顺序检查:
- Fusion360 是否已启动,且 Add-In 脚本已运行
- 端口 8767/8768 是否被占用 — 关闭 Fusion360 后重试
- 外部交互权限 — EDA 扩展设置中是否已开启外部交互权限
- 防火墙 — 检查 Windows 防火墙是否拦截了端口
导入后 Design OK 但看不到模型
确保在导入前已打开或新建了一个 部件设计 文档。Translator.Import 会将 STEP 导入到当前激活的文档中。
导入大文件时 Fusion360 卡住
Fusion360 的 STEP 导入是同步操作,大文件导入期间界面可能无响应。导入完成后自动恢复。代码中 time.sleep(3) 等待导入完成。
双向交互一段时间后 Fusion360 闪退
这是 Fusion360 API 的线程安全限制。后台线程(HTTP/WS)读取 Fusion API 与主线程竞争可能导致崩溃。降低轮询频率可缓解(当前 2 秒一次)。
Fusion360 中选中元件 EDA 没反应
- 确认已开启双向交互(日志中应有
Monitor enabled) - 轮询间隔 2 秒,选中后等待 1-2 秒
- 检查位号映射是否正确建立(日志中应有
Mapping: X / Y matched)
项目结构
pcb-export-to-fusion/
├── src/
│ └── index.ts # EDA 扩展主逻辑(TypeScript)
├── script/
│ ├── Interactive-with-fusion.py # Python脚本
├── config/
│ ├── esbuild.common.ts # 构建配置
│ └── esbuild.prod.ts
├── build/
│ ├── packaged.ts # 打包脚本
│ └── dist/
├── locales/
│ ├── zh-Hans.json # 中文翻译
│ └── en.json # 英文翻译
├── images/
│ └── logo.png # 扩展图标
├── extension.json # 扩展配置清单
├── package.json
└── tsconfig.json
Fusion360 机电协同 -- 变更记录
1.1.1
优化
- 使用新的logo
1.1.0
优化
- 多语言优化
1.1.0
新功能
- 自动新建文档:每次导出 3D 模型时自动创建新 Fusion 设计文档,不再需要手动新建
- 选中高亮:交叉定位从闪烁效果改为选中状态 + 相机导航,高亮持续到用户点击其他位置
1.0.0
- 初始版本

类型
关键词
扩展信息
| 版本 | v1.1.2 |
| 发布者 | EasyEDA |
| 发布时间 | 2026-06-26 20:56:50 |
| 名称 | mcad-integration-with-fusion360 |
| UUID | c7e2a4f61b9d47e8b3d5c0a1e2f3d4b5 |
| 适用EDA版本: | ^3.0.0 |
| 报告 | 报告滥用 |
评论