Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Sign in / Register
Toggle navigation
S
Scott
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Locked Files
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Packages
Packages
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Scott Sun
Scott
Commits
c7a97443
Commit
c7a97443
authored
Jun 03, 2020
by
Scott Sun
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
sc
parent
bc2ed36d
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
143 additions
and
93 deletions
+143
-93
analysis_test.js
ats/scott_test/analysis_test.js
+72
-48
input_test.js
ats/scott_test/input_test.js
+24
-2
config_ats.js
config_ats.js
+47
-43
No files found.
ats/scott_test/analysis_test.js
View file @
c7a97443
...
...
@@ -158,6 +158,7 @@ try {
GEN
.
COM
(
"sel_change_atr,mode=add"
)
}
}
GEN
.
deleteLayer
({
job
:
job
,
layer
:[
tmp_layer
]})
}
}
})
...
...
@@ -249,7 +250,7 @@ try {
}
else
{
GEN
.
clearLayers
()
GEN
.
workLayer
({
name
:
drill
.
odb_name
,
display_number
:
2
,
clear_before
:
'yes'
})
GEN
.
selectByFilter
({
attribute
:[{
attribute
:
".drill"
,
option
:
"plated"
}]
,
profile
:
"in"
})
GEN
.
selectByFilter
({
attribute
:[{
attribute
:
".drill"
,
option
:
"plated"
}]})
if
(
GEN
.
getSelectCount
()
>
0
){
GEN
.
selClearFeature
()
drill_info
.
drl_type
=
"PTH"
...
...
@@ -263,8 +264,16 @@ try {
drill_info
.
drl_filler
=
drl_filler
drill_info
.
drl_zones
=
"{A}"
cam_drill_structure
.
push
(
drill_info
)
// save_stack_info({info:drill_info})
})
var
is_via_filling
=
cam_drill_structure
.
filter
(
function
(
v
){
return
v
.
drl_filler
==
"Via Filling"
})
if
(
is_via_filling
.
length
>
0
){
cam_drill_structure
=
cam_drill_structure
.
map
(
function
(
item
){
if
(
item
.
drl_type
==
"Laser"
&&
item
.
drl_filler
==
"None"
){
item
.
drl_filler
=
"Via Filling"
}
return
item
})
}
save_job_info
({
jobid
:
JobId
,
jobinfohash
:
{
cam_drill_structure
:
JSON
.
stringify
(
cam_drill_structure
)}
...
...
@@ -456,7 +465,8 @@ try {
if
(
pcs_steps
.
length
>
0
){
pcs_steps
.
forEach
(
function
(
step
){
if
(
!
GEN
.
isLayerEmpty
({
job
:
job
,
step
:
step
,
layer
:
layer
})){
var
tool
=
GEN
.
getTool
({
job
:
job
,
step
:
step
,
layer
:
layer
,
units
:
"mm"
});
GEN
.
COM
(
"tools_set,layer="
+
layer
+
",slots=by_length"
)
var
tool
=
GEN
.
getTool
({
job
:
job
,
step
:
step
,
layer
:
layer
,
units
:
"mm"
,});
if
(
drill_tool_info
[
layer
]){
Object
.
keys
(
tool
).
forEach
(
function
(
hashkey
){
if
(
drill_tool_info
[
layer
][
hashkey
]){
...
...
@@ -476,23 +486,25 @@ try {
}
if
(
arr_steps
.
length
>
0
){
arr_steps
.
forEach
(
function
(
step
){
if
(
!
GEN
.
isLayerEmpty
({
job
:
job
,
step
:
step
,
layer
:
layer
})){
var
tool
=
GEN
.
getTool
({
job
:
job
,
step
:
step
,
layer
:
layer
,
units
:
"mm"
});
if
(
drill_tool_info
[
layer
]){
Object
.
keys
(
tool
).
forEach
(
function
(
hashkey
){
if
(
drill_tool_info
[
layer
][
hashkey
]){
if
(
!
drill_tool_info
[
layer
][
hashkey
].
array_count
){
drill_tool_info
[
layer
][
hashkey
].
array_count
=
0
}
drill_tool_info
[
layer
][
hashkey
].
array_count
+=
Number
(
tool
[
hashkey
].
count
)
;
}
})
}
else
{
drill_tool_info
[
layer
]
=
tool
;
Object
.
keys
(
tool
).
forEach
(
function
(
hashkey
){
if
(
!
drill_tool_info
[
layer
][
hashkey
].
array_count
){
drill_tool_info
[
layer
][
hashkey
].
array_count
=
0
}
drill_tool_info
[
layer
][
hashkey
].
array_count
+=
Number
(
tool
[
hashkey
].
count
)
;
})
}
}
if
(
GEN
.
isStepExists
({
job
:
job
,
step
:
step
})){
if
(
!
GEN
.
isLayerEmpty
({
job
:
job
,
step
:
step
,
layer
:
layer
})){
var
tool
=
GEN
.
getTool
({
job
:
job
,
step
:
step
,
layer
:
layer
,
units
:
"mm"
});
if
(
drill_tool_info
[
layer
]){
Object
.
keys
(
tool
).
forEach
(
function
(
hashkey
){
if
(
drill_tool_info
[
layer
][
hashkey
]){
if
(
!
drill_tool_info
[
layer
][
hashkey
].
array_count
){
drill_tool_info
[
layer
][
hashkey
].
array_count
=
0
}
drill_tool_info
[
layer
][
hashkey
].
array_count
+=
Number
(
tool
[
hashkey
].
count
)
;
}
})
}
else
{
drill_tool_info
[
layer
]
=
tool
;
Object
.
keys
(
tool
).
forEach
(
function
(
hashkey
){
if
(
!
drill_tool_info
[
layer
][
hashkey
].
array_count
){
drill_tool_info
[
layer
][
hashkey
].
array_count
=
0
}
drill_tool_info
[
layer
][
hashkey
].
array_count
+=
Number
(
tool
[
hashkey
].
count
)
;
})
}
}
}
})
}
})
...
...
@@ -503,6 +515,7 @@ try {
where
:{
job_id
:
JobId
}
})
});
var
seq_index
=
1
;
Object
.
keys
(
drill_tool_info
).
forEach
(
function
(
layer
){
var
datalist
=
[]
...
...
@@ -557,6 +570,7 @@ try {
})
console
.
log
(
"=============================> 6 set smd bga"
)
var
allStep
=
GEN
.
getStepList
({
job
:
job
})
allStep
.
forEach
(
function
(
step
){
GEN
.
openStep
({
job
:
job
,
name
:
step
})
...
...
@@ -615,7 +629,6 @@ try {
})
GEN
.
closeStep
()
})
// GEN.createChklist()
console
.
log
(
"============= ===============> 6 analysis smd"
)
// smd
...
...
@@ -630,7 +643,6 @@ try {
console
.
log
(
"===================================> 7 bga info"
)
var
bgaInfo
;
bgaInfo
=
bgaAnalysis
({
job
:
job
,
steplist
:[
pcs_step
],
layers
:
analysis_obj
.
matrixInfo
.
mOuters
,
attr
:
".bga"
})
console
.
log
(
"========================bgaInfo:"
+
_
.
toString
(
bgaInfo
));
// 保存
console
.
log
(
"============== =====================> 8 save bga smd info"
)
...
...
@@ -688,8 +700,6 @@ try {
GEN
.
closeStep
()
}
})
var
info
=
{
min_line_width
:
[
"line"
,
"user_nor_line"
],
min_line_spacing
:
[
"l2l"
],
...
...
@@ -1415,7 +1425,7 @@ function analysis(props){
GEN
.
closeStep
()
return
res
}
T_m_p
.
prototype
.
analysis_vc_src_EDGE_PLATING
=
function
(
props
){
// ? 检查线路外形是否存在物件,存在则存yes
T_m_p
.
prototype
.
analysis_vc_src_EDGE_PLATING
=
function
(
props
){
var
res
=
"no"
var
rout
=
this
.
matrixInfo
.
matrixVal
.
filter
(
function
(
v
){
return
v
.
layer_type
==
"rout"
})
// 找rout层
if
(
rout
.
length
==
0
){
...
...
@@ -1986,19 +1996,24 @@ function all_bga_min_pitch_anal(props){ // 分析所有bga中间距最小的
GEN
.
workLayer
({
name
:
tmp_layer
,
display_number
:
1
,
clear_before
:
'yes'
});
// 获取最小bga间距
var
features
=
GEN
.
getFeatures
({
job
:
job
,
step
:
step
,
layer
:
tmp_layer
})
var
tmp
=
features
.
map
(
function
(
v
){
var
num
=
Math
.
sqrt
((
v
.
xe
-
v
.
xs
)
*
(
v
.
xe
-
v
.
xs
)
+
(
v
.
ye
-
v
.
ys
)
*
(
v
.
ye
-
v
.
ys
))
*
1000
return
{
num
:
num
.
toFixed
(
4
),
symbol
:
v
.
symbol
}
})
var
bga_min_pitch
=
tmp
.
sort
(
function
(
a
,
b
){
return
a
-
b
})[
0
]
res
.
bga_min_pitch
=
bga_min_pitch
.
num
if
(
features
&&
features
.
length
){
var
tmp
=
features
.
map
(
function
(
v
){
var
num
=
Math
.
sqrt
((
v
.
xe
-
v
.
xs
)
*
(
v
.
xe
-
v
.
xs
)
+
(
v
.
ye
-
v
.
ys
)
*
(
v
.
ye
-
v
.
ys
))
*
1000
return
{
num
:
num
.
toFixed
(
4
),
symbol
:
v
.
symbol
}
})
var
bga_min_pitch
=
tmp
.
sort
(
function
(
a
,
b
){
return
a
-
b
})[
0
]
res
.
bga_min_pitch
=
bga_min_pitch
.
num
// pitch 中选最小的
GEN
.
selClearFeature
()
GEN
.
COM
(
"filter_set,filter_name=popup,update_popup=no,profile=in"
)
GEN
.
COM
(
"filter_set,filter_name=popup,update_popup=yes,slot=line,slot_by=length,min_len=0,max_len="
+
(
bga_min_pitch
.
num
/
1000
)
+
0.0002
)
GEN
.
COM
(
"filter_area_strt"
)
GEN
.
COM
(
"filter_area_end,layer=,filter_name=popup,operation=select,area_type=none,inside_area=no,intersect_area=no"
)
GEN
.
COM
(
"filter_reset,filter_name=popup"
)
}
// 所有BGA中间距最小的PAD大小
GEN
.
selClearFeature
()
GEN
.
selectByFilter
({
include_syms
:
bga_min_pitch
.
symbol
})
var
min_pitch_layer
=
tmp_layer
+
"_min"
selCopyLayer
({
job
:
job
,
layer
:
min_pitch_layer
})
GEN
.
workLayer
({
name
:
layer
,
display_number
:
1
,
clear_before
:
'yes'
});
GEN
.
selClearFeature
()
GEN
.
selRefFeat
({
layers
:
min_pitch_layer
,
use
:
'filter'
,
mode
:
'touch'
})
...
...
@@ -2007,8 +2022,12 @@ function all_bga_min_pitch_anal(props){ // 分析所有bga中间距最小的
GEN
.
workLayer
({
name
:
min_pad_layer
,
display_number
:
1
,
clear_before
:
'yes'
});
var
min_pad_symbols
=
GEN
.
getLayerSymsHist
({
job
:
job
,
layer
:
min_pad_layer
,
step
:
step
})
var
min_pad_symbol
=
_
.
values
(
min_pad_symbols
).
sort
(
function
(
a
,
b
){
return
Number
(
a
.
size
)
-
Number
(
b
.
size
)})[
0
]
// 删除非最小的
GEN
.
selectByFilter
({
include_syms
:
min_pad_symbol
.
symbol
})
GEN
.
selReverse
()
if
(
GEN
.
getSelectCount
()
>
0
){
GEN
.
selDelete
()}
res
.
bga_min_pitch_pad_size
=
min_pad_symbol
.
size
res
.
bga_min_pitch
=
res
.
bga_min_pitch
-
0
+
(
min_pad_symbol
.
size
-
0
)
res
.
bga_min_pitch
=
(
res
.
bga_min_pitch
||
20
)
-
0
+
(
min_pad_symbol
.
size
-
0
)
if
(
solder_layer
){
// 最小pitch开窗大小
GEN
.
workLayer
({
name
:
solder_layer
,
display_number
:
1
,
clear_before
:
'yes'
});
...
...
@@ -2120,34 +2139,39 @@ function bgaPitch(props){
GEN
.
COM
(
"chklist_create_lyrs,chklist="
+
ck
+
",severity=3,suffix=pitch"
);
GEN
.
workLayer
({
name
:
tmp_layer2
,
display_number
:
1
,
clear_before
:
'yes'
});
GEN
.
selectByFilter
({
attribute
:[{
attribute
:
".string"
,
text
:
"p2p"
}]})
GEN
.
saveJob
({
job
:
job
})
var
tmp_layer
=
tmp_layer2
+
"_tmp"
selCopyLayer
({
job
:
job
,
layer
:
tmp_layer
})
GEN
.
workLayer
({
name
:
tmp_layer
,
display_number
:
1
,
clear_before
:
'yes'
});
// var symbollists = GEN.getLayerSymsHist({job:job,step:step,layer:tmp_layer})
// var sys = Object.keys(symbollists)
// if(sys.length > 1){
// sys = sys.sort(function(a,b){return symbollists[a].size - symbollists[b].size})
// // todo 如何找到线距离最小的pad 删除其他的
// }
var
features
=
GEN
.
getFeatures
({
job
:
job
,
step
:
step
,
layer
:
tmp_layer
})
var
res
if
(
features
&&
features
.
length
){
var
tmp
=
features
.
map
(
function
(
v
){
var
num
=
Math
.
sqrt
((
v
.
xe
-
v
.
xs
)
*
(
v
.
xe
-
v
.
xs
)
+
(
v
.
ye
-
v
.
ys
)
*
(
v
.
ye
-
v
.
ys
))
*
1000
return
num
.
toFixed
(
4
)
})
var
res
=
tmp
.
sort
(
function
(
a
,
b
){
return
a
-
b
})[
0
]
return
res
res
=
tmp
.
sort
(
function
(
a
,
b
){
return
a
-
b
})[
0
]
}
if
(
res
)
{
// 过滤掉pitch不是最小的线
GEN
.
COM
(
"filter_set,filter_name=popup,update_popup=no,profile=in"
)
GEN
.
COM
(
"filter_set,filter_name=popup,update_popup=yes,slot=line,slot_by=length,min_len=0,max_len="
+
(
res
/
1000
)
+
0.0002
)
GEN
.
COM
(
"filter_area_strt"
)
GEN
.
COM
(
"filter_area_end,layer=,filter_name=popup,operation=select,area_type=none,inside_area=no,intersect_area=no"
)
GEN
.
COM
(
"filter_reset,filter_name=popup"
)
GEN
.
selReverse
()
if
(
GEN
.
getSelectCount
()
>
0
){
GEN
.
selDelete
()}
GEN
.
workLayer
({
name
:
layer
,
display_number
:
1
,
clear_before
:
'yes'
});
GEN
.
selRefFeat
({
layers
:
tmp_layer
,
use
:
'filter'
,
mode
:
'touch'
})
GEN
.
selReverse
()
if
(
GEN
.
getSelectCount
()
>
0
){
GEN
.
selDelete
()}
}
GEN
.
deleteLayer
({
job
:
job
,
layer
:
tmp_layer
})
GEN
.
deleteLayer
({
job
:
job
,
layer
:
tmp_layer1
})
GEN
.
deleteLayer
({
job
:
job
,
layer
:
tmp_layer2
})
// 矩阵
return
res
||
20.1
}
function
myFixed
(
str
,
num
)
{
if
(
/^
[
1-9
][
0-9
]
*
([
.
][
0-9
]
+
)?
$/
.
test
(
str
)){
return
Number
(
str
).
toFixed
(
num
)
...
...
ats/scott_test/input_test.js
View file @
c7a97443
...
...
@@ -130,12 +130,18 @@ try {
if
(
!
fs
.
exists
(
path
)){
throw
"path error"
}
var
pathInfo
=
fs
.
listDir
(
path
+
"/"
+
db_customer
.
toLowerCase
(),
1
)
// 判断存不存在料号文件
// var vc_position = db.query("",function(q){
// return q.selectValue({
// table:'pdm_job',
// field:'version',
// where:{id : JobId}
// })
// });
var
job_file_baseName
=
job
// if(vc_position && vc_position != "" && !(/null/ig.test(vc_position))){
// job_file_baseName = job_file_baseName + "_" + vc_position
// }
var
jobFile
=
pathInfo
.
filter
(
function
(
v
){
return
v
.
baseName
.
toLowerCase
()
==
job_file_baseName
})
if
(
jobFile
.
length
==
0
){
throw
"job file is not exist"
}
var
jobFiles
=
[]
// 记录要分析的文件
if
(
!
jobFile
[
0
].
isDir
)
{
...
...
@@ -143,13 +149,17 @@ try {
}
else
{
jobFiles
=
fs
.
listDir
(
jobFile
[
0
].
path
)
}
GEN
.
COM
(
"config_edit,name=iol_gbr_polygon_break,value=1,mode=user"
)
GEN
.
COM
(
"config_edit,name=iol_fix_ill_polygon,value=yes,mode=user"
)
// 分析料号文件 得到料号导入信息 导入类型
var
jobInfo
=
analyJobFiles
({
jobFiles
:
jobFiles
.
filter
(
function
(
v
){
return
v
.
isFile
}),
custCfg
:
custCfg
,
config
:
config
,
job
:
job
})
if
(
jobInfo
.
data
.
length
==
0
){
throw
"file error"
}
var
importOk
=
false
;
// 是否成功导入
if
(
/odb/ig
.
test
(
jobInfo
.
type
)){
// odb导入
fs
.
writeFile
(
"./tmp.js"
,
_
.
toString
(
jobInfo
.
data
))
if
(
jobInfo
.
data
.
length
==
1
){
// 只分析到一个tgz文件 直接导入
console
.
log
(
"========= import one ====>path:"
+
_
.
toString
(
jobInfo
.
data
))
// ? tmp
resultData
.
push
(
{
type
:
"info"
,
title
:
"读取"
+
jobInfo
.
data
[
0
].
file
.
name
,
detail
:
[{
desc
:
_
.
toString
({
format
:
"odb++"
,
date
:
now
(),
user
:
$
.
user_name
})}]})
var
err
=
importJob
({
name
:
job
,
db
:
custCfg
.
db
,
path
:
jobInfo
.
data
[
0
].
file
.
path
},
config
.
delSameJob
)
if
(
err
){
throw
err
}
}
else
{
// 多个tgz文件 说明需要合并
...
...
@@ -158,6 +168,8 @@ try {
var
path
=
item
.
file
.
path
var
tmp_job_name
=
job
+
"_tmp_"
+
i
var
err
=
importJob
({
name
:
tmp_job_name
,
db
:
custCfg
.
db
,
path
:
path
},
config
.
delSameJob
)
resultData
.
push
(
{
type
:
"info"
,
title
:
"读取"
+
item
.
file
.
name
,
detail
:
[{
desc
:
_
.
toString
({
format
:
"odb++"
,
date
:
now
(),
user
:
$
.
user_name
})}]})
if
(
err
){
throw
err
}
return
{
name
:
tmp_job_name
,
...
...
@@ -230,6 +242,8 @@ try {
})
GEN
.
COM
(
"input_manual_reset"
)
gerberInfo
.
forEach
(
function
(
v
){
resultData
.
push
(
{
type
:
"info"
,
title
:
"读取"
+
v
.
layer
,
detail
:
[{
desc
:
_
.
toString
({
format
:
v
.
format
,
date
:
now
(),
user
:
$
.
user_name
})}]})
GEN
.
COM
(
"input_manual_set"
,
v
)
})
GEN
.
COM
(
"input_manual"
)
...
...
@@ -379,3 +393,11 @@ function getStepType(step){
}
return
pcs
}
function
now
(){
var
date
=
new
Date
()
var
time
=
_
.
toString
(
date
)
res1
=
/
\d{4}
-
\d{2}
-
\d{2}
/
.
exec
(
time
)
res2
=
/
\d{2}
:
\d{2}
:
\d{2}
/
.
exec
(
time
)
return
res1
+
" "
+
res2
}
\ No newline at end of file
config_ats.js
View file @
c7a97443
...
...
@@ -187,8 +187,8 @@
"text_line_width"
:
0.0024
},
"Excellon2_5"
:
{
"nf1"
:
3
,
"nf2"
:
2
,
"nf1"
:
2
,
"nf2"
:
3
,
"units"
:
"mm"
,
"zeroes"
:
"leading"
,
"decimal"
:
"no"
,
...
...
@@ -207,7 +207,7 @@
"text_line_width"
:
0.0024
},
"Excellon2_6"
:
{
"nf1"
:
2
,
"nf1"
:
3
,
"nf2"
:
4
,
"units"
:
"mm"
,
"zeroes"
:
"leading"
,
...
...
@@ -525,16 +525,16 @@
}
],
"tl_name"
:
[
{
"orig_name"
:
[
"assytop.art"
,
"past_top"
],
"tl_name"
:
"past_top"
},
{
"orig_name"
:
[
"assybot.art"
,
"past_botm"
],
"tl_name"
:
"past_botm"
},
{
"orig_name"
:
[
"pleg.art"
,
"^ss_top"
,
"silk_top"
],
"tl_name"
:
"silk_top"
},
{
"orig_name"
:
[
"sleg.art"
,
"^ss_bot"
,
"silk_bot"
],
"tl_name"
:
"silk_bot"
},
{
"orig_name"
:
[
"ssm.art"
,
"sm_top"
],
"tl_name"
:
"sm_top"
},
{
"orig_name"
:
[
"psm.art"
,
"sm_bot"
],
"tl_name"
:
"sm_botm"
},
{
"orig_name"
:
[
"assytop
\\
.art"
,
"past_top"
],
"tl_name"
:
"past_top"
},
{
"orig_name"
:
[
"assybot
\\
.art"
,
"past_botm"
],
"tl_name"
:
"past_botm"
},
{
"orig_name"
:
[
"pleg
\\
.art"
,
"^ss_top"
,
"silk_top"
],
"tl_name"
:
"silk_top"
},
{
"orig_name"
:
[
"sleg
\\
.art"
,
"^ss_bot"
,
"silk_bot"
],
"tl_name"
:
"silk_bot"
},
{
"orig_name"
:
[
"ssm
\\
.art"
,
"sm_top"
],
"tl_name"
:
"sm_top"
},
{
"orig_name"
:
[
"psm
\\
.art"
,
"sm_bot"
],
"tl_name"
:
"sm_botm"
},
{
"orig_name"
:
[
"^top$"
,
"^top.art$"
],
"tl_name"
:
"top"
},
{
"orig_name"
:
[
"^0(
\\
d+).*ccp_ms"
,
"^s(
\\
d+)
\
.art"
,
"lay(
\\
d+)
\\
.art"
,
"layer_(
\\
d+)"
],
"tl_name"
:
"l_($1)"
},
{
"orig_name"
:
[
"^bottom$"
,
"^bottom.art$"
],
"tl_name"
:
"bottom"
},
{
"orig_name"
:
[
"-(
\\
d+)-(
\\
d+)
\
.drl$"
,
"(
\\
d+)-(
\\
d+)-laser
\
.drl$"
,
"d(
\\
d+)-(
\\
d+)"
],
"tl_name"
:
"d_($1)-($2)"
},
{
"orig_name"
:
[
"^0(
\\
d+).*ccp_ms"
,
"^s(
\\
d+)
\
\
.art"
,
"lay(
\\
d+)
\\
.art"
,
"layer_(
\\
d+)"
],
"tl_name"
:
"l_($1)"
},
{
"orig_name"
:
[
"^bottom$"
,
"^bottom
\\
.art$"
],
"tl_name"
:
"bottom"
},
{
"orig_name"
:
[
"-(
\\
d+)-(
\\
d+)
\
\
.drl$"
,
"(
\\
d+)-(
\\
d+)-laser
\
\
.drl$"
,
"d(
\\
d+)-(
\\
d+)"
],
"tl_name"
:
"d_($1)-($2)"
},
{
"orig_name"
:
[
"
\\
.rou$"
,
"^rout$"
],
"tl_name"
:
"rout"
},
{
"orig_name"
:
"fab.art"
,
"tl_name"
:
"fab.art"
},
{
"orig_name"
:
[
"multipack.art"
,
"^array$"
],
"tl_name"
:
"array"
},
...
...
@@ -647,16 +647,16 @@
],
"tl_name"
:
[
{
"orig_name"
:
[
"pasttop.art"
,
"^past_top$"
,
"top_solderpaste"
],
"tl_name"
:
"past_top"
},
{
"orig_name"
:
[
"^silk_top
\\
.art$"
,
"pleg.art"
,
"^silk_top$"
,
"top_silkscreen"
],
"tl_name"
:
"silk_top"
},
{
"orig_name"
:
[
"^silk_top
\\
.art$"
,
"pleg
\\
.art"
,
"^silk_top$"
,
"top_silkscreen"
],
"tl_name"
:
"silk_top"
},
{
"orig_name"
:
[
"_r1
\\
.phd$"
,
"_r1
\\
.fph$"
,
"^smt
\\
.art$"
,
"soldtop.art"
,
"^sm_top$"
,
"top_soldermask"
],
"tl_name"
:
"sm_top"
},
{
"orig_name"
:
[
"^top.art$"
,
"^top$"
],
"tl_name"
:
"top"
},
{
"orig_name"
:
[
"^top
\\
.art$"
,
"^top$"
],
"tl_name"
:
"top"
},
{
"orig_name"
:
[
"_l(
\\
d+)
\\
.phd$"
,
"_l(
\\
d+)
\\
.fph$"
,
"^in_(
\\
d+)
\\
.art$"
,
"^l(
\\
d+)
\\
.art$"
,
"inner_(
\\
d+)
\\
.art"
,
"layer_(
\\
d+)"
],
"tl_name"
:
"l_($1)"
},
{
"orig_name"
:
[
"^bot
.art$"
,
"^bottom
.art"
,
"^bottom$"
],
"tl_name"
:
"bottom"
},
{
"orig_name"
:
[
"^bot
\\
.art$"
,
"^bottom
\\
.art"
,
"^bottom$"
],
"tl_name"
:
"bottom"
},
{
"orig_name"
:
[
"_r
\\
d
\\
.phd$"
,
"_r
\\
d
\\
.fph$"
,
"^smb
\\
.art$"
,
"soldbotm.art"
,
"^sm_botm$"
,
"bot_soldermask"
],
"tl_name"
:
"sm_botm"
},
{
"orig_name"
:
[
"^silk_bottom
\\
.art$"
,
"sleg.art"
,
"^silk_bot$"
,
"bot_silkscreen"
],
"tl_name"
:
"silk_bot"
},
{
"orig_name"
:
[
"pastbotm.art"
,
"^past_botm$"
,
"bot_solderpaste"
],
"tl_name"
:
"past_botm"
},
{
"orig_name"
:
[
"^silk_bottom
\\
.art$"
,
"sleg
\\
.art"
,
"^silk_bot$"
,
"bot_silkscreen"
],
"tl_name"
:
"silk_bot"
},
{
"orig_name"
:
[
"pastbotm
\\
.art"
,
"^past_botm$"
,
"bot_solderpaste"
],
"tl_name"
:
"past_botm"
},
{
"orig_name"
:
[
"^nc_drill$"
,
"^drill$"
],
"tl_name"
:
"drill"
},
{
"orig_name"
:
"multipack.art"
,
"tl_name"
:
"array"
},
{
"orig_name"
:
"multipack
\\
.art"
,
"tl_name"
:
"array"
},
{
"orig_name"
:
[
"
\\
.rou$"
,
"^rout$"
],
"tl_name"
:
"rout"
},
{
"orig_name"
:
[
"outline.art"
,
"^outline$"
],
"tl_name"
:
"outline"
},
{
"orig_name"
:
[
"fab.art"
,
"fab"
],
"tl_name"
:
"fab"
},
...
...
@@ -802,22 +802,22 @@
}
],
"tl_name"
:
[
{
"orig_name"
:
[
"
SoldPasteTop
\
.ger"
,
"past_top"
],
"tl_name"
:
"past_top"
},
{
"orig_name"
:
[
"
SoldPasteBot
\
.ger"
,
"past_botm"
],
"tl_name"
:
"past_botm"
},
{
"orig_name"
:
[
"^s
mt
\
.art$"
,
"
\
.ssa$"
,
"SilkScrnTop
\
.ger"
,
"silk_top"
],
"tl_name"
:
"silk_top"
},
{
"orig_name"
:
[
"^s
mb
\
.art$"
,
"
\
.ssb$"
,
"SilkScrnBot
\
.ger"
,
"silk_bot"
],
"tl_name"
:
"silk_bot"
},
{
"orig_name"
:
[
"
\
.sma$"
,
"SoldMask1Top
\
.ger"
,
"sm_top"
],
"tl_name"
:
"sm_top"
},
{
"orig_name"
:
[
"
\
.smb$"
,
"SoldMask1Bot
\
.ger"
,
"sm_bot"
],
"tl_name"
:
"sm_botm"
},
{
"orig_name"
:
[
"
^pmt
\\
.art$"
,
"SoldPasteTop
\
\
.ger"
,
"past_top"
],
"tl_name"
:
"past_top"
},
{
"orig_name"
:
[
"
^pmb
\\
.art$"
,
"SoldPasteBot
\
\
.ger"
,
"past_botm"
],
"tl_name"
:
"past_botm"
},
{
"orig_name"
:
[
"^s
st
\\
.art$"
,
"
\\
.ssa$"
,
"SilkScrnTop
\
\
.ger"
,
"silk_top"
],
"tl_name"
:
"silk_top"
},
{
"orig_name"
:
[
"^s
sb
\\
.art$"
,
"
\\
.ssb$"
,
"SilkScrnBot
\
\
.ger"
,
"silk_bot"
],
"tl_name"
:
"silk_bot"
},
{
"orig_name"
:
[
"
^smt
\\
.art$"
,
"
\\
.sma$"
,
"SoldMask1Top
\
\
.ger"
,
"sm_top"
],
"tl_name"
:
"sm_top"
},
{
"orig_name"
:
[
"
^smb
\\
.art$"
,
"
\\
.smb$"
,
"SoldMask1Bot
\
\
.ger"
,
"sm_bot"
],
"tl_name"
:
"sm_botm"
},
{
"orig_name"
:
[
"^top$"
,
"^top.art$"
],
"tl_name"
:
"top"
},
{
"orig_name"
:
[
"^
s(
\\
d+)
\
.art$"
,
"
\
.l(
\\
d+)$"
,
"Copper(
\\
d+)
\
.ger$"
,
"^layer_(
\\
d+)"
],
"tl_name"
:
"l_($1)"
},
{
"orig_name"
:
[
"^bottom$"
,
"^bottom.art$"
],
"tl_name"
:
"bottom"
},
{
"orig_name"
:
[
"
\
.d(
\\
d+)$"
],
"tl_name"
:
"d_($1)-($1+1)"
},
{
"orig_name"
:
[
"ThruHolePlated_(
\\
d+)_(
\\
d+)
\
.ncd$"
,
"d(
\\
d+)-(
\\
d+)"
],
"tl_name"
:
"d_($1)-($2)"
},
{
"orig_name"
:
[
"ThruHoleNonPlated
\
.ncd$"
,
"^drill$"
],
"tl_name"
:
"drill"
},
{
"orig_name"
:
[
"^
g(
\\
d+)
\\
.art$"
,
"^s(
\\
d+)
\\
.art$"
,
"
\\
.l(
\\
d+)$"
,
"Copper(
\\
d+)
\
\
.ger$"
,
"^layer_(
\\
d+)"
],
"tl_name"
:
"l_($1)"
},
{
"orig_name"
:
[
"^bot
\\
.art$"
,
"^bot
tom$"
,
"^bottom.art$"
],
"tl_name"
:
"bottom"
},
{
"orig_name"
:
[
"
\
\
.d(
\\
d+)$"
],
"tl_name"
:
"d_($1)-($1+1)"
},
{
"orig_name"
:
[
"ThruHolePlated_(
\\
d+)_(
\\
d+)
\
\
.ncd$"
,
"d(
\\
d+)-(
\\
d+)"
],
"tl_name"
:
"d_($1)-($2)"
},
{
"orig_name"
:
[
"ThruHoleNonPlated
\
\
.ncd$"
,
"^drill$"
],
"tl_name"
:
"drill"
},
{
"orig_name"
:
[
"
\\
.rou$"
,
"^rout$"
],
"tl_name"
:
"rout"
},
{
"orig_name"
:
"fab.art"
,
"tl_name"
:
"fab.art"
},
{
"orig_name"
:
[
"multipack.art"
,
"^array$"
],
"tl_name"
:
"array"
},
{
"orig_name"
:
[
"
PnlContourNonPlated
\
.ger"
,
"^outline"
],
"tl_name"
:
"outline"
},
{
"orig_name"
:
[
"
\\
.bol$"
,
"PnlContourNonPlated
\
\
.ger"
,
"^outline"
],
"tl_name"
:
"outline"
},
{
"orig_name"
:
[
"top-enig"
,
"enig_top"
],
"tl_name"
:
"enig_top"
},
{
"orig_name"
:
[
"bot-enig"
,
"enig_bot"
],
"tl_name"
:
"enig_bot"
},
]
...
...
@@ -859,22 +859,24 @@
}
],
"tl_name"
:
[
{
"orig_name"
:
[
"
assytop.art
"
,
"past_top"
],
"tl_name"
:
"past_top"
},
{
"orig_name"
:
[
"
assybot.art
"
,
"past_botm"
],
"tl_name"
:
"past_botm"
},
{
"orig_name"
:
[
"pleg.art"
,
"^ss_top"
,
"silk_top"
],
"tl_name"
:
"silk_top"
},
{
"orig_name"
:
[
"sleg.art"
,
"^ss_bot"
,
"silk_bot"
],
"tl_name"
:
"silk_bot"
},
{
"orig_name"
:
[
"s
sm.art
"
,
"sm_top"
],
"tl_name"
:
"sm_top"
},
{
"orig_name"
:
[
"
psm.art
"
,
"sm_bot"
],
"tl_name"
:
"sm_botm"
},
{
"orig_name"
:
[
"^top$"
,
"
^top.art$
"
],
"tl_name"
:
"top"
},
{
"orig_name"
:
[
"
^0(
\\
d+).*ccp_ms"
,
"^s(
\\
d+)
\
.art"
,
"lay(
\\
d+)
\\
.art
"
,
"layer_(
\\
d+)"
],
"tl_name"
:
"l_($1)"
},
{
"orig_name"
:
[
"^bottom$"
,
"
^bottom.art$
"
],
"tl_name"
:
"bottom"
},
{
"orig_name"
:
[
"-(
\\
d+)-(
\\
d+)
\
.drl$"
,
"(
\\
d+)-(
\\
d+)-laser
\
.drl$"
,
"d(
\\
d+)-(
\\
d+)"
],
"tl_name"
:
"d_($1)-($2)"
},
{
"orig_name"
:
[
"
solderpastetop
"
,
"past_top"
],
"tl_name"
:
"past_top"
},
{
"orig_name"
:
[
"
solderpastebottom
"
,
"past_botm"
],
"tl_name"
:
"past_botm"
},
{
"orig_name"
:
[
"pleg
\\
.art"
,
"^ss_top"
,
"silk_top"
],
"tl_name"
:
"silk_top"
},
{
"orig_name"
:
[
"sleg
\\
.art"
,
"^ss_bot"
,
"silk_bot"
],
"tl_name"
:
"silk_bot"
},
{
"orig_name"
:
[
"s
oldermasktop
"
,
"sm_top"
],
"tl_name"
:
"sm_top"
},
{
"orig_name"
:
[
"
soldermaskbottom
"
,
"sm_bot"
],
"tl_name"
:
"sm_botm"
},
{
"orig_name"
:
[
"^top$"
,
"
layertop
"
],
"tl_name"
:
"top"
},
{
"orig_name"
:
[
"
layer(
\\
d+)
\\
.gdo
"
,
"layer_(
\\
d+)"
],
"tl_name"
:
"l_($1)"
},
{
"orig_name"
:
[
"^bottom$"
,
"
layerbottom
"
],
"tl_name"
:
"bottom"
},
{
"orig_name"
:
[
"-(
\\
d+)-(
\\
d+)
\
\
.drl$"
,
"(
\\
d+)-(
\\
d+)-laser
\
\
.drl$"
,
"d(
\\
d+)-(
\\
d+)"
],
"tl_name"
:
"d_($1)-($2)"
},
{
"orig_name"
:
[
"
\\
.rou$"
,
"^rout$"
],
"tl_name"
:
"rout"
},
{
"orig_name"
:
"fab.art"
,
"tl_name"
:
"fab.art"
},
{
"orig_name"
:
[
"
multipack.ar
t"
,
"^array$"
],
"tl_name"
:
"array"
},
{
"orig_name"
:
[
"
pcb-se
t"
,
"^array$"
],
"tl_name"
:
"array"
},
{
"orig_name"
:
[
"^outline"
],
"tl_name"
:
"outline"
},
{
"orig_name"
:
[
"top-enig"
,
"enig_top"
],
"tl_name"
:
"enig_top"
},
{
"orig_name"
:
[
"bot-enig"
,
"enig_bot"
],
"tl_name"
:
"enig_bot"
},
{
"orig_name"
:
[
"au_mask_bottom
\\
.gdo"
,
"enig_top"
],
"tl_name"
:
"enig_top"
},
{
"orig_name"
:
[
"au_mask_top
\\
.gdo"
,
"enig_bot"
],
"tl_name"
:
"enig_bot"
},
{
"orig_name"
:
[
"cavitytop"
,
"cavity_top"
],
"tl_name"
:
"cavity_top"
},
{
"orig_name"
:
[
"cavitybottom"
,
"cavity_bot"
],
"tl_name"
:
"cavity_bot"
},
]
}
},
...
...
@@ -895,6 +897,8 @@
{
"tl_name"
:
"rout"
,
"new_name"
:
"rout"
,
"attr"
:{
"context"
:
"board"
,
"type"
:
"rout"
}},
{
"tl_name"
:
"outline"
,
"new_name"
:
"outline"
,
"attr"
:{
"context"
:
"board"
,
"type"
:
"rout"
}},
{
"tl_name"
:
"array"
,
"new_name"
:
"array"
,
"attr"
:{
"context"
:
"misc"
}},
{
"tl_name"
:
"cavity_top"
,
"new_name"
:
"cavity_top"
,
"attr"
:{
"context"
:
"misc"
}},
{
"tl_name"
:
"cavity_bot"
,
"new_name"
:
"cavity_bot"
,
"attr"
:{
"context"
:
"misc"
}},
{
"tl_name"
:
"fab.art"
,
"new_name"
:
"fab.art"
,
"attr"
:{
"context"
:
"misc"
}}
],
"delSameJob"
:
"yes"
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment