硬件开发桌面应用【免费下载链接】freeroutingAdvanced PCB auto-router项目地址https://gitcode.com/gh_mirrors/fr/freerouting点击查看免费下载本文是 Freerouting KiCad 官方集成插件integrations/KiCad的技术实战指南。插件将 KiCad PCB 编辑器与 Freerouting 自动布线器连接起来支持 DSN 文件交换默认推荐、实验性 JSON/API 本地 REST 桥以及基于 KiCad 官方 Protocol Buffers IPC 的桥接三种工作流。读完本文你将掌握插件的安装方法、plugin.ini配置参数、三种模式各自的命令行与调用链以及如何定位日志、调试问题并运行测试验证。插件概览KiCad 与 Freerouting 的桥接插件本体是一个 KiCad 动作插件pcbnew.ActionPlugin入口为 plugin.py它把任务委托给若干专职模块router_dsnDSN 布线、router_json_apiJSON/API 布线、router_ipcIPC 布线、api_clientREST 客户端、java_utilsJava 检测与安装、board_json_helpers电路板 JSON 序列化以及process_utils进度对话框与子进程管理。插件会读取 plugin.ini 决定路由模式与是否打开 GUI并在后台线程完成 Java 检查、IPC/JSON 能力探测最后以模态进度对话框驱动布线、自动把结果回灌到当前 PCB。路由模式一览插件支持两种官方列出的布线工作流另有一条面向 KiCad 9/10 的 IPC 通道模式状态使用场景DSN默认 / 推荐标准 Specctra 文件导入导出所有 KiCad 版本可用稳定可靠JSON/API实验性通过本地 REST API127.0.0.1:37864的可选桥接IPC面向 KiCad 9/10官方 Protocol Buffers IPC API是 KiCad 11 的目标默认模式注意DSN 模式是生产设计的推荐默认。关于原生 Protocol Buffers IPC 集成的持续开发参见 docs/research/kicad_ipc_api_research.md。在 config.py 中定义了三种模式的常量与别名归一化逻辑ROUTING_MODE_DSN、ROUTING_MODE_IPC、ROUTING_MODE_JSONnormalize_routing_mode()会把protobuf归一为IPC、swig_json归一为JSON大小写不敏感空值回退到DSN。安装与配置通过 KiCad 插件与内容管理器PCM安装打开 KiCad 6.0 或更新版本。从 KiCad 主菜单或 PCB 编辑器打开插件与内容管理器Tools Plugin and Content Manager。搜索Freerouting。点击Install再点击Apply Changes。插件的 PCM 清单见 metadata.json版本 2.5.0、状态stable、最低 KiCad 6.0、运行时为ipc描述中明确注明需要 Java JRE 25。KiCad 10 的动作清单见 plugin.json它注册了一个名为Auto-route Board的动作入口为ipc_entry.py作用域为pcb并显示工具栏按钮依赖声明在 requirements.txtkicad-python0.8.0。打包发布历史各版本 zip存放在 integrations/KiCad 目录下最新版本即kicad-freerouting-2.5.0.zip。Java 25 运行环境要求Freerouting 以 Java 运行插件要求Java 25 或更高主版本JAVA_MIN_MAJOR_VERSION 25。java_utils.py 实现了四级搜索顺序系统 PATHshutil.which(java)之前下载到缓存目录的 JRE按版本号倒序取最新macOS Homebrew OpenJDK/opt/homebrew/opt/openjdk/bin/javaJAVA_HOME环境变量。若本地找不到合适版本插件会查询 Adoptium API 并自动下载 JRE 25 解压到缓存目录之后复用。JRE 与日志缓存目录按平台区分config.pyWindows%LOCALAPPDATA%\freerouting\cache与%LOCALAPPDATA%\freerouting\logs\kicadmacOS~/Library/Caches/freerouting与~/Library/Logs/freerouting/kicadLinux$XDG_CACHE_HOME/freerouting、$XDG_STATE_HOME/freerouting/logs/kicad缺省~/.cache/freerouting、~/.local/state/freerouting/logs/kicad。plugin.ini 配置参数插件运行时设置集中在 plugin.ini[java] path java [module] input_ext dsn output_ext ses rules_ext rules [artifact] location jar/freerouting-2.5.0.jar [settings] routing_mode DSN gui true小节键取值/默认说明[java]pathjavaJava 可执行文件名[module]input_ext/output_ext/rules_extdsn/ses/rulesSpecctra 文件扩展名[artifact]locationjar/freerouting-2.5.0.jarFreerouting JAR 相对路径jar 目录[settings]routing_modeDSN取值DSN、IPC、JSONconfig.py[settings]guitruetrue打开 Freerouting 交互 GUIfalse后台无头运行并在 KiCad 对话框内显示进度guifalse时 DSN 模式的命令行会追加--gui.enabledfalserouting_modeIPC且 GUI 关闭时插件把 Freerouting 作为无头 API 服务器启动详见下文。使用流程在 KiCadPCB 编辑器中打开你的 PCB 设计。可选若希望重新布线先删除已存在的布线与过孔。从Tools External Plugins Freerouting启动 Freerouting。让自动布线器运行当它完成并退出时插件会自动把布线产生的.ses会话文件重新导入到你的电路板。第 4 步的自动回灌由 plugin.py 中的apply_results_deferred()完成它在进度对话框销毁、KiCad 事件循环稳定后调用router.import_ses()DSN 模式或 IPC/JSON 写回接口失败时给出明确错误提示若项目路径含空格插件会改用tempfile.mkdtemp临时目录并在结束后清理router_dsn.py。DSN 模式默认且最稳妥的文件交换工作流DSN 模式router_dsn.py遵循导出 → 清洗 → 运行 → 回灌四步。导出与清洗插件先用pcbnew.ExportSpecctraDSN()导出临时 DSN 文件自动兼容(filename)与(board, filename)两种签名然后执行清洗search_n_strip()会把网络名/位号中的希腊字母Ω、µ、Φ移除避免 Specctra 解析器报错并把文件头修正为(pcb freerouting.dsn。命令行与执行清洗完成后构造执行命令router_dsn.pyjava -jar freerouting-2.5.0.jar -de 输入.dsn -do 输出.ses -host KiCad --gui.enabledtrue|false --api_server.enabledfalse --mcp_server.enabledfalse --logging.file.location日志目录guitrue时弹出 Freerouting 交互窗口用户完成布线后关闭窗口即可guifalse时在后台无头运行LogTailer实时把布线日志如Pass #7: Failed to route Pin on net ...流式显示到 KiCad 进度对话框。执行期间用户可随时Terminate取消。SES 结果回灌布线结束后的回灌包含两层保障SES 预处理sanitize_ses_file()router_ipc.py会移除 KiCad 解析器拒绝的(lock_type position)、清空(placement ...)中的器件坐标块防止导入时挪动封装并把方形的多边形过孔规范为圆形过孔导入依次尝试pcbnew.ImportSpecctraSES(filename)与pcbnew.ImportSpecctraSES(board, filename)成功后调用pcbnew.UpdateUserInterface()与pcbnew.Refresh()刷新界面并清理临时 DSN/SES 文件。JSON/API 模式实验性本地 REST 桥JSON/API 模式router_json_api.py把电路板序列化为 JSON经本地 REST API 交给 Freerouting 处理属于过渡性方案KiCad 9。电路板序列化board_json_helpers.py 通过 SWIG 遍历pcbnew对象手工构建KiCadBoardJson按物理叠层顺序收集铜层F.Cu→In1.Cu→ ... →B.Cu区分 signal/plane、netclass 的线宽/间距/过孔直径与钻孔、网络、自定义间距规则解析.kicad_pcb的custom_rules或.kicad_dru、封装焊盘含旋转还原的局部坐标、已有走线/过孔、覆铜区conductionAreas含isObstacle与 keepout以及 Edge.Cuts 板框优先GetBoardPolygonOutlines。坐标单位为 MMresolution1.0。本地 API 服务插件以无头模式启动 Freerouting API 服务器router_json_api.pyjava -jar freerouting-2.5.0.jar --api_server.enabledtrue --api_server.endpointshttp://127.0.0.1:37864 --api_server.authentication.enabledfalse --gui.enabledfalse --logging.file.location日志目录默认绑定127.0.0.1:37864config.py。启动后以 0.1 秒间隔轮询/v1/system/status健康检查API_SERVER_STARTUP_TIMEOUT30s进程提前退出或超时都会给出明确报错。任务生命周期与轮询api_client.py 使用纯标准库urllib实现客户端绕过系统代理核心 REST 端点与调用顺序为POST /v1/sessions/create?hostKiCad 创建会话 PUT /v1/sessions/{id}/monitor 绑定可视化会话尽力而为 POST /v1/jobs/enqueue 入队任务任务名取 PCB 文件名 POST /v1/jobs/{id}/input/json 上传电路板 JSON PUT /v1/jobs/{id}/start 启动任务 GET /v1/jobs/{id}?compacttrue 轮询状态默认每 1.0s GET /v1/jobs/{id}/output/json 下载结果 JSON含重试 PUT /v1/jobs/{id}/cancel 取消wait_for_job_completion()的默认超时API_JOB_TIMEOUT600s、单请求超时API_REQUEST_TIMEOUT30s终态识别支持COMPLETED/FINISHED/DONE与TERMINATED/CANCELLED/TIMED_OUT/INVALID/ERROR。请求头携带Freerouting-Environment-Host: KiCad/10与Freerouting-Profile-ID启用鉴权时可加Authorization: Bearer api_key。结果回写结果 JSON 先尝试调用pcbnew.ApplyBoardJson/import_json/ImportBoardJson原生接口若不可用则手工创建PCB_TRACK/PCB_VIAplugin.py按unitMM/MIL/UM动态缩放坐标KiCad 内部为纳米1 mm 1e6 nm、按层名映射layerIndex→ KiCad 层 ID、按网络名解析 net 并跳过无法解析的网络最后通过BOARD_COMMIT原子提交并pcbnew.Refresh()。失败时结果 JSON 会保存为freerouting_result.json供手工恢复。IPC 模式KiCad 官方 Protocol Buffers 桥IPC 模式router_ipc.py面向 KiCad 9/10KiCad 11 的目标默认。它通过kicad-pythonkipy走 KiCad 官方 Protocol Buffers IPCUnix socket / 命名管道连接正在运行的 pcbnewKiCad 9/10IPC 需要一个运行的 GUI 实例pcbnew 必须打开KiCad 11可通过kicad-cli api-server无头模式运行IPC 必须启用Preferences Plugins Enable KiCad API。提取阶段由 ipc_bridge/ipc_board_reader.py 的KiCadIpcBoardReader完成含KICAD_API_SOCKET环境变量与平台默认 socket 路径探测并把.kicad_pro中的min_copper_edge_clearance解析为板框间距。写回阶段由 ipc_bridge/ipc_board_writer.py 的KiCadIpcBoardWriter以单次原子事务提交走线与过孔commit_messageFreerouting Autoroute支持一次 CtrlZ 撤销replace_unfixed控制是否移除既有未锁定走线。KiCad 10 的独立进程入口为 ipc_entry.py它依次执行 Java 检查 → IPC 连接与提取 → API 服务器发现/启动 → 建会话与任务 → 轮询 → 原子提交六个阶段并在 Windows 上隐藏控制台窗口、优先使用javaw.exe。模式自动切换逻辑插件内置双向兜底plugin.py并由 test_plugin_fallback.py 验证DSN → IPC 提升KiCad 11 移除了 SWIG 的ExportSpecctraDSN此时has_pcbnew_api()返回 FalseDSN 自动提升为 IPCIPC → DSN 回退IPC 请求不可达但 SWIG 可用KiCad 9/10时平滑回退到 DSN并在对话框标注 legacy - IPC FallbackJSON → DSN 回退JSON/API 能力探测失败时回退 DSN。日志、调试与故障排查插件在平台日志目录输出以下文件freerouting_kicad_plugin.log主插件、freerouting_ipc_plugin.logIPC 入口、freerouting.logFreerouting 服务端供LogTailer流式读取SAVE_DEBUG_JSONTrue默认开启时还会保存freerouting_input_board.json、freerouting_output_board.json、freerouting_input_board.dsn等调试副本便于比对布线前后的电路板数据。常见问题与对策问题对策Java 25 未找到安装 Java 25 或更高版本Adoptium Temurin 发布页或让插件自动下载 JREAPI 服务器无法启动确认 JAR 存在且 Java 25 可用查看freerouting.logIPC 连接失败 / token 不匹配关闭其他 KiCad 实例确认Preferences Plugins Enable KiCad API已启用pcbnew: command not found把 KiCad bin 目录加入 PATHSES 导入失败插件已自动完成 SES 清洗仍失败时手工导入.ses并查看报错项目路径含空格插件自动改用临时目录执行无需手工处理测试与验证插件测试分三层详见 integrations/KiCad/TESTING.md单元测试无需 KiCad路由模式归一化、DSN→IPC 提升与 IPC→DSN 回退、坐标缩放MM 下 10.5 mm → 10500000 nm、SES 清洗移除lock_type position、多边形过孔转圆形、铜层物理叠层排序、LogTailer过滤见 test_plugin_fallback.py离线 Mock IPC 测试CI 无头环境用 mock 的 kipy Protobuf 对象验证KiCadIpcBoardReader/KiCadIpcBoardWriter的提取、事务提交与缺网回滚见 test_ipc_mock_ci.py集成测试KiCad 10 Xvfb在虚拟显示器中启动真实 pcbnew走完整序列化 → API → 布线 → 回灌链路。快速冒烟测试无 KiCadcd integrations/KiCad/kicad-freerouting python -m pytest tests/test_plugin_json_api.py -v -k TestPluginStructure or TestBoardJsonHelpers or TestApiClient or TestJavaUtils完整集成测试需 KiCad 10Linux 下需xvfbcd integrations/KiCad/kicad-freerouting RUN_INTEGRATION_TESTS1 python -m pytest tests/ -v --timeout120以上测试用例与源码共同印证了本文描述的模式分发、坐标换算、SES 清洗与事务写回等关键行为可作为二次开发与回归验证的起点。赞分享硬件开发桌面应用【免费下载链接】freeroutingAdvanced PCB auto-router项目地址https://gitcode.com/gh_mirrors/fr/freerouting点击查看免费下载相关推荐【免费下载】 Kicad PCB 自动布线插件 FreeRouting 介绍Kicad PCB 自动布线插件 FreeRouting 介绍 欢迎来到 FreeRouting 的简易介绍页面FreeRouting 是一款专为 KiCadFreerouting插件在KiCad中自动布线异常问题分析Freerouting插件在KiCad中自动布线异常问题分析 问题现象 近期部分KiCad用户反馈在使用Freerouting插件进行PCB自动布线时出现布硬件开发桌面应用OpenAI Translator for Bob 插件完全指南安装、多模型配置与源码级原理OpenAI Translator for Bob 插件完全指南安装、多模型配置与源码级原理 本指南以 bob plugin openai translato人工智能AI 应用大模型上一篇老 Mac 装新版 macOS 完整指南OpenCore Legacy Patcher 三步复活流程下一篇如何轻松实现跨平台词库转换一站式输入法数据迁移完整指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考