许可优化
许可优化
产品
产品
解决方案
解决方案
服务支持
服务支持
关于
关于
软件库
当前位置:服务支持 >  软件文章 >  Altium Designer脚本开发实战代码分享,提升批量处理效率

Altium Designer脚本开发实战代码分享,提升批量处理效率

阅读数 4
点赞 0
article_banner

Script Project先建起来,File→New→Project→Script Project,右键Add New to Project→DelphiScript Unit,存成.pas后缀。脚本工程跟PCB工程分开管理,一个脚本工程下面挂好几个.pas文件,按功能分,BatchUpdate.pasBOMExport.pasRuleModify.pas各管各的,别全堆在一个文件里,改一个功能翻半天。

批量建符号和封装,同一类元件几十个型号一个个画太慢。DelphiScript里用GetSchLibrary('Standard.Lib')拿到库句柄,CreateComponent(lib)实例化新元件,CreatePin(comp, '1', '1', 100, 0, ptLeft)按坐标和方向放引脚,AddComponentToLibrary(lib, comp)写回库里,外面套一个for i := 0 to 5循环遍历封装名列表,0402到1206六个电阻符号几分钟跑完。封装的焊盘阵列同理,Add Pad在循环里算坐标,BGA焊盘矩阵或排针排母不用一个个手动放。

批量改元件属性,原理图里几百个电阻要统一加厂商编号,或者把某个前缀的元件批量换封装。Python走COM接口的写法是win32com.client.Dispatch("Altium.Application"),拿GetCurrentPCBBoard()然后遍历pcb.Component[i],判断comp.Name.startswith(prefix)之后直接改comp.Footprint,改完pcb.Save()。DelphiScript里遍历原理图元件用SchDoc.SchIterator_Iterator(),每个对象的ObjectId等于'Component'的就取参数,Component.ParamByName('Value').Value读值,Component.Designator.Text读位号。参数名区分大小写,'Value'和'value'是两个东西。

BOM导出这个脚本用得最多。DelphiScript直接访问项目对象模型,从Server.Application.Projects.Item(0).Documents拿当前活动项目文档树,逐层遍历Sheet→Component→Parameters采集数据。读取封装参数走Component.Parameters.Item('Footprint').Value,直接点属性访问会抛EAccessViolation异常,外层用Try...Except包起来,读不到就给默认值。多部件元件比如74HC00四路与非门拆成U1A到U1D,脚本里识别Component.DesignItemID聚合到同一个PartNumber下面,Quantity自动累加为4,Description里标"Quad 2-Input NAND Gate (1 of 4)"。CSV导出注意RFC 4180规范,含逗号或换行符的字段强制用双引号包裹,双引号本身替换成两个连续双引号,文件头声明UTF-8 BOM让Excel认中文,用TStringList.SaveToFile(FileName, TEncoding.UTF8)写字节流,每行末尾加#13#10

批量改设计规则和输出Gerber,设计规则的批量修改在PCB端,PCB Rules右键用Query筛选应用对象,电源网络线宽统一改宽或者过孔盖油设置切换,脚本里调Rule的接口改属性。Gerber批量输出走OutJob,Application.OutputJobManager.LoadJob()加载预设的OutJob文件,OutputJob.Execute()执行输出,按项目版本号自动创建带时间戳的归档目录。这些API的前提是脚本工程里引用了对应的接口库,没引用的话编译过不去,报Undeclared identifier

【Altium Designer脚本开发】程序分享

脚本调试的几个习惯。DelphiScript不支持动态链接库调用,也没有文件系统权限,要读写外部文件得走Application.FileOpenDialog间接触发。编码问题,DelphiScript的.pas文件本身存成UTF-8带BOM,脚本里写的中文字符串不会乱码。写脚本之前先ShowMessage打印一下拿到的对象数量和类型,确认遍历范围对不对,别一上来就改属性,改错了撤销都来不及。Tools→Scripting System→Run Script跑脚本,脚本文件必须先打开,AD不会从硬盘上直接加载.pas文件。

脚本工程路径放在D:\AD\scripts\下面,跟PCB工程分开,一个功能一个.pas文件,版本控制只提交.pas和ScriptProject文件,编译产物不提交。BrettLMiller在GitHub上放了一套Altium-DelphiScripts,里面有OutJob调用的示例和参数操作的参考。eda-agent那个Python库暴露了400多个工具接口,PCB规则修改走pcb_set_rule_properties,不用手写Rule的符号名。下次把那个CSV导入原理图参数的脚本改一下,现在只支持Comment和Designator两列,厂商编号和封装两列还没加进去,改法是在循环里多读两个……



免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删

相关文章
技术文档
QR Code
微信扫一扫,欢迎咨询~
customer

online

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 board-phone 155-2731-8020
close1
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

姓名不为空

姓名不为空
手机不正确

手机不正确

手机不正确
公司不为空

公司不为空

公司不为空