
器件交换
器件交换
ly1212器件交换
嘉立创 EDA 专业版 PCB 扩展。交换窗口会显示“器件1”和“器件2”两个候选槽位;两个器件都处于 PCB 选中状态后,立即互换两者的 X、Y 坐标和旋转角度。默认同时交换两个器件 Designator 位号丝印的坐标和方向,并按相同焊盘编号,只交换从这些焊盘中心实际连通的走线、圆弧和过孔网络。每次成功后候选栏会可靠地清空并等待下一对。
功能演示

安装
- 打开嘉立创 EDA 专业版。
- V3:进入“高级 → 扩展管理器… → 导入”;V2:进入“设置 → 扩展 → 扩展管理器… → 导入扩展”。
- 选择
pin-to-pin-component-swap_v2.4.2.eext。 - 如果已经安装旧版,使用同一个文件直接更新;扩展 UUID 保持不变。
- 在“已安装”列表中确认“器件交换”处于启用状态,然后重启编辑器一次。
连续交换
- 打开 PCB 文档。
- 点击顶部菜单“器件交换 → 打开连续交换窗口...”。
- 窗口出现后,在画布上点击第一个器件;它会显示在“器件1”槽位并保持选中。
- 如果选错,可点击该槽位的“取消选中”,或点击“重新选取器件1”。
- 点击第二个器件后,它会显示在“器件2”;系统确认两个候选器件都仍处于 PCB 选中状态后立即交换,不需要确认按钮。
- 默认勾选“同步交换位号丝印”;不需要移动位号时,请在选择第二个器件前取消勾选。
- 默认勾选“交换对应引脚连接的走线网络”。只想交换器件和位号的位置、方向时,请在选择第二个器件前取消勾选。
- 每次交换完成会自动清空两个槽位;继续点击下一对即可重复交换。
- 也可点击“选取器件1/器件2”指定下一次画布点击写入哪个槽位。
- 关闭交换窗口,或点击菜单“停止并关闭交换窗口”,即可退出连续模式。
点选器件本体、焊盘或器件文字均可。扩展不注册任何键盘快捷键。
器件与位号丝印交换
扩展会互换:
- X 坐标;
- Y 坐标;
- 旋转角度。
开启“同步交换位号丝印”时,还会互换两个器件 Designator 属性图元的 X、Y 坐标和旋转角度。位号文字内容、字体、显隐状态和所在丝印层保持各自原值;缺少位号属性或位号已锁定时会在移动器件前停止并说明原因。
关闭网络同步时,允许不同封装、不同焊盘数量和不同板面的两个器件。物料信息、器件网络、板面和已有走线不会被互换或移动。锁定器件无法修改,需要先解锁。
对不同板面的器件,本扩展仍只互换旋转数值,不执行翻面或镜像。交换后请检查器件方向、飞线和 DRC。
如果交换中任一步提交失败,扩展会尝试将两个器件、位号丝印和连接走线网络恢复到交换前的状态。
引脚连接走线网络同步
勾选“交换对应引脚连接的走线网络”时,扩展会先做完整校验,再执行交换:
- 两个器件的焊盘编号集合必须完全一致;
- 从每个对应焊盘中心通过
getConnectedPrimitives(true)开始,只沿实际相邻的直线、圆弧和过孔查找连通走线链; - 连通走线链中的图元必须与起始焊盘网络一致,且不能处于锁定状态;
- 对应引脚网络不同的时候,只成对修改这些连通走线图元的网络属性;
- 不按网络名称扫描全板,不修改同名但物理上未连通的铜图元;
- 不修改 PCB 网表、两个器件或其它器件的引脚、独立焊盘、折线、填充和覆铜。
任一校验不通过时,扩展不会移动器件,并会给出原因。此时可取消一个槽位重新选择,或关闭网络同步后只交换位置和方向。执行中任一步失败时,扩展会尝试恢复连通走线网络及两个器件的原位姿。
按要求,走线链另一端所连接的其它器件引脚不会改变,因此交换后可能出现远端引脚与走线网络不一致。正式工程请先保留副本;每次交换后必须运行 DRC,并检查飞线、网络类、差分对和等长约束。
从源码构建
需要 Node.js 20.17 或更高版本。
npm.cmd ci
npm.cmd run lint
npm.cmd run build
生成的扩展包位于 build/dist/。
使用的扩展 API
SYS_IFrame.openIFrame():打开不遮挡 PCB 操作的持续交换窗口;PCB_Event.addMouseEventListener():按顺序读取画布上的器件点选事件;PCB_SelectControl.doSelectPrimitives()与getAllSelectedPrimitives_PrimitiveId():保持并验证两个候选器件的 PCB 选中状态;PCB_PrimitiveComponent.get():读取被点选的器件;setState_X()、setState_Y()、setState_Rotation()与done():提交器件的新位姿;PCB_PrimitiveAttribute.getAll():读取器件关联的Designator位号属性;- 位号属性的
setState_X()、setState_Y()与setState_Rotation():同步交换位号丝印位姿; IPCB_PrimitiveComponentPad.getConnectedPrimitives(true):从被交换器件的焊盘中心读取直接连接走线;- 直线、圆弧和过孔的
getAdjacentPrimitives():只沿实际铜连接查找完整走线链; - 直线、圆弧和过孔的
setState_Net():成对更新这些连接走线图元的网络; PCB_Document.triggerCanvasUpdateCalculation():交换后刷新画布和飞线计算;PCB_Event.removeEventListener():关闭窗口时结束连续点选。
v2.4.0 会在接收画布事件后再次核对 PCB 的实际选中集,并用选择代次使交换期间已排队的异步任务失效;交换成功后还会在结束路径再次强制清空候选栏,避免迟到的旧 selected 事件把上一对器件填回来。走线网络批量提交后会先刷新 PCB 计算,再以退避间隔重复读取确认;失败回滚会强制重写并校验全部原网络,避免 done() 后短暂读到旧值造成误判。
上述内联框架和 PCB 事件/图元修改接口包含 Beta API。正式工程使用前建议保留工程副本。
源代码仓库
- 主仓库:GitHub
- 国内镜像:Gitee
- 问题反馈:GitHub Issues
许可证
Apache-2.0
作者
LIYAN
2.4.2
名称与图标
- 扩展显示名称统一改为“器件交换”,内部唯一标识符保持不变,确保可从旧版本正常升级。
- 使用原创的“两颗芯片与双向交换箭头”简约图标,采用浅蓝色背景并规范为 512×512 PNG,直观体现器件交换功能。
2.4.1
文档与元数据
- 在
README.md中增加器件、位号丝印和对应引脚走线网络交换的 GIF 功能演示。 - 将扩展清单、项目主页和问题反馈的主仓库统一改为 GitHub,并在 README 中保留 Gitee 国内镜像地址。
2.4.0
新功能
- 默认同步交换两个器件
Designator位号丝印的 X、Y 坐标和旋转方向,并提供独立开关;文字内容、字体、可见性和丝印层保持不变。 - 使用用户提供的 1:1 JPEG 图片作为扩展自定义图标。
修正
- 在处理选中事件前重新核对 PCB 实际选中状态,并使交换前排队的异步选取任务失效,防止交换成功后器件栏被旧事件重新填入。
- 交换成功后的所有结束路径都会再次清空两个候选槽位;位号交换或走线交换失败时一并回滚器件、位号丝印和网络。
变更
- 扩展作者和发布者名称统一为
LIYAN。 - 按扩展广场上传规范补充清单描述、README 使用说明和更新日志。
2.3.3
修正
- 修正走线网络
done()提交后短暂读取到旧值时被误报为交换失败的问题;现在会刷新 PCB 计算并分多轮确认最终网络。 - 加强部分写入失败后的事务回滚:全部连接走线都会强制恢复原网络,并在刷新后重复校验,不再因旧读数跳过恢复。
2.3.2
变更
- 配置 Gitee 源代码仓库、项目主页、问题反馈地址和发布者信息。
- 保持交换成功后立即清空器件列表,并仅交换对应引脚物理连通的走线网络。
1.6.2
修正
- 使用 npx 初始化时未忽略 .git 目录和无关脚本
1.6.1
变更
- 在 npx 初始化和 update 更新时均忽略部分无关脚本
1.6.0
新功能
- 支持
npx github:easyeda/pro-api-sdk my-extension初始化环境
变更
- 日志和 CLI 语言修改为英语
- 示例程序的描述修改为中英双语
- 转换为 ESM 项目
1.5.0
新功能
- 支持使用
npm run update更新 pro-api-sdk 框架代码
1.4.0
新功能
- 支持使用
npm run debug命令与 EDA 进行在线联调
修正
- 修正重复的 menuId
1.2.0
变更
- 使用纯 ESLint 的代码格式化方式
- 打包时额外进行压缩,可以获得更小的扩展包
1.1.1
变更
- 为了符合隐私政策,禁止在 extension.json、README.md、CHANGELOG.md、LICENSE 内添加电子邮箱地址作为联系方式
1.1.0
新增
- 新增扩展注册头部菜单的多语言翻译支持
- 新增更新日志(CHANGELOG.md)
变更
- 替换已弃用的方法(SYS_Dialog.showInformationMessage)
1.0.0
初始版本

类型
关键词
扩展信息
| 版本 | v2.4.2 |
| 发布者 | LIYAN |
| 发布时间 | 2026-09-01 16:24:10 |
| 名称 | pin-to-pin-component-swap |
| UUID | 5bd19959948a4d66a610f27417282a2f |
| 适用EDA版本: | ^3.2.0 |
| 报告 | 报告滥用 |
评论