嘉立创EDA标准版文档格式
[TOC]
概述
2020.08.11
这里的文档格式即嘉立创EDA标准版的文件源码格式,分为两种类型:
- sch类型文档
- pcb类型文档
文档为严格的JSON
类型字符串。以下将以JSON格式按照不同的字段进行说明。
两种文档类型的格式十分类似,主要区别在于基本图元和某些特殊属性值的差异,相同部分请参考通用文档格式部分。
通用文档格式
在不同的类型的文档中,有些格式是通用的,或者是某些文档专用的,总结如下。
分隔符
//压缩格式的分隔符
var SP = '~',
SEG = '^^',
NEWLINE = '#@$',
PARASP = '`', //各个参数的分隔标记para SP
SHEET = '#sheet#'; //从服务器加载多个文件, Eagle导入 + netlistHandle
2
3
4
5
6
文件头head
字段名:
head
。json类型,包含了整个文档的基本信息。
示例以及数据格式:
{
"docType": "1", // [文档类型] - string
"editorVersion": "6.3.0", // [文档版本号] - string
"c_para": {}, // [自定义属性] - josn
"x": "4000", // [文档坐标原点横坐标] - string
"y": "3000", // [文档坐标原点纵坐标] - string
"hasIdFlag": true, // [库文件是否已绑定了对应封装的uuid] - boolean
"newgId": true, // [内部器件是否生成唯一id] - boolean
"importFlag": 0, // [eagle导入标记] - number
"transformList": "", // [偏移数据] - string(弃用)
"c_spiceCmd": "", // [仿真指令] - string(只在原理图类型文档中配置)(弃用)
"isSheet": true, // [是否为图纸] - boolean(识别库是否为图纸类型)
"importedFrom": '' // [导入来源] - 已弃用
}
2
3
4
5
6
7
8
9
10
11
12
13
14
画布配置canvas
字段名:
canvas
,string类型,使用符号~
分隔。用来标识画布相关属性。
示例:
'CA~1000~1000~#000000~yes~#FFFFFF~10~1000~1000~line~0.5~mm~1~45~~0.5~4000~3000~0~none';
格式说明:
原理图:
1.[固定标识]:'CA'
2.[viewWidth]:svg元素的width属性值,zoom越大该值越大。(旧版本使用)
3.[viewHeight]:svg元素的height属性值,zoom越大该值越大。(旧版本使用)
4.[backGround]:背景色
5.[gridVisible]:网格是否可见
6.[gridColor]:网格颜色
7.[gridSize]:网格尺寸
8.[canvasWidth]:逻辑上的画布宽,即svg viewBox里的宽,不随zoom改变(旧版本使用)
9.[canvasHeight]:逻辑上的画布高,即svg viewBox里的高,不随zoom改变(旧版本使用)
10.[gridStyle]:网格样式
11.[snapSize]:吸附的栅格尺寸
12.[unit]:单位
13.[altSnapSize]:alt键吸附尺寸
14.[originX]:画布原点横坐标
15.[originY]:画布原点纵坐标
2
3
4
5
6
7
8
9
10
11
12
13
14
15
pcb:(比原理图多了一些数据)
1.[固定标识]:'CA'
2.[viewWidth]:svg元素的width属性值,zoom越大该值越大。(旧版本使用)
3.[viewHeight]:svg元素的height属性值,zoom越大该值越大。(旧版本使用)
4.[backGround]:背景色
5.[gridVisible]:网格是否可见
6.[gridColor]:网格颜色
7.[gridSize]:网格尺寸
8.[canvasWidth]:逻辑上的画布宽,即svg viewBox里的宽,不随zoom改变(旧版本使用)
9.[canvasHeight]:逻辑上的画布高,即svg viewBox里的高,不随zoom改变(旧版本使用)
10.[gridStyle]:网格样式
11.[snapSize]:吸附的栅格尺寸
12.[unit]:单位
13.[routingWidth]:线宽
14.[routingAngle]:拐角角度
15.[copperAreaDisplay]:铺铜区是否可见
16.[altSnapSize]:alt键吸附尺寸
17.[originX]:画布原点横坐标
18.[originY]:画布原点纵坐标
19.[routeConflict]:布线冲突(忽略 | 环绕 | 阻挡)
20.[removeLoop]:是否移除回路
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
图元数据shape
字段名:
shape
。字符串数组类型。每条数据对应每个图元的压缩数据。
原理图中包含了矩形、文字和椭圆的数据示例:
[
'R~440~300~~~50~110~#000000~1~0~none~gge5~0~',
'T~L~360~300~0~#0000FF~~9pt~~~~comment~Text~1~start~gge8~0~pinpart',
'E~410~355~10~25~#000000~1~0~none~gge12~0',
];
2
3
4
5
图元数据的单条数据结构请参考**:图元格式**。
边界框数据BBox
字段:
BBOX
。json类型。整个文档的盒子模型数据。
示例:
{
"x": 4033.1, // 文档画布边界左上角横坐标
"y": 3282.1, // 文档画布边界左上角纵坐标
"width": 113.3, // 文档画布边界宽度
"height": 147.8 // 文档画布边界高度
}
2
3
4
5
6
层配置layers
(PCB)
字段名:
layers
。字符串数组类型。层配置信息只在pcb类型文档中,记录了层工具的显示与激活等信息。
示例:
[
'1~TopLayer~#FF0000~true~true~true~',
'2~BottomLayer~#0000FF~true~false~true~',
'3~TopSilkLayer~#FFCC00~true~false~true~',
'4~BottomSilkLayer~#66CC33~true~false~true~',
'21~Inner1~#999966~true~false~true~0~Plane',
];
2
3
4
5
6
7
数组中每条数据表示对应层的相关层信息,使用间隔符~
分开,数据格式为:
1.[layerid]:层的id标识
2.[name]:层名称
3.[color]:层颜色
4.[visible]:层是否可见
5.[active]:是否为当前激活层
6.[config]:是否配置当前层
7.[transparency]:层透明度
8.[type]:层类型(内电层 | 信号层),内层专有配置
2
3
4
5
6
7
8
元素的可选与显示配置objects
(PCB)
字段:
objects
。字符串数组类型。记录层工具的元素可选与显示设置信息(pcb类型文档专用)。
示例:
[
"All~true~false",
"Component~true~true",·
"Prefix~true~true",
"Name~true~false",
"Track~true~true",
"Pad~true~true",
"Via~true~true",
"Hole~true~true",
"Copper_Area~true~true",
"Circle~true~true",
"Arc~true~true",
"Solid_Region~true~true",
"Text~true~true",
"Image~true~true",
"Rect~true~true",
"Dimension~true~true",
"Protractor~true~true"
]
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
数据格式:
1.[key]:元素关键字标识符(不能包含空格,会用_替换带有空格的key)
2.[selected]:是否可选中
3.[visible]:是否显示
2
3
偏好设置preference
(PCB)
字段:
preference
。json类型。记录文档的一些偏好设置(pcb类型文档专用)。
示例:
{
"hideFootprints": "",
"hideNets": ""
}
2
3
4
drc检测规则DRCRULE
(PCB)
字段:
DRCRULE
。json类型。记录drc检测规则配置信息(pcb类型文档专用)。
示例:
{
"Default": { // 默认配置
"trackWidth": 1, // 线宽
"clearance": 0.6, // 检测间距
"viaHoleDiameter": 2.4, // 孔外径
"viaHoleD": 1.2 // 孔内径
},
"isRealtime": false, // 是否实时检测
"isDrcOnRoutingOrPlaceVia": false, // 是否在布线与放置过孔时应用设计规则
"checkObjectToCopperarea": true, // 是否检测元素到铺铜的距离
"showDRCRangeLine": true // 是否在布线时显示DRC安全边界
}
2
3
4
5
6
7
8
9
10
11
12
自动布线规则routerRule
(PCB)
字段:
routerRule
。json类型。记录布线规则的配置信息(pcb类型文档专用)。
{
"unit": "mil", // 单位
"trackWidth": 6, // 线宽
"trackClearance": 6, // 间距
"viaHoleD": 12, // 孔内径
"viaDiameter": 24, // 孔外径
"routerLayers": [ // 布线层配置
1,
2
],
"smdClearance": 6, // 贴片和器件的间距
"specialNets": [ // 特殊网络配置
{
"net": "AAA", // 网络
"width": "15mil", // 线宽
"clearance": "11mil" // 间距
}
],
"nets": [ // 所有网络
"AAA"
],
"padsCount": 1, // 焊盘数量
"skipNets": [], // 忽略的网络配置
"realtime": true // 实时检测
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
网络颜色netColors
(PCB)
字段:
netColors
。json类型。记录网络颜色配置信息(pcb类型文档专用)。
示例:
{
"DSA": {
"color": "#339933"
},
"FSADFDSA": {
"color": "#FF0000"
}
}
2
3
4
5
6
7
8
仿真数据(波形图)waveForm
字段:
waveForm
。json字符串类型。仿真波形图专用字段,用于存储波形图数据。
图元格式
基础图元组合起来就是一个完整的器件(封装),比如最基本的矩形、圆这种简单图元,复杂一点的图元如引脚、网络标签、焊盘等。复杂图元其实也是简单基本图元组成的。
原理图的基础图元和pcb的基础图元基本都不一致。
两种文档类型的基础图元都有一种特殊图元,特殊图元独立存在,不再组成其他元素,比如原理图的
schlib
和pcb的FOOTPRINT
,即原理图器件和pcb封装,这两种图元基本都由其他基础图元组成,但不允许有本身图元组成。数据类型:string。基本数据以分隔符
~
隔开。
原理图部分
1.简单图元
折线polyline
示例:
'PL~230 290 430 180 550 340~#000000~1~0~none~gge5~0';
数据格式:
1.[cmdKey]:图元标识符,默认为"PL"。
2.[pointerStr]:折线polyline的points数据字符串
3.[strokeColor]:线条颜色
4.[strokeWidth]:线条宽度
5.[strokeStyle]:线条样式
6.[fillColor]:填充颜色
7.[gId]:元素id
8.[locked]:是否锁定
2
3
4
5
6
7
8
导线wire
示例:
'W~495 -580 495 -475 580 -475~#008800~1~0~none~gge79~0';
导线的数据格式除了首位标识符为W
,其余结构同polyline
一致。
总线bus
示例:
'B~410 -565 400 -455~#008800~2~0~none~gge80~0';
总线的数据格式除了首位标识符为B
,其余结构同polyline
一致。
多边形polygon
示例:
'PG~290 260 340 350 440 230 390 200 390 200~#000000~1~0~none~gge5~0';
多边形的数据格式除了首位标识符为PG
,其余结构同polyline
一致。
矩形rect
示例:
'R~360~250~~~70~80~#000000~1~0~none~gge6~0~';
数据格式:
1.[cmdKey]:图元标识符,R
2.[x]:横坐标
3.[y]:纵坐标
4.[rx]:水平轴向的圆角半径尺寸
5.[ry]:垂直轴向的圆角半径尺寸
6.[width]:矩形宽度
7.[height]:矩形高度
8.[strokeColor]:线条颜色
9.[strokeWidth]:线条宽度
10.[strokeStyle]:线条样式
11.[fillColor]:填充颜色
12.[gId]:元素id
13.[locked]:是否锁定
14:[c_etype]:c_etype属性值(自定义的用于细分图元类型的属性)
2
3
4
5
6
7
8
9
10
11
12
13
14
图片image
示例:
'I~360~290~104~26~0~data:image/png;base64,iVBORw......TkSuQmCC~gge11~0~';
数据格式:
1.[cmdKey]:图元标识符,I
2.[x]:x坐标
3.[y]:y坐标
4.[width]:图片宽度
5.[height]:图片高度
6.[rotate]:旋转角度
7.[href]:图片的数据信息
8.[gId]:元素id
9.[locked]:是否锁定
10.[transform]:偏移属性
2
3
4
5
6
7
8
9
10
圆circle
注:新版本已弃用(椭圆可代替)。
示例:
'C~685~315~35~#000000~1~0~none~gge21~0';
数据格式:
1.[cmdKey]:图元标识符,C
2.[cx]:圆心x坐标
3.[cy]:圆心y坐标
4.[r]:半径
5.[strokeColor]:线条颜色
6.[strokeWidth]:线条宽度
7.[strokeStyle]:线条样式
8.[fillColor]:填充颜色
9.[gId]:元素id
10.[locked]:是否锁定
2
3
4
5
6
7
8
9
10
椭圆ellipse
示例:
'E~420~295~40~25~#000000~1~0~none~gge22~0';
数据格式:
1.[cmdKey]:图元标识符,E
2.[cx]:圆心x坐标
3.[cy]:圆心y坐标
4.[rx]:x轴上椭圆的半径
5.[ry]:y轴上椭圆的半径
6.[strokeColor]:线条颜色
7.[strokeWidth]:线条宽度
8.[strokeStyle]:线条样式
9.[fillColor]:填充颜色
10.[gId]:元素id
11.[locked]:是否锁定
2
3
4
5
6
7
8
9
10
11
直线line
示例:
'L~0~470~-765~480~-775~gge105~0';
数据格式:
1.[cmdKey]:图元标识符,L
2.[x1]:起点横坐标
3.[y1]:起点纵坐标
4.[x2]:终点横坐标
5.[y2]:终点纵坐标
6.[strokeColor]:线条颜色
7.[strokeWidth]:线条宽度
8.[strokeStyle]:线条样式
9.[fillColor]:填充颜色
10.[gId]:元素id
11.[locked]:是否锁定
2
3
4
5
6
7
8
9
10
11
路径path
示例:
'PT~M370 280 C410 380 490 300 440 240~#000000~1~0~none~gge23~0~';
数据格式:
1.[cmdKey]:图元标识符,PT
2.[pathString]:path路径
3.[strokeColor]:线条颜色
4.[strokeWidth]:线条宽度
5.[strokeStyle]:线条样式
6.[fillColor]:填充颜色
7.[gId]:元素id
8.[locked]:是否锁定
2
3
4
5
6
7
8
圆弧arc
示例:
'A~M 459.9983 319.997 A 70 170 0 1 1 461.2807 267.9875~~#000000~1~0~none~gge26~0';
数据格式:
1.[cmdKey]:图元标识符,A
2.[pathString]:path路径
3.[helperDots]:已移除,占位。
4.[strokeColor]:线条颜色
5.[strokeWidth]:线条宽度
6.[strokeStyle]:线条样式
7.[fillColor]:填充颜色
8.[gId]:元素id
9.[locked]:是否锁定
2
3
4
5
6
7
8
9
文本annotation
示例:
'T~L~390~300~0~#0000FF~~9pt~~~~comment~Text~1~start~gge27~0~pinpart';
数据格式:
1.[cmdKey]:图元标识符,A
2.[mark]:文本标记,可选值:L(普通文本) | N(器件名称) | P(器件编号) | PK(封装名)
3.[x]:横坐标
4.[y]:纵坐标
5.[rotation]:旋转角度
6.[fillColor]:填充颜色
7.[fontFamily]:字体
8.[fontSize]:文字大小
9.[fontWeight]:文字粗细
10.[fontStyle]:文字样式(自动 | 正常 | 斜体)
11.[dominantBaseline]:文字的dominant-baseline属性
12.[type]:文本类型(注释 | 仿真)
13.[value]:文本值
14.[visible]:是否可见
15.[textAnchor]:文字的text-anchor属性
16.[gId]:元素id
17.[locked]:是否锁定
18.[c_etype]:c_etype属性值(c_etype是自定义的用于细分图元类型的属性)
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
表格图片pimage
注:目前只用于表格内的图片,为了与普通图片做区分使用的一种新类型图元表示。
示例:
'Pimage~L~1~gge74~0~gge75~694.99995~-38~104~26~data:image/png;base64,iVBORw0KG......pCvHNepOOktyLeC61RcZ3JlkHPt9dXiX4IAntNzzH4CAAAAAElFTkSuQmCC';
数据格式:
1.[cmdKey]:图元标识符,Pimage
2.[mark]:特殊标记(未使用)
3.[visible]:是否可见(未使用)
4.[locked]:是否锁定
5.[imgid]:元素id
6.[imgx]:x坐标
7.[imgy]:y坐标
8.[imgwidth]:图片宽度
9.[imgheight]:图片高度
10.[imghref]:图片base64数据信息
2
3
4
5
6
7
8
9
10
2.复杂图元
引脚pin
注:引脚的数据格式使用了两种分隔符,外层整体数据使用^^
,内层单一数据再使用~
分隔。
示例:
'P~show~0~1~420~300~~gge31~0^^420~300^^M 420 300 h -20~#880000^^1~398~303~0~1~end~~~#0000FF^^1~405~299~0~1~start~~~#0000FF^^0~403~300^^0~M 400 297 L 397 300 L 400 303';
数据格式:
#1.[configure] - 配置信息
1.[cmdKey]:图元标识符,P
2.[dispaly]:是否显示
3.[electric]:电气属性
4.[spicePin]:仿真编号
5.[x]:横坐标 //弃用,参考path
6.[y]:纵坐标 //弃用,参考path
7.[rotation]:旋转角度
8.[gId]:元素id
9.[locked]:是否锁定
#2.[pinDot] - 引脚吸附点(起点)信息
1.[x]:起点横坐标 //弃用,参考path
2.[y]:起点纵坐标 //弃用,参考path
#3.[path] - 引脚路径信息
1.[pathString]:路径数据
2.[pinColor]:引脚颜色
#4.[name] - 引脚名称信息
1.[visible]:是否可见
2.[x]:横坐标
3.[y]:纵坐标
4.[rotation]:旋转角度
5.[text]:文本值
6.[textAnchor]:文字的text-anchor属性
7.[fontFamily]:字体
8.[fontSize]:文本大小
9.[fillColor]:文本填充颜色
#5.[num] - 引脚编号信息
1.[visible]:是否可见
2.[x]:横坐标
3.[y]:纵坐标
4.[rotation]:旋转角度
5.[text]:文本值
6.[textAnchor]:文字的text-anchor属性
7.[fontFamily]:字体
8.[fontSize]:文本大小
9.[fillColor]:文本填充颜色
#6.[num] - 引脚终点信息
1.[visible]: 终点是否可见
2.[x]:终点横坐标
3.[y]:终点纵坐标
#7.[clock] - 引脚时钟信息
1.[visible]: 时钟是否显示
2.[pathString]:时钟路径信息
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
连接点junction
示例:
'J~425~-170~2.5~#CC0000~gge130~0';
数据格式:
1.[cmdKey]:图元标识符,J
2.[x]:横坐标
3.[y]:纵坐标
4.[r]:半径
5.[fillColor]:填充颜色
6.[gId]:元素id
7.[locked]:是否锁定
2
3
4
5
6
7
标识符netflag
注:同引脚的数据格式类似,使用了两种分隔符,外层整体数据使用^^
,内层单一数据再使用~
分隔。
示例:
'F~part_netLabel_+5V~425~-170~270~gge124~~0^^425~-170^^+5V~#000000~435.5~-166~0~start~1~Times New Roman~9pt~gge126^^PL~435 -170 425 -170~#000000~1~0~none~gge128~0^^PL~435 -175 435 -165~#000000~1~0~transparent~gge129~0';
数据格式:
#1.[configure] - 配置信息
1.[cmdKey]:图元标识符,F
2.[partId]:标识符类型以及文本信息
3.[x]:横坐标
4.[y]:纵坐标
5.[rotation]:旋转角度
6.[gId]:元素id
7.[transform]:偏移信息(旧版本)
8.[locked]:是否锁定
#2.[pinDot] - 吸附点信息
1.[x]:吸附点横坐标
2.[y]:吸附点纵坐标
#3.[mark] - 标识符文本信息
1.[netFlagString]:文本值
2.[fillColor]:填充颜色
3.[x]:横坐标
4.[y]:纵坐标
5.[rotation]:旋转角度
6.[textAnchor]:文字的text-anchor属性
7.[visible]:是否可见
8.[fontFamily]:字体
9.[fontSize]:文本大小
10.[gId]:文本元素id
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
网络标签netlabel
示例:
'N~515~-430~0~#0000ff~netLabel1~gge78~start~517~-432.5~Times New Roman~7pt~0';
数据格式:
1.[cmdKey]:图元标识符,N
2.[x]:横坐标
3.[y]:纵坐标
4.[rotation]:旋转角度
5.[fillColor]:填充颜色
6.[textAnchor]:文字的text-anchor属性
7.[visible]:是否可见
8.[fontFamily]:字体
9.[fontSize]:文本大小
10.[gId]:文本元素id
2
3
4
5
6
7
8
9
10
总线分支busentry
示例:
'BE~0~495~-405~505~-415~gge78~0';
数据格式:
1.[cmdKey]:图元标识符,BE
2.[x1]:起点横坐标
3.[y1]:起点纵坐标
4.[x2]:终点横坐标
5.[y2]:终点纵坐标
6.[gId]:元素id
7.[locked]:是否锁定
2
3
4
5
6
7
箭头arrowhead
示例:
'AR~part_arrowhead~410~300~gge5~0~M 410 300 L 395 307.5 L 398.75 300 L 395 292.5 Z ~#000000~0~3~15';
数据格式:
1.[cmdKey]:图元标识符,AR
2.[partType]:放置类型,固定为"part_arrowhead"
3.[x]:横坐标
4.[y]:纵坐标
5.[gId]:文本元素id
6.[rotation]:旋转角度
7.[pathString]:箭头路径数据
8.[fillColor]:填充颜色
9.[locked]:是否锁定
10.[arrowtype]:箭头类型(1 | 2 | 3)
11.[arrowsize]:箭头尺寸
2
3
4
5
6
7
8
9
10
11
无连接标志noconnectflag
示例:
'O~0~0~gge86~M-4 -4L4 4M4 -4L-4 4~#33cc33~0';
数据格式:
1.[cmdKey]:图元标识符,O
2.[x]:横坐标
3.[y]:纵坐标
4.[gId]:文本元素id
5.[pathString]:路径数据
6.[strokeColor]:线条颜色
7.[locked]:是否锁定
2
3
4
5
6
7
3.特殊图元
形状SHEET
这里的形状可以理解为自由格式的组合,可以自定义数据格式,目前原理图没有使用入口,主要在pcb中使用,例如pcb文档中的图形,3D模型等都使用的svgnode
图元进行构建。更多细节请参考基础图元格式 > PCB部分 > 特殊图元 > 形状svgnode
。
器件schlib
原理图的schlib
即原理图器件(库文件),库文件可以由其他图元组成,但不能由库本身组成库,原理图库只能放置在原理图中。
在原理图中,schlib
压缩数据同其他图元一样会放到shape
字段下,schlib
格式分为两部分组成:
- 器件的头部数据:头部数据以分隔符
~
隔开。 - 器件的内部图元数据:图元之间将会以分隔符
#@$
隔开。
两部分数据再以分隔符号#@$
隔开。
示例:
"LIB~0~0~package`R0201`nameAlias`Value(Ω)`BOM_Supplier Part``BOM_Supplier``Contributor`LCEDA_Lib`spicePre`R`spiceSymbolName`R_0201_US`BOM_Manufacturer Part``~~0~gge3fb2f834261e887c~b600ab0518154c0c9d2ed5ca96244c69~36be002046ee442daec3a30b0f22c9fe~0~~yes~yes#@$T~N~-5.96875~-8~0~#000080~Arial~~~~~comment~1k~1~start~gge167~0~#@$T~P~-5.96875~-17.15625~0~#000080~Arial~~~~~comment~R1~1~start~gge169~0~#@$PL~15 0 12 5~#A00000~1~0~none~gge171~0#@$PL~7 -5 2 5~#A00000~1~0~none~gge172~0#@$PL~12 5 7 -5~#A00000~1~0~none~gge173~0#@$P~show~0~2~20~0~0~gge174~0^^20~0^^M 20 0 h -5~#800^^0~11~0~0~2~end~~~#800^^0~19~-4~0~2~start~~~#800^^0~18~0^^0~M 15 -3 L 12 0 L 15 3#@$PL~-7 5 -12 -5~#A00000~1~0~none~gge181~0#@$PL~2 5 -2 -5~#A00000~1~0~none~gge182~0#@$PL~-2 -5 -7 5~#A00000~1~0~none~gge183~0#@$PL~-12 -5 -15 0~#A00000~1~0~none~gge184~0#@$P~show~0~1~-20~0~180~gge185~0^^-20~0^^M -20 0 h 5~#800^^0~-11~0~0~1~start~~~#800^^0~-19~-4~0~1~end~~~#800^^0~-18~0^^0~M -15 3 L -12 0 L -15 -3"
数据格式:
#1.[器件头部数据]
1.[cmdKey]:图元标识符,LIB
2.[x]:横坐标
3.[y]:纵坐标
4.[c_para]:自定义属性
5.[rotation]:旋转角度
6.[importFlag:eagle导入标记
7.[gId]:元素id
8.[puuid]:绑定的pcb封装uuid
9.[uuid]:器件的uuid
10.[locked]:是否锁定
11.[bind_pcb_id]:绑定的pcb封装的id(弃用)
12.[convert_to_pcb]:是否更新到pcb
13.[add_into_bom]:是否加入bom表单
#2.[器件内部图元数据]:即其他基本图元的压缩格式。
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
PCB部分
1.简单图元
导线TRACK
示例:
'TRACK~1~1~~4055.5 3348 4055.5 3346 4131.5 3270 4096 3270~gge5~0';
数据格式:
1.[cmdKey]:图元标识符,TRACK
2.[strokeWidth]:线宽
3.[layerid]:所属层
4.[net]:网络
5.[pointArr]:坐标点数据
6.[gId]:元素id
7.[locked]:是否锁定
2
3
4
5
6
7
矩形RECT
示例:
'RECT~4065.5~3293.25~63~45.5~1~gge6~0~0~~~~';
数据格式:
1.[cmdKey]:图元标识符,RECT
2.[x]:横坐标
3.[y]:纵坐标
4.[width]:宽度
5.[height]:高度
6.[layerid]:所属层
7.[gId]:元素id
8.[locked]:是否锁定
9.[strokeWidth]:线宽
10.[fill]:填充颜色
11.[transform]:偏移数据
12.[net]:网络
13.[c_etype]:c_etype属性值(自定义的用于细分图元类型的属性)
2
3
4
5
6
7
8
9
10
11
12
13
圆CIRCLE
示例:
'CIRCLE~4193.5~3148~45.6426~1~1~gge5~0~~circle_gge8,circle_gge9';
数据格式:
1.[cmdKey]:图元标识符,CIRCLE
2.[cx]:圆心x坐标
3.[cy]:圆心y坐标
4.[r]:半径
5.[strokeWidth]:线宽
6.[layerid]:所属层
7.[gId]:元素id
8.[locked]:是否锁定
9.[net]:网络
10.[transformarc]:由圆转换的两个半圆的id信息
2
3
4
5
6
7
8
9
10
文本TEXT
示例:
'TEXT~L~4081~3306.5~0.8~0~0~1~~8~TEXT~M 4083.55 3298.44 L 4083.55 3306.07 M 4081 3298.44 L 4086.09 3298.44 M 4088.49 3298.44 L 4088.49 3306.07 M 4088.49 3298.44 L 4093.22 3298.44 M 4088.49 3302.07 L 4091.4 3302.07 M 4088.49 3306.07 L 4093.22 3306.07 M 4095.62 3298.44 L 4100.71 3306.07 M 4100.71 3298.44 L 4095.62 3306.07 M 4105.65 3298.44 L 4105.65 3306.07 M 4103.11 3298.44 L 4108.2 3298.44~~gge13~~0~pinpart';
数据格式:
1.[cmdKey]:图元标识符,TEXT
2.[type]:文本标记,可选值:L(普通文本) | N(器件名称) | P(器件编号) | PK(封装名)
3.[x]:横坐标 //弃用,参考pathStr
4.[y]:纵坐标 //弃用,参考pathStr
5.[strokeWidth]:线宽
6.[rotation]:旋转角度 //弃用,参考pathStr
7.[mirror]:是否镜像 //弃用,参考pathStr
8.[layerid]:所属层
9.[net]:网络
10.[fontSize]:文字大小
11.[text]:文本值 //弃用,参考pathStr
12.[pathStr]:路径数据
13.[display]:是否显示
14.[gId]:元素id
15.[fontFamily]:字体
16.[locked]:是否锁定
17.[c_etype]:c_etype属性值(c_etype是自定义的用于细分图元类型的属性)
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
圆弧ARC
示例:
'ARC~1~1~~M 4108.3572 3265.4999 A 53.7587 53.7587 0 1 0 4130.4018 3353.4528~~gge16~0';
数据格式:
1.[cmdKey]:图元标识符,ARC
2.[strokeWidth]:线宽
3.[layerid]:所属层
4.[net]:网络
5.[d]:路径数据
6.[c_helper_dots]:辅助线路径数据
7.[gId]:元素id
8.[locked]:是否锁定
2
3
4
5
6
7
8
2.复杂图元
焊盘PAD
示例:
"PAD~ELLIPSE~4020~3308.5~6~6~11~~1~1.8~~0~gge5~0~~Y~0~~~4020,3308.5",
数据格式:
1.[cmdKey]:图元标识符,PAD
2.[shape]:焊盘形状
3.[x]:横坐标
4.[y]:纵坐标
5.[width]:宽度
6.[height]:高度
7.[layerid]:所属层
8.[net]:网络
9.[number]:编号
10.[holeR]:孔直径
11.[pointArr]:坐标点数据
12.[rotation]:旋转角度
13.[gId]:元素id
14.[holeLength]:孔长度
15.[slotPointArr]:孔的坐标点数据
16.[plated]:是否金属化
17.[locked]:是否锁定
18.[pasteexpansion]:助焊扩展
19.[solderexpansion]:阻焊扩展
20.[holeCenter]:孔中心坐标
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
过孔VIA
示例:
"VIA~4030~3308.5~2.4~~0.6~gge11~0",
数据格式:
1.[cmdKey]:图元标识符,VIA
2.[x]:横坐标
3.[y]:纵坐标
4.[diameter]:过孔直径
5.[net]:网络
6.[holeR]:过孔内径
7.[gId]:元素id
8.[locked]:是否锁定
2
3
4
5
6
7
8
通孔HOLE
示例:
'HOLE~4041.5~3309~4~gge15~0';
数据格式:
1.[cmdKey]:图元标识符,HOLE
2.[x]:横坐标
3.[y]:纵坐标
4.[holeR]:孔直径
5.[gId]:元素id
6.[locked]:是否锁定
2
3
4
5
6
铺铜COPPERAREA
示例:
"COPPERAREA~1~1~GND~M 4055 3023.5 L 4055 3060.5 L 4060 3065.5 L 4108.5 3065.5 L 4115.5 3058.5 L4115.5,3025 L4114,3023.5 Z~1~solid~gge83~spoke~none~~0~~1~1~1~1~yes~0",
数据格式:
1.[cmdKey]:图元标识符,COPPERAREA
2.[strokeWidth]:线宽
3.[layerid]:所属层
4.[net]:网络
5.[pathStr]:路径数据
6.[clearanceWidth]:间距
7.[fillStyle]:填充样式
8.[gId]:元素id
9.[thermal]:焊盘连接方式(发散 | 直连)
10.[keepIsland]:是否保留孤岛
11.[compressData]:铺铜压缩数据
12.[locked]:是否锁定
13.[name]:名称
14.[order]:顺序
15.[gridTrackWidth]:网格线宽
16.[gridClearance]:网格间距
17.[toBoardOutline]:到边框间距
18.[fabricationImprove]:是否制造优化
19.[spoke_width]:发散线宽
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
实心填充SOLIDREGION
示例:
'SOLIDREGION~1~~M 4012 3300.5 L 4012 3317.5 L 4019.5 3325 L 4034 3325 L 4040 3319 L 4040 3308 L 4031 3299 L4019.5,3299 L4018.5,3298 Z~solid~gge20~~~~0';
数据格式:
1.[cmdKey]:图元标识符,SOLIDREGION
2.[layerid]:所属层
3.[net]:网络
4.[pathStr]:路径数据
5.[type]:类型
6.[gId]:元素id
7.[teardrop]:泪滴
8.[targetPad]:目标焊盘
9.[targetWire]:目标导线
10.[locked]:是否锁定
2
3
4
5
6
7
8
9
10
尺寸DIMENSION
示例:
'DIMENSION~12~M4015.9632,3321.9632L4038.4632,3299.4632M......M 4035.5 3296.5 4045.5342 3306.5342~gge21~~0~straight~0.4';
数据格式:
1.[cmdKey]:图元标识符,DIMENSION
2.[layerid]:所属层
3.[d]:路径数据
4.[gId]:元素id
5.[fontSize]:尺寸高度
6.[locked]:是否锁定
7.[measuring_type]:尺寸类型
8.[font_width]:尺寸宽度
2
3
4
5
6
7
8
量角器PROTRACTOR
示例:
'PROTRACTOR~12~M4051.5 3328 L4051.5 3299.4825M4051.5 3328...... L4069.39 3309.77 ~0.4~gge22~4.5~0~0';
数据格式:
1.[cmdKey]:图元标识符,PROTRACTOR
2.[layerid]:所属层
3.[d]:路径数据
4.[strokeWidth]:线宽
5.[gId]:元素id
6.[fontSize]:文字大小
7.[precision]:精度
8.[locked]:是否锁定
2
3
4
5
6
7
8
3.特殊图元
形状SVGNODE
这里的形状可以理解为自由格式的组合,可以自定义数据格式,主要在pcb中使用,例如pcb文档中的图形,3D模型等都使用的svgnode
图元进行构建。
比如导入的图形:
"SVGNODE~{\"gId\":\"gge65\",\"nodeName\":\"path\",\"nodeType\":1,\"layerid\":\"1\",\"attrs\":{\"d\":\"M 4002.49 2996.53 L 4001.2451 2998.03 L 3999.3676 2998.03 L 3997.49 2998.03 L 3997.49 2999.471 C 3997.49 3000.2635 3997.9693 3001.2082 3998.5551 3001.5703 L 3999.6203 3002.2286 L 3997.8946 3004.1354 L 3996.1689 3006.0423 L 3996.8233 3006.6967 L 3997.4777 3007.3511 L 3999.3405 3005.6653 L 4001.2032 3003.9795 L 4002.4599 3005.4938 L 4003.7166 3007.008 L 4004.6033 3006.46 C 4005.091 3006.1586 4005.49 3005.1083 4005.49 3004.126 L 4005.49 3002.34 L 4007.4981 3000.5227 L 4009.5062 2998.7054 L 4007.8431 2996.8677 C 4005.8255 2994.6383 4004.1478 2994.5324 4002.49 2996.53\",\"id\":\"gge65\",\"stroke\":\"none\",\"layerid\":\"1\"}}";
数据格式:
SVGNODE
的格式由两部分组成,第一部分只有图元标识符"SVGNODE",第二部分为形状的组成数据,数据格式为JSON
数据字符串。
内电层PLANEZONE
示例:
'PLANEZONE~21~GND~solid~planeL21B0#@$planeL21B0I0~M4342.5,3232 4342.5,3169 4420.5,3169 4420.5,3232zM4375.6222,3223.2077 4375.6314,3223.2077 4376.0759,3223.2015 4376.0852,3223.2012 4376.5294,3223.1869z';
数据格式:
压缩数据同其他图元一样会放到shape
字段下,格式由两部分组成:
- 内电层的基本信息:数据以分隔符
~
隔开。 - 内电层路径数据:包含若干路径数据,数据以分隔符
~
隔开。
两部分数据再以分隔符号#@$
隔开。
#1.[内电层基本信息]
1.[cmdKey]:图元标识符,PLANEZONE
2.[layerid]:所属层
3.[net]:网络
4.[fillStyle]:填充类型
5.[gId]:元素id
#2.[内电层路径数据]
1.[gId]:路径元素id
2.[pathStr]:路径数据
2
3
4
5
6
7
8
9
10
封装FOOTPRINT
pcbd的FOOTPRINT
同原理图的schlib
类似,即PCB库文件。库文件可以由其他图元组成,但不能由库本身组成库,pcb库只能放置在PCB中。
在PCB中,FOOTPRINT
压缩数据同其他图元一样会放到shape
字段下,FOOTPRINT
格式分为两部分组成:
- 封装的头部数据:头部数据以分隔符
~
隔开。 - 封装的内部图元数据:图元之间将会以分隔符
#@$
隔开。
两部分数据再以分隔符号#@$
隔开。
示例:
'LIB~4058.9147~3070~package`R0201`~~~gge929a3f9f08f43af9~1~b600ab0518154c0c9d2ed5ca96244c69~1565922186~0~#@$TEXT~N~4057.97~3060~0.6~0~~3~~4.5~1k~M 4057.97 3056.28 L 4058.38 3056.07 L 4058.99 3055.46 L 4058.99 3059.75 M 4060.34 3055.46 L 4060.34 3059.75 M 4062.39 3056.89 L 4060.34 3058.94 M 4061.16 3058.12 L 4062.59 3059.75~none~gge3~~0~#@$TEXT~P~4057.97~3067~0.6~0~~3~~4.5~R1~M 4057.97 3062.46 L 4057.97 3066.75 M 4057.97 3062.46 L 4059.81 3062.46 L 4060.42 3062.66 L 4060.63 3062.87 L 4060.83 3063.28 L 4060.83 3063.69 L 4060.63 3064.1 L 4060.42 3064.3 L 4059.81 3064.5 L 4057.97 3064.5 M 4059.4 3064.5 L 4060.83 3066.75 M 4062.18 3063.28 L 4062.59 3063.07 L 4063.21 3062.46 L 4063.21 3066.75~~gge5~~0~#@$TRACK~0.3937~3~~4056.5525 3068.5039 4058.521 3068.5039~gge7~0#@$TRACK~0.3937~3~~4056.5525 3068.5039 4056.5525 3071.4961~gge8~0#@$TRACK~0.3937~3~~4056.5525 3071.4961 4058.521 3071.4961~gge9~0#@$TRACK~0.3937~3~~4059.3084 3071.4961 4061.2769 3071.4961~gge10~0#@$TRACK~0.3937~3~~4061.2769 3068.5039 4061.2769 3071.4961~gge11~0#@$TRACK~0.3937~3~~4059.3084 3068.5039 4061.2769 3068.5039~gge12~0#@$PAD~RECT~4059.997~3070~1.1811~1.5748~1~R1_2~2~0~4059.4065 3069.2126 4060.5876 3069.2126 4060.5876 3070.7874 4059.4065 3070.7874~0~gge13~0~~Y~0~0~0.4~4059.9969,3070#@$PAD~RECT~4057.832~3070~1.1811~1.5748~1~R1_1~1~0~4057.2415 3069.2126 4058.4226 3069.2126 4058.4226 3070.7874 4057.2415 3070.7874~0~gge18~0~~Y~0~0~0.4~4057.8323,3070';
数据结构:
#1.[封装头部数据]
1.[cmdKey]:图元标识符,LIB
2.[x]:横坐标
3.[y]:纵坐标
4.[c_para]:自定义属性
5.[rotation]:旋转角度
6.[importFlag:eagle导入标记
7.[gId]:元素id
8.[layerid]:所属层
9.[uuid]:封装的uuid
10.[utime]:更新时间
11.[locked]:是否锁定
12.[bind_sch_id]:绑定的原理图器件的id(弃用)
#2.[封装内部图元数据]:即其他基本图元的压缩格式。
2
3
4
5
6
7
8
9
10
11
12
13
14
15
图纸SHEET
原理图的图纸是一种特殊的器件,PCB中的图纸也可以理解为特殊的封装,但PCB使用的单独的图元来表示PCB图纸,所以图纸的结构也同封装结构一致,分为两部分:
- 图纸的头部数据:头部数据以分隔符
~
隔开。 - 图纸的内部图元数据:图元之间将会以分隔符
#@$
隔开。
两部分数据再以分隔符号#@$
隔开。
数据格式:
#1.[图纸头部数据]
1.[cmdKey]:图元标识符,SHEET
2.[x]:横坐标
3.[y]:纵坐标
4.[locked]:是否锁定
5.[layerid]:所属层
6.[gId]:元素id
#2.[图纸内部图元数据]:即其他基本图元的压缩格式。
2
3
4
5
6
7
8
9
原理图文件格式
一个原理图可以包含多个图页,每个图页都可以作为一份独立原理图文档,所以这里的原理图可以理解为原理图工程,可以包含若干原理图页,在压缩格式中使用schematics
字段来标识改工程下的所有原理图页,类型为JSON数组
。
示例如下:
{
"editorVersion": "6.3.0", // 版本号
"docType": "5", // 文档类型
"title": "New Project", // 文档标题
"description": "", // 文档描述
"colors": {}, // 文档颜色配置(弃用)
"schematics": [
{
"docType": "1",
"title": "Sheet_1",
"description": "",
"dataStr": "{\"head\":{\"docType\":\"1\",\"editorVersion\":\"6.3.0\",\"newgId\":true,\"c_para\":{\"Prefix Start\":\"1\"},\"c_spiceCmd\":null},\"canvas\":\"CA~1000~1000~#FFFFFF~yes~#CCCCCC~5~1000~1000~line~5~pixel~5~0~0\",\"shape\":[\"LIB~0~-5~package`RES-ADJ-TH_3386P`BOM_Supplier Part``BOM_Supplier`LCSC`BOM_Manufacturer Part``nameAlias`Value`Contributor`LCEDA_Lib`BOM_value(Ω)`10K`spicePre`R`spiceSymbolName`R_3386P_US`~~0~gge348eb5222b2937f0~ce6e0cc9b0684cd986edbf86d7075dfd~e0b0d01b6e0d44dbab9db0ad79a427bc~0~~yes~yes#@$T~N~-9.15625~15.34375~0~#000080~Arial~~~~~comment~R_3386P_US~1~start~gge103~0~#@$T~P~-9.15625~7~0~#000080~Arial~~~~~comment~RP1~1~start~gge105~0~#@$P~show~0~2~0~-25~90~gge107~0^^0~-25^^M 0 -25 v 10~#880000^^0~3~-13~270~2~end~~~#0000FF^^0~-1~-20~270~2~start~~~#0000FF^^0~0~-18^^0~M -3 -15 L 0 -12 L 3 -15#@$E~11~-8~1~1~#A00000~1~0~none~gge114~0#@$PG~-2 -15 0 -11 2 -15~#880000~1~0~none~gge115~0#@$P~show~0~1~20~-5~0~gge116~0^^20~-5^^M 20 -5 h -10~#8D2323^^0~7~-2~0~1~end~~~#8D2323^^0~14~-6~0~1~start~~~#8D2323^^0~13~-5^^0~M 10 -8 L 7 -5 L 10 -2#@$P~show~0~3~-20~-5~180~gge123~0^^-20~-5^^M -20 -5 h 10~#8D2323^^0~-6~-2~0~3~start~~~#8D2323^^0~-14~-6~0~3~end~~~#8D2323^^0~-13~-5^^0~M -10 -2 L -7 -5 L -10 -8#@$PL~0 -15 0 -11~#880000~1~0~none~gge130~0#@$PL~9 -1 10 -5~#8D2323~1~0~none~gge131~0#@$PL~6 -9 9 -1~#8D2323~1~0~none~gge132~0#@$PL~4 -1 6 -9~#8D2323~1~0~none~gge133~0#@$PL~1 -9 4 -1~#8D2323~1~0~none~gge134~0#@$PL~-1 -1 1 -9~#8D2323~1~0~none~gge135~0#@$PL~-3 -9 -1 -1~#8D2323~1~0~none~gge136~0#@$PL~-6 -1 -3 -9~#8D2323~1~0~none~gge137~0#@$PL~-8 -9 -6 -1~#8D2323~1~0~none~gge138~0#@$PL~-10 -5 -8 -9~#8D2323~1~0~none~gge139~0\"],\"BBox\":{\"x\":-22,\"y\":-27,\"width\":70.4,\"height\":43.7},\"colors\":{}}"
},
{
"docType": "1",
"title": "Sheet_2",
"description": "",
"dataStr": "{\"head\":{\"docType\":\"1\",\"editorVersion\":\"6.3.0\",\"newgId\":true,\"c_para\":{\"Prefix Start\":\"1\"},\"c_spiceCmd\":null},\"canvas\":\"CA~1000~1000~#FFFFFF~yes~#CCCCCC~5~1000~1000~line~5~pixel~5~0~0\",\"shape\":[\"F~part_netLabel_netPort~15~0~0~gge78~~0^^15~0^^netPort1~#0000FF~-6.5~5~0~end~1~Times New Roman~8pt~gge80^^PL~15 0 10 5 -5 5 -5 -5 10 -5 15 0~#0000FF~1~0~transparent~gge82~0\"],\"BBox\":{\"x\":-44,\"y\":-5,\"width\":61,\"height\":12.7},\"colors\":{}}"
}
]
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
PCB文件格式
PCB不像原理图一样包含多页,所以PCB的文件格式和PCB库无结构上的差异。
示例:
{
"head": {
"docType": "3",
"editorVersion": "6.3.0",
"newgId": true,
"c_para": {},
"hasIdFlag": true
},
"canvas": "CA~1000~1000~#000000~yes~#FFFFFF~10~1000~1000~line~0.5~mil~1~45~~0.5~4087.5~3308.5~0~yes",
"shape": [
"TRACK~1~1~~4076.5 3290.5 4076.5 3296.5 4115.5 3335.5~gge5~0",
"PAD~ELLIPSE~4095~3304.5~6~6~11~~1~1.8~~0~gge6~0~~Y~0~~~4095,3304.5"
],
"layers": [
"1~TopLayer~#FF0000~true~true~true~",
"2~BottomLayer~#0000FF~true~false~true~",
"3~TopSilkLayer~#FFCC00~true~false~true~",
"4~BottomSilkLayer~#66CC33~true~false~true~",
"5~TopPasteMaskLayer~#808080~true~false~true~",
"6~BottomPasteMaskLayer~#800000~true~false~true~",
"7~TopSolderMaskLayer~#800080~true~false~true~0.3",
"8~BottomSolderMaskLayer~#AA00FF~true~false~true~0.3",
],
"objects": [
"All~true~false",
"Component~true~true",
"Prefix~true~true",
"Name~true~false",
"Track~true~true",
"Pad~true~true",
"Via~true~true",
"Hole~true~true",
"Copper_Area~true~true",
"Circle~true~true",
"Arc~true~true",
"Solid_Region~true~true",
"Text~true~true",
"Image~true~true",
"Rect~true~true",
"Dimension~true~true",
"Protractor~true~true"
],
"BBox": {
"x": 4076.5,
"y": 3290.5,
"width": 39,
"height": 45
},
"preference": {
"hideFootprints": "",
"hideNets": ""
},
"DRCRULE": {
"Default": {
"trackWidth": 1,
"clearance": 0.6,
"viaHoleDiameter": 2.4,
"viaHoleD": 1.2
},
"isRealtime": false,
"isDrcOnRoutingOrPlaceVia": false,
"checkObjectToCopperarea": true,
"showDRCRangeLine": true
},
"netColors": {}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
更新日志
暂无