共计 1955 个字符,预计需要花费 5 分钟才能阅读完成。
背景说明
在 PCB 设计流程中,丝印层(Silkscreen)承载着元器件标识、极性标记、版本号等关键信息,是生产和维修的重要依据。传统手动导出丝印层存在以下痛点:

- 重复操作耗时:需多次点击菜单选择参数
- 易遗漏步骤:忘记关闭无关层或设置错误输出格式
- 命名不规范:手动输入易产生版本混乱
- 批量处理困难:面对多板设计时效率低下
SKILL 脚本基础
SKILL 是 Cadence 平台内置的 Lisp 方言脚本语言,通过它可以直接调用 Allegro 的 API 实现自动化操作。基本调用方式:
- 在 Allegro 命令行输入
skill进入交互模式 - 或将脚本保存为
.il文件后通过load()函数加载
基础语法示例:
; 定义函数
procedure(exportSilkscreen()
; 函数体
)
; 调用函数
exportSilkscreen()
核心脚本实现
1. 脚本框架搭建
procedure(exportSilkscreen(@optional (outputDir "./"))
let((designPath layerList)
; 获取当前设计路径
designPath = getCurrentDesignPath()
; 定义需导出的层
layerList = list(
"TOP" "BOARD GEOMETRY/SILKSCREEN_TOP"
"BOTTOM" "BOARD GEOMETRY/SILKSCREEN_BOTTOM"
)
; 执行导出操作
foreach(layerPair layerList
exportSingleLayer(car(layerPair) ; 层标识
cadr(layerPair) ; 层名称
outputDir ; 输出目录
)
)
)
)
2. 单层导出函数
procedure(exportSingleLayer(layerID layerName outputDir)
let((fileName)
; 生成带时间戳的文件名
fileName = sprintf(nil "%s/silkscreen_%s_%s.dxf"
outputDir
layerID
getCurrentTimeString())
; 设置导出参数
axlShell(sprintf(nil "film NO"))
axlShell(sprintf(nil "UNDEFINE NO"))
; 激活目标层
axlVisibleDesign(nil)
axlVisibleLayer(list(layerName) t)
; 执行 DXF 导出
axlShell(sprintf(nil "dxfout %s %s" fileName layerName))
printf("Exported: %s\n" fileName)
)
)
3. 关键参数说明
| 参数 | 说明 |
|---|---|
| outputDir | 建议使用绝对路径,避免相对路径导致的文件找不到问题 |
| layerList | 按 (标识符 实际层名) 格式配置,支持自定义添加机械层等额外层 |
| dxfout | 可替换为 gerber 等其他输出格式,需对应修改文件扩展名 |
| getCurrentTimeString | 自定义函数,需实现返回 YYYYMMDD_HHMMSS 格式的时间字符串 |
避坑指南
1. 导出文件为空
- 检查层可见性:先用
axlVisibleLayer(list(layerName) t)激活目标层 - 验证层名称:通过
axlGetParam("artwork layers")获取准确的层名
2. 中文乱码
- 在导出前执行:
axlShell("encoding utf8") - 避免使用中文路径
3. 权限错误
- 添加路径存在性检查:
unless(isDir(outputDir) axlMkDir(outputDir) )
高级技巧
1. 批量导出多板设计
procedure(batchExportSilkscreen(designList)
foreach(design designList
axlDesignInit(design)
exportSilkscreen("/shared_output")
)
)
2. 自动备份旧版本
; 在 exportSingleLayer 函数开头添加:when(isFile(fileName)
renameFile(fileName sprintf(nil "%s.bak" fileName))
)
安全注意事项
执行脚本前检查:
- 确认当前设计已保存
- 关闭不必要的设计模块
- 检查磁盘剩余空间(至少保留 2 倍设计文件大小)
- 验证输出目录可写权限
- 首次运行时先在小规模设计上测试
优化方向
- 添加图形界面:使用
axlUIConfirm创建参数配置窗口 - 集成版本控制:自动生成带 Git 哈希值的文件名
- 错误重试机制:针对网络存储的临时故障自动重试
- 邮件通知:通过
send-mail函数在完成后发送报告
通过将脚本保存为 $HOME/pcbenv/export_silkscreen.il 并添加到 allegro.ilinit,即可通过菜单命令快速调用。
正文完
发表至: 未分类
近一天内
