通用格式
文档头
json
{ "type": "DOCHEAD" }||{ "docType": "PCB", "uuid": "UUID", "client": "clientID" }|1
json
{ "type": "DOCHEAD" }||{ "docType": "FOOTPRINT", "uuid": "UUID", "client": "clientID" }|1
- type:"DOCHEAD",文档头标识
- docType:文档类型,"PCB" PCB, "FOOTPRINT" 封装
- uuid:文档唯一编号,工程内唯一
- client:最终一致性的一个终端标识
CANVAS 画布配置
json
{ "type": "CANVAS", "ticket": 1 }||
{
"originX":0,
"originY":0,
"unit":"mm",
"gridXSize":10,
"gridYSize":10,
"snapXSize":1,
"snapYSize":1,
"altSnapXSize":0.1,
"altSnapYSize":0.1,
"gridType":1,
"multiGridType":0,
"multiGridRatio":5,
}|1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
- type 画布配置
CANVAS - ticket 逻辑时钟
- originX 画布原点 X
- originY 画布原点 Y
- unit 显示单位(不会影响格式里数据的单位)
- gridXSize 网格尺寸 X
- gridYSize 网格尺寸 Y
- snapXSize 栅格尺寸 X
- snapYSize 栅格尺寸 Y
- altSnapXSize Alt 栅格尺寸 X
- altSnapYSize Alt 栅格尺寸 Y
- gridType 网格类型:
0无1网格2网点 - multiGridType 加粗网格类型:
0无1网格2网点 - multiGridRatio 加粗网格倍数:number
LAYER 层配置
- 所有
SIGNALPLANESUBSTRATE出现的顺序隐含了它的物理堆叠顺序 - 所有
SIGNALPLANESUBSTRATE数量不受限制 - 格式不假设层编号与层维持稳定的关系,具体实现由工具决定
json
{ "type": "LAYER","id": 0, "ticket": 1 }||
{
"layerType":"TOP",
"layerName":"Top Layer",
"status":1,
"activeColor":"#FF0000",
"activateTransparency":0.5,
"inactiveColor":"#880000",
"inactiveTransparency":0.3,
}|1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
- type 层
LAYER - id 层编号:唯一
- ticket 逻辑时钟
- layerType 层类型
- layerName 层别名,需要唯一
- status 状态:
1使用2显示4锁定,可通过相加叠加状态,例如- 使用并显示 3 = 1 + 2
- 使用并锁定但不显示 5 = 1 + 4
- 使用并显示并锁定 7 = 1 + 2 + 4
- activeColor 激活颜色
- activateTransparency 激活透明度
- inactiveColor 非激活颜色
- inactiveTransparency 非激活透明度
json
["LAYER",2,"BOTTOM","Bottom Layer",1,"#0000ff",1,"#00007f",1]
["LAYER",3,"TOP_SILK","Top Silkscreen Layer",1,"#ffcc00",1,"#7f6600",1]
["LAYER",4,"BOT_SILK","Bottom Silkscreen Layer",1,"#66cc33",1,"#336619",1]
["LAYER",5,"TOP_SOLDER_MASK","Top Solder Mask Layer",1,"#800080",1,"#400040",1]
["LAYER",6,"BOT_SOLDER_MASK","Bottom Solder Mask Layer",1,"#aa00ff",1,"#55007f",1]
["LAYER",7,"TOP_PASTE_MASK","Top Paste Mask Layer",1,"#808080",1,"#404040",1]
["LAYER",8,"BOT_PASTE_MASK","Bottom Paste Mask Layer",1,"#800000",1,"#400000",1]
["LAYER",9,"TOP_ASSEMBLY","Top Assembly Layer",1,"#33cc99",1,"#19664c",1]
["LAYER",10,"BOT_ASSEMBLY","Bottom Assembly Layer",1,"#5555ff",1,"#2a2a7f",1]
["LAYER",11,"OUTLINE","Board Outline Layer",1,"#ff00ff",1,"#7f007f",1]
["LAYER",12,"MULTI","Multi-Layer",1,"#c0c0c0",1,"#606060",1]
["LAYER",13,"DOCUMENT","Document Layer",1,"#ffffff",1,"#7f7f7f",1]
["LAYER",14,"MECHANICAL","Mechanical Layer",1,"#f022f0",1,"#781178",1]
["LAYER",50,"SUBSTRATE","Dialectric1",3,"#999966",1,"#4c4c33",1]
["LAYER",15,"SIGNAL","Inner1",3,"#999966",1,"#4c4c33",1]
["LAYER",52,"SUBSTRATE","Dialectric3",3,"#999966",1,"#4c4c33",1]
["LAYER",51,"SUBSTRATE","Dialectric2",3,"#999966",1,"#4c4c33",1]
["LAYER",17,"SIGNAL","Inner2",3,"#008000",1,"#004000",1]
["LAYER",58,"SUBSTRATE","Dialectric9",3,"#999966",1,"#4c4c33",1]
["LAYER",16,"SIGNAL","Inner3",3,"#00ff00",1,"#007f00",1]
["LAYER",53,"SUBSTRATE","Dialectric4",3,"#999966",1,"#4c4c33",1]
["LAYER",47,"HOLE","Hole Layer",1,"#222222",1,"#111111",1]
["LAYER",48,"SHELL","3D Shell Layer",1,"#222222",1,"#111111",1]
["LAYER",49,"TOP_SHELL","Top 3D Shell Layer",1,"#222222",1,"#111111",1]
["LAYER",50,"BOT_SHELL","Bottom 3D Shell Layer",1,"#222222",1,"#111111",1]1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
LAYER_PHYS 层物理特性配置
json
{ "type": "LAYER_PHYS","id": 0, "ticket": 1 }||
{
"material":"COPPER",
"thickness":1,
"permittivity":0,
"lossTangent":0,
"isKeepIsland":0,
}|1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
- type 层物理特性
LAYER_PHYS - id 层编号
- ticket 逻辑时钟
- material 层材质
- thickness 厚度
- permittivity 介电常数
- lossTangent 损耗切线
- isKeepIsland 内电层是否保留孤岛
json
{ "type": "LAYER_PHYS","id": 2, "ticket": 1 }||
{
"material":"COPPER",
"thickness":1,
"permittivity":0,
"lossTangent":0,
"isKeepIsland":0,
}|1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
json
{ "type": "LAYER_PHYS","id": 15, "ticket": 1 }||
{
"material":"COPPER",
"thickness":1,
"permittivity":0,
"lossTangent":0,
"isKeepIsland":1,
}|1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
json
{ "type": "LAYER_PHYS","id": 50, "ticket": 1 }||
{
"material":"COPPER",
"thickness":10,
"permittivity":4.5,
"lossTangent":0.02,
"isKeepIsland":0,
}|1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
ACTIVE_LAYER 配置当前激活层
json
{ "type": "ACTIVE_LAYER", "ticket": 1 }||
{
"layerId":0,
}|1
2
3
4
2
3
4
- type 当前激活层
ACTIVE_LAYER - ticket 逻辑时钟
- layerId 层序号
SILK_OPTS 丝印配置
丝印配置目前主要用于彩色丝印工艺
json
{ "type": "SILK_OPTS","id": 3, "ticket": 1 }||
{
"defaultColor":"#ffffff",
"baseColor":"#000000",
}|1
2
3
4
5
2
3
4
5
- type 丝印配置:SILK_OPTS
- id 层编号,层:只有 顶层丝印 与 底层丝印
- ticket 逻辑时钟
- defaultColor 默认颜色
- baseColor 底色
json
{ "type": "SILK_OPTS","id": 4, "ticket": 1 }||
{
"defaultColor":"#020202",
"baseColor":"#aaaaaa",
}|1
2
3
4
5
2
3
4
5
PREFERENCE 偏好
json
{ "type": "PREFERENCE", "ticket": 1 }||
{
"startTrackWidthFollowLast":0,
"lastTrackWidth":10,
"startViaSizeFollowLast":0,
"lastViaInnerDiameter":39.37,
"lastViaDiameter":78.74,
"snap":1,
"routingMode":2,
"routingCorner":"L45",
"removeLoop":1,
"rotatingObject":0,
"trackFollow":0,
"stretchTrackMinCorner":1,
"preferenceConfig":null,
"realTimeUpdateUnusedLayers":0,
"unusedPadRange":3,
"pushVia":"OPTIMIZA_OPEN",
"pathOptimization4BePushed":0,
"currentPathOptimization4BePushed":"OPTIMIZA_WEAK",
"removeCircuitsContainingVias":1,
"removeAntenna":1,
}|1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
- type 偏好
PREFERENCE - ticket 逻辑时钟
- startTrackWidthFollowLast 起始布线是否跟随上次设置
- lastTrackWidth 上次布线宽度
- startViaSizeFollowLast 起始打孔尺寸是否跟随上次设置
- lastViaInnerDiameter 上次打孔内径
- lastViaDiameter 上次打孔外径
- snap 是否自动吸附
- routingMode 布线模式:
0无1推挤2环绕3阻挡 - routingCorner 布线拐角模式
"L45"线条 45 度"L90"线条 90 度"R45"圆弧 45 度"R90"圆弧 90 度"L"线条自由角度"R"圆弧自由角度
- removeLoop 布线是否自动移除回路
- rotatingObject 是否单对象旋转
- trackFollow 导线是否跟随封装移动
- stretchTrackMinCorner 拉伸导线最小拐角比率(比线宽)
- preferenceConfig 层堆叠偏好来源
- realTimeUpdateUnusedLayers 是否自动移除未使用焊盘
- unusedPadRange 移除未使用焊盘的范围
- 全部
- 仅焊盘
- 仅过孔
- pushVia 推挤过孔
- pathOptimization4BePushed 路径优化(单段/整段)
- currentPathOptimization4BePushed 当前导线路径优化
- removeCircuitsContainingVias 是否移除有过孔的回路
- removeAntenna 是否移除天线
ITEM_ORDER 图元顺序建议
提供给 PCB 图元顺序建议,PCB 可以依照这个信息安排图元顺序,这个信息只能出现一次
json
{ "type": "ITEM_ORDER", "ticket": 1 }||{ "ids":["e2", "e1"] }|1
- type 图元顺序建议:ITEM_ORDER
- ticket 逻辑时钟
- ids 图元编号:有两种编码形式
- 普通编号:形式为
/^[a-z]+\d+$/i,如e1e123等 - 封装实例编号:形式为
/^[a-z]+\d+[a-z]+\d+$/i,用于如封装中的丝印等,如e1e5e12e22等
- 普通编号:形式为
这里说明下为什么叫做 “建议”,因为比如 e1 是顶层图元,e2 是底层图元,那么
json
{ "type": "ITEM_ORDER", "ticket": 1 }||{ "ids":["e2", "e1"] }|1
默认依然是 e1 在上面,除非有什么特殊操作导致底层置顶了