共计 1226 个字符,预计需要花费 4 分钟才能阅读完成。
背景痛点
在 PCB 设计过程中,元器件参数的修改是常见需求。手动修改方式存在以下问题:

- 效率低下:设计包含数百个相同类型元器件时,逐个修改耗时巨大
- 错误风险高:人工操作容易遗漏或误改参数
- 一致性难保证:不同工程师修改标准可能不一致
技术选型
常见的自动化方案对比:
- Excel+VBS 脚本
- 优点:门槛低
-
缺点:依赖外部文件,无法直接操作设计数据库
-
录制宏
- 优点:操作简单
-
缺点:灵活性差,难以处理复杂条件
-
Skill 脚本
- 优点:直接访问设计数据库,功能强大
- 缺点:需要学习基础语法
核心实现
Skill 脚本基础语法要点
- 变量定义:使用
let或prog声明局部变量 - 函数定义:
procedure关键字 - 流程控制:
when、unless、foreach等 - 注释:单行用
;,多行用/* */
元器件参数访问接口
关键函数:
axlGetActiveDesign()获取当前设计axlDBGetDesign()获取设计数据库axlDBGetInstances()获取所有器件实例
批量处理逻辑设计
典型流程:
- 获取设计对象
- 遍历元器件
- 筛选目标器件
- 修改参数
- 保存设计
代码示例
; 批量修改电阻值脚本
procedure(changeResistorValue(newValue)
let((design db insts)
; 获取当前设计
design = axlGetActiveDesign()
unless(design
axlUIConfirm("No active design found!")
return(nil)
)
; 获取设计数据库
db = axlDBGetDesign(design)
; 获取所有器件实例
insts = axlDBGetInstances(db)
; 遍历器件
foreach(inst insts
when(inst->partName == "RESISTOR"
; 修改参数
axlDBCreateProp(inst "RESISTANCE" newValue)
)
)
axlUIWPrint(nil "Resistor values updated successfully!")
)
)
避坑指南
- 未检查设计是否加载
-
解决方法:使用
axlGetActiveDesign检查返回值 -
参数名拼写错误
-
解决方法:使用
axlDBGetProperties查看正确参数名 -
修改后忘记保存
-
解决方法:添加
axlSaveDesign或提醒用户手动保存 -
性能问题
- 解决方法:对大设计使用
axlDBGetInstances时添加过滤条件
性能优化
处理大规模设计建议:
- 按页处理:使用
axlDBCreatePageIterator分页处理 - 条件过滤:提前过滤目标器件,减少遍历数量
- 内存管理:及时释放临时变量
安全考量
执行前必须:
- 备份当前设计
- 在测试设计上验证脚本
- 记录修改日志
进阶思考
- 如何实现参数值的公式计算?(如根据位置自动编号)
- 如何处理层级设计中的器件修改?
- 如何将常用脚本集成到菜单栏实现一键操作?
通过掌握 Skill 脚本自动化技术,PCB 设计工程师可以显著提升工作效率,减少人为错误,让设计工作更加轻松高效。
正文完
