eagle脚本语言的解析器
EagleSCR的Python项目详细描述
pyeaglescr
pyEagleSCR是一个纯Python解析器,用于 AutoDesk/CADSoft Eagle’s PCB schematic/layout tool
目前,它只支持解析所需的功能 符号和包装,以便于在其他工具中使用零件规范 就像KiCad
地位
基本功能工作,包括(可能不完全)支持 对于这些命令:
- 编辑,支持符号、软件包和设备
- 前缀
- 别针
- 电线
- 层
- 连接
- 说明
- 属性
- 添加
- 包装
- SMD
- 网格
- 设置
示例
对this ZIP on farnell.com中的.scr文件运行此工具(对于 成分 STM32F405RGT6, Farnell库存编号2064363)产生此结果:
{'devices':{'STM32F405RGT6':<DeviceSTM32F405RGT6>},'grid':'mil','layer':'96','packages':{'QFP50P1200X1200X160-64N':<PackageQFP50P1200X1200X160-64Nlines=278smd_pads=64>},'settings':{'Wire_Bend':'2'},'symbols':{'STM32F405RGT6':<SymbolSTM32F405RGT6,64pins,4lines>}}
看起来不多,但这是对富人的简单总结 此对象树中的信息这里解析的符号,a STM32F405RGT6,列出了所有64个管脚,正确映射到 通过 设备指定的连接STM32F405RGT6
用法
创建一个解析器对象,逐行输入SCR,然后读取 要从parser.context对象中提取的信息:
scrparser=parser.Parser()forlineinopen("yourfile.scr"):scrparser.handle_line(line)printscrparser.context['symbols']# {'STM32F405RGT6': <Symbol STM32F405RGT6, 64 pins, 4 lines>}
您可以获取有关此符号上的管脚的信息,例如 是的,并且应该在 绘制符号时:
pins=scrparser.context['symbols']['STM32F405RGT6'].pinsprintpins.keys()[:10]# ['PB11', 'PB10', 'PB13', 'PB12', 'PB15', 'PB14', 'VDDA', 'PC14', 'PC15', 'VSS_2']printpins['PB11']# <Pin PB11 type=I/O rotation=0 position=-700,-1600 device=STM32F405RGT6.30>printpins['VDDA']# <Pin VDDA type=Pwr rotation=0 position=-700,1800 device=STM32F405RGT6.13>
如果此脚本文件包含有关 此符号,您还可以获取任何管脚的物理焊盘信息 通过在包规范中查找相应的管脚:
pin_number=pins['VDDA'].device_pin_number# '13'scrparser.context['packages']['QFP50P1200X1200X160-64N'].smd_pads[pin_number]# <Smd 13 x=11 y=58 width=270 height=-221 rotation=-89>
贡献
欢迎投稿!请打开公关!
待办事项
- 这个api有点麻烦:
- 属性的名称可能更明显
- 插脚应参考 套餐
- 支持更多的Eagle SCR命令,比如:
- 更改(适用于包装和符号)
- 文本(适用于包装和符号)
- 值(适用于设备?)
- 衬垫(通孔组件,适用于包装?)
- 技术(适用于设备?)
- wire(四元组变体,可能用于矩形?)
- 支持命令结束后删除注释。
- 在上下文中设置合理的默认值,以匹配Eagle的工作。
- 层
- 网格
- 还有其他的默认设置需要在这里初始化吗?
- 支持不区分大小写的命令
- Python 3支持
- 测试!
- 支持处理整个文件,因此我们不必将其输入 一行接一行,太傻了。