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支持
  • 测试!
  • 支持处理整个文件,因此我们不必将其输入 一行接一行,太傻了。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java错误:无法找到或加载主类   Base85又名ASCI85 java项目   在Java oracle过程中创建Clob对象时引发AbstractMethodError   访问布尔Java时出现NullPointerException   在Java中压缩和解压缩字符串的调试程序   java了解JavaMail下未读消息的不同方法   java Vaadin 10网格样式基于内容的单个行   java使用Sparql查询识别实体的类别/分类   java如何在组件的设计阶段防止内存泄漏?   java使用共享首选项在应用程序上保存更改的语言   Spring数据jpa中具有复合PK的表的java本机查询   java复选框节点树