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
62b678fa
Commit
62b678fa
authored
Jan 25, 2021
by
Scott Sun
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
s
parent
c52da11a
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
607 additions
and
1395 deletions
+607
-1395
test.js
GUI测试/test.js
+61
-21
ATS_AIM_customer_data_analysis.js
ats/topcam/ATS_AIM_customer_data_analysis.js
+294
-93
ATS_AIM_data_format.js
ats/topcam/ATS_AIM_data_format.js
+110
-70
ATS_AIM_data_input.js
ats/topcam/ATS_AIM_data_input.js
+74
-18
config_ats.js
ats/topcam/config_ats.js
+47
-45
config_ats.js
config_ats.js
+0
-1124
template.js
template.js
+21
-24
No files found.
GUI测试/test.js
View file @
62b678fa
var
plugin
=
require
(
'topsin.gengui'
);
var
gui
=
plugin
.
newGui
();
var
gui
=
plugin
.
newGui
(
plugin
.
__dirname
);
var
tmplayers
=
gui
.
selectLayer
({
title
:
'请选择需拼片原稿层'
,
// var tmplayers = gui.selectLayer({
// title: '请选择需拼片原稿层',
// layermatrix: {
// layer1: {
// context:"board",
// row: 1,
// name: "layer1",
// layer_type: "inner"
// },
// layer2: {
// context:"misc",
// row: 2,
// name: "layer2",
// layer_type: "outer"
// }
// },
// layertype: "_default",
// layertypelist: [{
// name: "_default",
// display_name: "_default",
// filter: function (x) {
// return true
// }
// }, ],
// selectmode: 'multiple',
// filter: ".*", // regular expression
// selectmode: "single", // single, multiple
// context: "all", // all, board, misc
// defaultsize: [600, 400], // window size
// gen:null
// });
// console.log(tmplayers);
r
=
gui
.
selectLayer
({
title
:
"+1s"
,
filter
:
".*"
,
// regular expression
selectmode
:
"single"
,
// single, multiple
// context: "all", // all, board, misc
// layertype: "inner", // default type of layertypelist
defaultsize
:
[
600
,
400
],
// window size
layermatrix
:
{
layer1
:
{
context
:
"board"
,
row
:
1
,
name
:
"layer1"
,
layer_type
:
"inner"
...
...
@@ -15,22 +59,18 @@ var tmplayers = gui.selectLayer({
row
:
2
,
name
:
"layer2"
,
layer_type
:
"outer"
},
layer3
:
{
context
:
"misc"
,
row
:
3
,
name
:
"layer3"
,
layer_type
:
"inner"
}
},
layertype
:
"_default"
,
layertypelist
:
[{
name
:
"_default"
,
display_name
:
"_default"
,
filter
:
function
(
x
)
{
return
true
}
},
],
selectmode
:
'multiple'
,
filter
:
".*"
,
// regular expression
selectmode
:
"single"
,
// single, multiple
context
:
"all"
,
// all, board, misc
defaultsize
:
[
600
,
400
],
// window size
gen
:
null
});
console
.
log
(
tmplayers
);
\ No newline at end of file
layertypelist
:
[
{
name
:
"inner"
,
display_name
:
"Inner"
,
filter
:
function
(
x
)
{
return
x
[
"layer_type"
]
===
"inner"
;
}},
{
name
:
"all"
,
display_name
:
"All"
,
filter
:
function
(
x
)
{
return
true
;
}},
{
name
:
"outer"
,
display_name
:
"Outer"
,
filter
:
function
(
x
)
{
return
x
[
"layer_type"
]
===
"outer"
;
}}
],
gen
:
null
});
\ No newline at end of file
ats/topcam/ATS_AIM_customer_data_analysis.js
View file @
62b678fa
...
...
@@ -9,6 +9,18 @@
type : 'LineEdit',
property : {tool_tip : 'pcs step名,默认是cad'}
},
{
name : 'send_email',
title : '是否发送邮件',
type : 'RadioBox',
property : {
item_list:[
{name:'yes',text:'YES'},
{name:'no',text:'NO'},
],
tool_tip:'是否自动保存料号开关'
}
},
{
name : 'cam_type',
title : 'cam_type',
...
...
@@ -191,7 +203,7 @@ try {
});
}
cam_workflow_info
=
"sendmail"
console
.
log
(
"=============================================>anaysis_start"
);
console
.
log
(
"==============
===============================>anaysis_start"
);
var
par
=
PAR
;
var
vc_src_01005_pad_result
=
par
.
vc_src_01005_pad_result
if
(
vc_src_01005_pad_result
==
""
){
...
...
@@ -692,8 +704,8 @@ try {
})
console
.
log
(
"=============================> 6 set smd bga"
)
script_info
({
msg
:
"SMD&BGA
analysis
"
})
global
.
_ERRORMAG
=
"Error-SMD&BGA
analysis
"
;
script_info
({
msg
:
"SMD&BGA
create
"
})
global
.
_ERRORMAG
=
"Error-SMD&BGA
create
"
;
script_info
({
progress
:
80
});
step_list
.
forEach
(
function
(
step
){
...
...
@@ -734,22 +746,26 @@ try {
var
oping_layer
=
layer
.
solderL
GEN
.
workLayer
({
name
:
layer
,
display_number
:
2
,
clear_before
:
'yes'
})
GEN
.
selClearFeature
()
var
symbols_tmp
=
GEN
.
getLayerSymsHist
({
job
:
job
,
step
:
step
,
layer
:
layer
})
var
syms
=
Object
.
keys
(
symbols_tmp
)
var
filter_syms
=
syms
.
filter
(
function
(
item
){
if
(
/^rect
(\d
+
\.\d
+|
\d
+
)
x
(\d
+
\.\d
+|
\d
+
)
/ig
.
test
(
item
)){
var
res
=
/^rect
(\d
+
\.\d
+|
\d
+
)
x
(\d
+
\.\d
+|
\d
+
)
/ig
.
exec
(
item
).
slice
(
1
)
var
num1
=
res
[
0
],
num2
=
res
[
1
]
if
(
num1
<
3
||
num2
<
3
){
return
true
}
}
return
/^r
\d
+/
.
test
(
item
)}
)
if
(
filter_syms
.
length
){
var
filter_syms
=
filter_syms
.
join
(
";"
)
GEN
.
selectByFilter
({
attribute
:
".smd"
,
include_syms
:
filter_syms
,
profile
:
"in"
})
if
(
GEN
.
getSelectCount
()
>
0
){
GEN
.
COM
(
"sel_delete_atr,attributes=.smd"
)
}
// var symbols_test = GEN.getLayerSymsHist({job:job,step:step,layer:layer},true);
// GEN.INFO({units:"mm", entity_type:'layer', entity_path:job+'/'+step+'/'+layer, data_type:'SYMS_HIST'});
// GEN.INFO_RESULT
// exportInfo({
// layer:layer,
// INFO_RESULT: GEN.INFO_RESULT
// })
// var symbols_tmp = GEN.getLayerSymsHist({job:job,step:step,layer:layer})
// var syms = Object.keys(symbols_tmp)
// var filter_syms = syms.filter(function(item){
// if(/^rect(\d+\.\d+|\d+)x(\d+\.\d+|\d+)/ig.test(item)){
// var res = /^rect(\d+\.\d+|\d+)x(\d+\.\d+|\d+)/ig.exec(item).slice(1)
// var num1 = res[0], num2 = res[1]
// if(num1<3 || num2<3){return true}
// }
// return /^r\d+/.test(item)}
// )
GEN
.
selectByFilter
({
attribute
:
".smd"
,
include_syms
:
"r*"
,
exclude_syms
:
"rect*"
,
profile
:
"in"
})
if
(
GEN
.
getSelectCount
()
>
0
){
GEN
.
COM
(
"sel_delete_atr,attributes=.smd"
)
}
if
(
oping_layer
){
GEN
.
COM
(
"filter_atr_set,filter_name=popup,condition=yes,attribute=.smd"
)
...
...
@@ -762,7 +778,8 @@ try {
GEN
.
closeStep
()
})
console
.
log
(
"============= ===============> 6 analysis smd"
)
script_info
({
msg
:
"SMD&BGA analysis"
})
global
.
_ERRORMAG
=
"Error-SMD&BGA analysis"
;
// smd
var
smdInfo
;
try
{
...
...
@@ -809,20 +826,20 @@ try {
return
tmp
})
copper_percent_tmp
.
forEach
(
function
(
item
){
var
save_info
=
{
var
save_info
2
=
{
jobid
:
JobId
,
layer
:
item
.
layer
,
}
if
(
/^cad/ig
.
test
(
step
)){
save_info
.
layerinfohash
=
{
save_info
2
.
layerinfohash
=
{
card_copper_distribution
:
item
.
copper_percent
}
}
else
if
(
/^stp/ig
.
test
(
step
)){
save_info
.
layerinfohash
=
{
save_info
2
.
layerinfohash
=
{
array_copper_distribution
:
item
.
copper_percent
}
}
save_layerinfo
(
save_info
)
save_layerinfo
(
save_info
2
)
})
GEN
.
closeStep
()
}
...
...
@@ -858,7 +875,6 @@ try {
// } else {
// jobpath = "/home/local_db/server_db/jobs/"+job
// }
// mkPath(jobpath,["user","opcam","steps"])
script_info
({
msg
:
"Signal layer analysis"
})
global
.
_ERRORMAG
=
"Error-Signal layer analysis"
;
...
...
@@ -932,34 +948,37 @@ try {
GEN
.
affectedLayer
({
affected
:
'no'
,
mode
:
'all'
})
GEN
.
selClearFeature
()
GEN
.
workLayer
({
name
:
item
.
signalL
,
display_number
:
2
,
clear_before
:
'yes'
})
GEN
.
selectByFilter
({
feat_types
:
"pad"
,
profile
:
"in"
})
if
(
GEN
.
getSelectCount
()
>
0
){
selCopyLayer
({
job
:
job
,
layer
:
item
.
signalL
+
"_pad"
})
var
syms
=
GEN
.
getLayerSymsHist
({
job
:
job
,
step
:
step
,
layer
:
item
.
signalL
+
"_pad"
})
save_layerinfo
({
jobid
:
JobId
,
layer
:
item
.
signalL
,
layerinfohash
:
{
org_min_pad_size
:
getMinSym
(
syms
)
}
})
if
(
item
.
solderL
)
{
GEN
.
workLayer
({
name
:
item
.
solderL
,
display_number
:
2
,
clear_before
:
'yes'
})
GEN
.
selRefFeat
({
layers
:
item
.
signalL
+
"_pad"
,
use
:
"filter"
,
mode
:
"touch"
})
if
(
GEN
.
getSelectCount
()
>
0
)
{
selCopyLayer
({
job
:
job
,
layer
:
item
.
signalL
+
"_sm"
})
var
syms2
=
GEN
.
getLayerSymsHist
({
job
:
job
,
step
:
step
,
layer
:
item
.
signalL
+
"_sm"
})
save_layerinfo
({
jobid
:
JobId
,
layer
:
item
.
signalL
,
layerinfohash
:
{
org_min_pad_sm_opening_size
:
getMinSym
(
syms2
)
}
})
GEN
.
deleteLayer
({
job
:
job
,
layer
:
item
.
signalL
+
"_sm"
})
GEN
.
INFO
({
units
:
"mm"
,
entity_type
:
'layer'
,
entity_path
:
job
+
'/'
+
step
+
'/'
+
item
.
signalL
,
data_type
:
'SYMS_HIST'
});
if
(
GEN
.
INFO_RESULT
.
gSYMS_HISTsymbol
){
GEN
.
selectByFilter
({
feat_types
:
"pad"
,
profile
:
"in"
})
if
(
GEN
.
getSelectCount
()
>
0
){
selCopyLayer
({
job
:
job
,
layer
:
item
.
signalL
+
"_pad"
})
var
syms
=
GEN
.
getLayerSymsHist
({
job
:
job
,
step
:
step
,
layer
:
item
.
signalL
+
"_pad"
})
save_layerinfo
({
jobid
:
JobId
,
layer
:
item
.
signalL
,
layerinfohash
:
{
org_min_pad_size
:
getMinSym
(
syms
)
}
})
if
(
item
.
solderL
)
{
GEN
.
workLayer
({
name
:
item
.
solderL
,
display_number
:
2
,
clear_before
:
'yes'
})
GEN
.
selRefFeat
({
layers
:
item
.
signalL
+
"_pad"
,
use
:
"filter"
,
mode
:
"touch"
})
if
(
GEN
.
getSelectCount
()
>
0
)
{
selCopyLayer
({
job
:
job
,
layer
:
item
.
signalL
+
"_sm"
})
var
syms2
=
GEN
.
getLayerSymsHist
({
job
:
job
,
step
:
step
,
layer
:
item
.
signalL
+
"_sm"
})
save_layerinfo
({
jobid
:
JobId
,
layer
:
item
.
signalL
,
layerinfohash
:
{
org_min_pad_sm_opening_size
:
getMinSym
(
syms2
)
}
})
GEN
.
deleteLayer
({
job
:
job
,
layer
:
item
.
signalL
+
"_sm"
})
}
}
GEN
.
deleteLayer
({
job
:
job
,
layer
:
item
.
signalL
+
"_pad"
})
}
GEN
.
deleteLayer
({
job
:
job
,
layer
:
item
.
signalL
+
"_pad"
})
}
})
GEN
.
clearLayers
()
...
...
@@ -1068,9 +1087,32 @@ try {
})
GEN
.
closeStep
()
})
// mvOutProfile({job:job, step:pcs_step})
//
!!
mvOutProfile({job:job, step:pcs_step})
global
.
_ERRORMAG
=
false
;
saveMeans
({
job
:
job
,
step
:
pcs_step
})
// zip压缩 jobpath/user/opcam
// var zip = require('topsin.zip');
// var iSrcDir = jobpath + "/user/opencam";
// var iDestZipFile = jobpath + "/user/opencam.zip";
// zip.zipDir(iSrcDir,iDestZipFile);
// fs.rmdir(jobpath + "/user/opencam")
// jobpath
// process.exec("cp",["-r",jobpath,"/home/toplinker/samba/export/"+job])
if
(
db_customer
==
"2171"
){
var
matrix_2171
=
GEN
.
getMatrix
({
job
:
job
});
var
comp
=
Object
.
keys
(
matrix_2171
).
filter
(
function
(
v
){
// 如果有comp层 删除
return
/comp/ig
.
test
(
v
)
})
if
(
comp
.
length
>
0
){
var
tmp
=
GEN
.
getStepList
({
job
:
job
})
GEN
.
openStep
({
job
:
job
,
name
:
tmp
[
0
]})
GEN
.
COM
(
"delete_comp"
)
GEN
.
closeStep
()
}
}
// 保存
if
(
/yes/ig
.
test
(
par
.
auto_save
)){
GEN
.
checkInout
({
job
:
job
,
mode
:
"out"
})
// 结束保存料号 关闭料号
...
...
@@ -1104,25 +1146,36 @@ try {
script_info
({
msg
:
"analysis done"
})
//! means信息无法导出
// if(par.export_path != "" && par.export_mode != "" && par.export_submode != "" ){
// if(fs.exists(par.export_path)){
// if(GEN.GEN_TYPE == "genesis"){
// GEN.COM("export_job,job="+job+",path="+par.export_path+",mode="+par.export_mode+",submode="+par.export_submode+",overwrite=yes")
// } else {
// GEN.COM("export_job",{job:job,path:par.export_path,mode:par.export_mode,submode:par.export_submode,overwrite:"yes",format:"genesis",output_name:job})
// GEN.COM("disp_on")
// GEN.COM("origin_on")
// }
// } else {
// resultData.push({ type: "error", title: "导出路径不存在!", detail: [{ desc: par.export_path }] });
// }
// }
// 邮件触发
sendEmail
({
subject
:
db_customer
+
' / '
+
job
+
' reading is ready!'
,
content
:
db_customer
+
' / '
+
job
+
' reading is ready!'
})
if
(
par
.
export_path
!=
""
&&
par
.
export_mode
!=
""
&&
par
.
export_submode
!=
""
){
if
(
fs
.
exists
(
par
.
export_path
)){
if
(
GEN
.
GEN_TYPE
==
"genesis"
){
GEN
.
COM
(
"export_job,job="
+
job
+
",path="
+
par
.
export_path
+
",mode="
+
par
.
export_mode
+
",submode="
+
par
.
export_submode
+
",overwrite=yes"
)
}
else
{
GEN
.
COM
(
"export_job"
,{
job
:
job
,
path
:
par
.
export_path
,
mode
:
par
.
export_mode
,
submode
:
par
.
export_submode
,
overwrite
:
"yes"
,
format
:
"genesis"
,
output_name
:
job
})
GEN
.
COM
(
"disp_on"
)
GEN
.
COM
(
"origin_on"
)
}
// jobpath + "/user/opencam"; par.export_path + "/" + job + ".tgz"
// 到导出路径下解压 tgz
process
.
exec
(
"/bin/tar"
,[
"-zxvf"
,
par
.
export_path
+
"/"
+
job
+
".tgz"
,
"-C"
,
par
.
export_path
])
// jobpath + "/user/opencam"
process
.
exec
(
"/bin/cp"
,[
"-r"
,
jobpath
+
"/user/opencam"
,
par
.
export_path
+
"/"
+
job
+
"/user/"
])
// 将导出路径下的 压缩成 tgz
process
.
exec
(
"cd"
,[
par
.
export_path
,
"&&"
,
"/bin/tar"
,
"-zcvf"
,
"/tmp/tmp/"
+
job
+
".tgz"
,
job
])
// fs.rmdir(par.export_path + "/" + job)
}
else
{
resultData
.
push
({
type
:
"error"
,
title
:
"导出路径不存在!"
,
detail
:
[{
desc
:
par
.
export_path
}]
});
}
}
if
(
/yes/
.
test
(
par
.
send_email
)
){
// 邮件触发
sendEmail
({
subject
:
db_customer
+
' / '
+
job
+
' reading is ready!'
,
content
:
db_customer
+
' / '
+
job
+
' reading is ready!'
})
}
if
(
mode
===
"aimdfm"
)
{
$
.
QDfm
.
updateRow
({
...
...
@@ -1173,7 +1226,25 @@ catch (e) {
// })
}
if
(
global
.
_ERRORMAG
){
script_info
({
msg
:
global
.
_ERRORMAG
})
script_info
({
msg
:
global
.
_ERRORMAG
});
var
job_attrs
=
db
.
query
(
""
,
function
(
q
){
return
q
.
selectValue
({
table
:
'pdm_job'
,
field_format
:{
job_attrs
:
'json'
},
field
:
'job_attrs'
,
where
:{
id
:
JobId
}
})
});
if
(
!
job_attrs
)
{
job_attrs
=
{}}
job_attrs
.
readin_result
=
global
.
_ERRORMAG
db
.
query
(
""
,
function
(
q
){
return
q
.
updateRow
({
table
:
'pdm_job'
,
data
:{
job_attrs
:
job_attrs
},
update_policy
:{
attr_data
:
'json_merge'
},
where
:{
id
:
JobId
}
})
});
}
IKM
.
msg
(
_
.
join
(
GEN
.
STATUS
,
"
\n
"
))
IKM
.
msg
(
e
)
...
...
@@ -2199,7 +2270,6 @@ function analysisChkAttr(par) {
var
oChecklistName
=
par
.
oChecklistName
layers
.
forEach
(
function
(
v
)
{
var
nact
=
/top|bot/
.
test
(
v
)
?
1
:
2
;
// saveMeans({job:job,step:par.step,chklist:oChecklistName,nact:nact,layer:v,jobpath:par.jobpath})
hash
[
v
]
=
{}
Object
.
keys
(
info
).
forEach
(
function
(
key
)
{
var
val
=
info
[
key
]
...
...
@@ -2308,7 +2378,7 @@ function analysisDrill(par, step){
})
}
// exportInfo({drill:drill, item:item});
var
pads
=
GEN
.
getFeatures
({
job
:
job
,
step
:
step
,
layer
:
"temp"
})
var
pads
=
GEN
.
getFeatures
({
job
:
job
,
step
:
step
,
layer
:
"temp"
})
||
[];
pads
=
pads
.
filter
(
function
(
v
){
v
.
size
=
v
.
symbol
.
slice
(
1
)
-
0
;
return
/^r
\d
/
.
test
(
v
.
symbol
)})
if
(
pads
&&
pads
.
length
)
{
...
...
@@ -2761,27 +2831,158 @@ function unSelect(){
GEN
.
selectByFilter
({
attribute
:[{
attribute
:
'.drill'
,
option
:
'via'
}],
profile
:
'all'
,
operation
:
"unselect"
})
GEN
.
selectByFilter
({
attribute
:[{
attribute
:
'.drill'
,
option
:
'non_plated'
}],
profile
:
'all'
,
operation
:
"unselect"
})
}
function
mkPath
(
path
,
list
)
{
if
(
list
.
length
){
function
mkPath
(
path
,
list
)
{
if
(
list
.
length
)
{
var
newPath
=
path
+
'/'
+
list
.
shift
()
if
(
!
fs
.
dirExists
(
newPath
)){
fs
.
mkdir
(
newPath
)
}
return
mkPath
(
newPath
,
list
)
}
else
{
return
path
}
if
(
!
fs
.
dirExists
(
newPath
))
{
fs
.
mkdir
(
newPath
)}
return
mkPath
(
newPath
,
list
)
}
else
{
return
path
}
}
function
saveMeans
(
props
){
var
job
=
props
.
job
var
step
=
props
.
step
var
cust
step
=
props
.
step
var
chklist
=
props
.
chklist
var
nact
=
props
.
nact
var
layer
=
props
.
layer
// 获取meas
var
meas
=
GEN
.
getCheckMeas
({
job
:
job
,
step
:
step
,
chklist
:
chklist
,
nact
:
nact
,
layer
:
layer
})
var
basepath
=
props
.
jobpath
+
"/user/opcam/steps"
var
respath
=
mkPath
(
basepath
,[
step
,
"chk"
,
chklist
+
"_"
+
nact
,
layer
])
fs
.
writeFile
(
respath
+
"/meas"
,
meas
.
join
(
"
\n
"
))
fs
.
chmod
(
respath
+
"/meas"
,
777
)
var
jobpath
=
GEN
.
getJobPath
({
job
:
job
})
var
filter
=
props
.
filter
var
afterPath
=
mkPath
(
jobpath
,
[
"user"
,
"opencam"
,
"steps"
])
var
steps
;
if
(
custstep
)
{
steps
=
[
custstep
]
}
else
{
steps
=
GEN
.
getStepList
({
job
:
job
})
steps
=
steps
.
filter
(
function
(
v
){
return
v
!=
""
||
v
!=
" "
})
}
if
(
!
steps
||
steps
.
length
==
0
){
return
}
steps
.
forEach
(
function
(
step
)
{
var
chkPath
=
mkPath
(
afterPath
,
[
step
,
"chk"
])
var
chks
;
if
(
chklist
)
{
chks
=
[
chklist
]}
else
{
chks
=
GEN
.
getChecklist
({
job
:
job
,
step
:
step
})
}
chks
=
chks
.
filter
(
function
(
v
){
return
/quotation/
.
test
(
v
)});
if
(
chks
&&
chks
.
length
){
chks
.
forEach
(
function
(
item
,
i
)
{
var
afterChkPath
=
mkPath
(
chkPath
,
[
item
])
var
hdr
=
"{
\n
\
\"
title
\"
:
\"
"
+
item
+
"
\"
,
\n
\
\"
sequence
\"
: "
+
(
i
+
1
)
+
"
\n
\
}"
fs
.
writeFile
(
afterChkPath
+
"/hdr"
,
_
.
toString
(
hdr
))
var
nacts
=
[]
if
(
nact
)
{
nacts
=
[
nact
]
}
else
{
var
nactCount
=
GEN
.
getChklistActCount
({
job
:
job
,
step
:
step
,
chklist
:
item
})
||
0
;
if
(
/quotation/
.
test
(
item
)){
nactCount
=
5
;
}
for
(
var
i
=
0
;
i
<
nactCount
;
i
++
)
{
nacts
.
push
(
i
+
1
)
}
}
if
(
nacts
.
length
>
0
){
var
actionPath
=
mkPath
(
afterChkPath
,
[
"actions"
])
nacts
.
forEach
(
function
(
index
){
var
titleFile
=
GEN
.
INFO
({
entity_type
:
"check"
,
entity_path
:
job
+
"/"
+
step
+
"/"
+
item
,
data_type
:
"TITLE"
,
options
:
"action="
+
index
,
parse
:
'no'
})
var
title
=
fs
.
readFile
(
titleFile
)
||
item
if
(
title
&&
title
!=
""
){
if
(
/=/
.
test
(
title
)){
title
=
title
.
split
(
"="
)[
1
].
trim
()
title
=
title
.
substring
(
1
,
title
.
length
-
1
)
}
var
nackPath
=
mkPath
(
actionPath
,
[
index
+
"-"
+
title
])
fs
.
writeFile
(
nackPath
+
"/hdr"
,
"{
\n
\
\"
title
\"
:
\"
"
+
(
index
+
"-"
+
title
)
+
"
\"
,
\n
\
\"
sequence
\"
: "
+
index
+
",
\n
\
\"
dfm_name
\"
:
\"
"
+
title
+
"
\"\n
\
}"
);
var
displayFile
=
GEN
.
INFO
({
entity_type
:
'check'
,
entity_path
:
job
+
"/"
+
step
+
"/"
+
item
,
data_type
:
'MEAS_DISP_ID'
,
options
:
"action="
+
index
,
parse
:
'no'
});
fs
.
writeFile
(
nackPath
+
"/disp"
,
fs
.
readFile
(
displayFile
))
var
measFile
=
GEN
.
INFO
({
entity_type
:
'check'
,
entity_path
:
job
+
'/'
+
step
+
'/'
+
item
,
data_type
:
'MEAS'
,
options
:
"index+action="
+
index
,
parse
:
'no'
});
var
means
;
if
(
filter
){
// 处理过滤
var
fileArray
=
[]
var
file
=
fs
.
openFile
(
measFile
,
'r'
);
while
(
!
file
.
atEnd
())
{
fileArray
.
push
(
file
.
readLine
())
}
if
(
Array
.
isArray
(
filter
)){
var
nowFilter
=
filter
.
filter
(
function
(
item2
){
for
(
var
key
in
item2
)
{
var
value
=
item2
[
key
]
if
(
!
Array
.
isArray
(
value
)){
item2
[
key
]
=
[
value
]
}
}
return
item2
.
step
.
indexOf
(
step
)
>=
0
&&
item2
.
chk
.
indexOf
(
item
)
>=
0
&&
item2
.
nact
.
indexOf
(
index
)
>=
0
})
if
(
nowFilter
.
length
>
0
){
var
nowfilter
=
nowFilter
.
map
(
function
(
v
){
return
v
.
filter
}).
reduce
(
function
(
a
,
b
){
b
.
forEach
(
function
(
v2
){
if
(
a
.
indexOf
(
v2
)
<
0
){
a
.
push
(
v2
)
}
})
return
a
},[])
fileArray
=
fileArray
.
filter
(
function
(
line
){
var
flag
=
false
nowfilter
.
forEach
(
function
(
f
){
var
reg
=
new
RegExp
(
f
,
"ig"
)
if
(
reg
.
test
(
line
)){
flag
=
true
}
})
return
flag
})
}
}
else
if
(
typeof
filter
==
"object"
)
{
if
(
filter
[
step
]
&&
filter
[
step
][
item
]
&&
filter
[
step
][
item
][
String
(
index
)])
{
var
nowFilter
=
filter
[
step
][
item
][
String
(
index
)]
if
(
!
Array
.
isArray
(
nowFilter
)){
nowFilter
=
[
nowFilter
]}
fileArray
=
fileArray
.
filter
(
function
(
line
){
var
flag
=
false
nowFilter
.
forEach
(
function
(
f
){
var
reg
=
new
RegExp
(
f
,
"ig"
)
if
(
reg
.
test
(
line
)){
flag
=
true
}
})
return
flag
})
}
}
means
=
fileArray
.
join
(
"
\n
"
)
}
else
{
means
=
fs
.
readFile
(
measFile
)
}
fs
.
writeFile
(
nackPath
+
"/meas"
,
means
)
}
})
}
})
}
})
}
// 算弧长
function
arcLength
(
x1
,
y1
,
x2
,
y2
,
x3
,
y3
){
...
...
@@ -2887,15 +3088,15 @@ function mvOutProfile (props) {
function
autoUn
(
path
,
dirname
)
{
if
(
/
\.
rar$/
.
test
(
path
)){
process
.
exec
(
'mkdir'
,
[
dirname
]
)
process
.
exec
(
'unrar'
,
[
'x'
,
path
,
dirname
,
"-o+"
])
fs
.
mkdir
(
dirname
)
process
.
exec
(
'
/opt/rar/
unrar'
,
[
'x'
,
path
,
dirname
,
"-o+"
])
}
else
{
process
.
exec
(
'7za'
,
[
'x'
,
path
,
"-o"
+
dirname
,
"-aoa"
])
process
.
exec
(
'
/usr/local/lib/p7zip/
7za'
,
[
'x'
,
path
,
"-o"
+
dirname
,
"-aoa"
])
}
}
function
exportInfo
(
info
){
fs
.
writeFile
(
"/home/toplinker/samba/
scott_tes
t/tmp"
,
_
.
toString
(
info
))
fs
.
writeFile
(
"/home/toplinker/samba/
Test_Scot
t/tmp"
,
_
.
toString
(
info
))
}
function
sendEmail
(
msg
)
{
...
...
ats/topcam/ATS_AIM_data_format.js
View file @
62b678fa
...
...
@@ -420,22 +420,15 @@ try {
})
}
}
else
if
(
/^yucca$/ig
.
test
(
par
.
customer
))
{
if
(
profileRule
[
0
]
==
"outline"
&&
/1352/ig
.
test
(
PAR
.
customer
)
)
{
GEN
.
workLayer
({
name
:
'outline'
,
display_number
:
2
,
clear_before
:
'yes'
})
if
(
all_layer
.
indexOf
(
"outline"
)
>=
0
)
{
GEN
.
workLayer
({
name
:
"outline"
,
display_number
:
2
,
clear_before
:
'yes'
})
GEN
.
selAllFeat
()
if
(
GEN
.
getSelectCount
()
>
0
)
{
if
(
GEN
.
GEN_TYPE
==
"genesis"
){
GEN
.
selCreateProfile
()
// GEN.COM("sel_create_profile,create_profile_with_holes=no")
}
else
{
GEN
.
COM
(
"profile_limits,layers=outline,type=lyrfilter,margin=0"
)
}
}
var
hasProfile
=
GEN
.
getProfile
({
job
:
job
,
step
:
tmp_step
})
GEN
.
closeStep
()
if
(
hasProfile
.
match
(
/
\n
/ig
).
length
==
1
){
createOutline
({
job
:
job
,
step
:
tmp_step
,
profileRule
:
profileRule
})
// GEN.COM("sel_create_profile,create_profile_with_holes=no")
// cutting data
createOutline
({
job
:
job
,
step
:
tmp_step
,
profileRule
:[
"^outline$"
]})
}
else
{
createOutline
({
job
:
job
,
step
:
tmp_step
,
profileRule
:
profileRule
})
}
}
else
{
createOutline
({
job
:
job
,
step
:
tmp_step
,
profileRule
:
profileRule
})
}
...
...
@@ -445,11 +438,18 @@ try {
if
(
all_layer
.
indexOf
(
"outline"
)
>=
0
){
GEN
.
workLayer
({
name
:
"outline"
,
display_number
:
2
,
clear_before
:
'yes'
})
GEN
.
selAllFeat
()
if
(
GEN
.
getSelectCount
()
>
0
)
{
GEN
.
COM
(
"sel_create_profile,create_profile_with_holes=no"
)
}
if
(
GEN
.
getSelectCount
()
>
0
)
{
// GEN.COM("sel_create_profile,create_profile_with_holes=no")
// cutting data
createOutline
({
job
:
job
,
step
:
tmp_step
,
profileRule
:[
"^outline$"
]})
}
else
{
createOutline
({
job
:
job
,
step
:
tmp_step
,
profileRule
:
profileRule
})
}
}
else
if
(
contours
.
length
)
{
// 过滤上下方的框
profileRule
.
unshift
(
"contour"
);
createOutline
({
job
:
job
,
step
:
tmp_step
,
profileRule
:
profileRule
})
}
else
{
createOutline
({
job
:
job
,
step
:
tmp_step
,
profileRule
:
profileRule
})
}
}
else
if
(
/^vivo$/ig
.
test
(
par
.
customer
))
{
// 判断有没有line层
...
...
@@ -457,7 +457,11 @@ try {
GEN
.
workLayer
({
name
:
"line"
,
display_number
:
2
,
clear_before
:
'yes'
})
GEN
.
selAllFeat
()
if
(
GEN
.
getSelectCount
()
>
0
)
{
GEN
.
COM
(
"sel_create_profile,create_profile_with_holes=no"
)
}
}
else
if
(
all_layer
.
indexOf
(
"top"
)
>=
0
)
{
}
else
if
(
all_layer
.
indexOf
(
"array"
)
>=
0
)
{
GEN
.
workLayer
({
name
:
"array"
,
display_number
:
2
,
clear_before
:
'yes'
})
GEN
.
selAllFeat
()
if
(
GEN
.
getSelectCount
()
>
0
)
{
GEN
.
COM
(
"sel_create_profile,create_profile_with_holes=no"
)
}
}
else
if
(
all_layer
.
indexOf
(
"top"
)
>=
0
)
{
GEN
.
selClearFeature
()
GEN
.
workLayer
({
name
:
"top"
,
display_number
:
2
,
clear_before
:
'yes'
})
// 判断是否有外框
...
...
@@ -594,7 +598,25 @@ catch (e) {
IKM
.
msg
(
_
.
join
(
GEN
.
STATUS
,
"
\n
"
))
IKM
.
msg
(
e
)
if
(
global
.
_ERRORMAG
){
script_info
({
msg
:
global
.
_ERRORMAG
})
script_info
({
msg
:
global
.
_ERRORMAG
});
var
job_attrs
=
db
.
query
(
""
,
function
(
q
){
return
q
.
selectValue
({
table
:
'pdm_job'
,
field_format
:{
job_attrs
:
'json'
},
field
:
'job_attrs'
,
where
:{
id
:
JobId
}
})
});
if
(
!
job_attrs
)
{
job_attrs
=
{}}
job_attrs
.
readin_result
=
global
.
_ERRORMAG
db
.
query
(
""
,
function
(
q
){
return
q
.
updateRow
({
table
:
'pdm_job'
,
data
:{
job_attrs
:
job_attrs
},
update_policy
:{
attr_data
:
'json_merge'
},
where
:{
id
:
JobId
}
})
});
}
IKM
.
crud
(
"deleteRow"
,
{
table
:
"pdm_job_jobattr"
,
...
...
@@ -773,7 +795,11 @@ function setDrill(props){ // 设置钻孔
// findSignal 根据传入的数字找到对应的signal层 如 1 => top ; 2 => layer_2
function findSignal(num){
console.log(num)
return signalLayer[Number(num-1)].name
var tmpnum = Number(num-1)
if(tmpnum > signalLayer.length -1){
tmpnum = signalLayer.length -1
}
return signalLayer[tmpnum].name
}
function doDrill(drills){ // 分析钻孔层
return drills.map(function(v){
...
...
@@ -804,64 +830,76 @@ function reName(props) { // 改名 par{job:要改名的料号, rule: {要改名
var cfg = props.cfg
matrix = matrix.filter(function(v){return v.name != v.new_name})
var rename_list = matrix.map(function(item){
var new_name;
var tl_name = item.tl_name
var rule = item.rule
if(rule === tl_name){
new_name = item.new_name
} else {
var reg = new RegExp(rule,"
ig
")
var tmp = reg.exec(tl_name)
if(!tmp){return undefined}
// ["
1
","
10
","
np
"]
var replaceArr = tmp.slice(1)
new_name = item.new_name
var params = {}
for(var i = 0; i<replaceArr.length;i++){
if(/
\
d+/ig.test(replaceArr[i])) {
params["
$
"+(i+1)] = replaceArr[i]
} else {
params["
$
"+(i+1)] = "
'" + replaceArr[i] + "'
"
matrix.forEach(function(v){
// 在数据库层信息里找v.name 找得到就直接改名
var new_name = IKM.get_layerinfo({jobid: JobId, layer: v.name, layerinfo: "
new_name
" })
var layers_tmp = Object.keys(GEN.getMatrix({job:job}));
if(new_name && new_name!="" && new_name != v.name && layers_tmp.indexOf(new_name) < 0){
GEN.renameLayer({job:job,layer:v.name,new_name:new_name})
}
})
if(matrix.length > 0){
var rename_list = matrix.map(function(item){
var new_name;
var tl_name = item.tl_name
var rule = item.rule
if(rule === tl_name){
new_name = item.new_name
} else {
var reg = new RegExp(rule,"
ig
")
var tmp = reg.exec(tl_name)
if(!tmp){return undefined}
// ["
1
","
10
","
np
"]
var replaceArr = tmp.slice(1)
new_name = item.new_name
var params = {}
for(var i = 0; i<replaceArr.length;i++){
if(/
\
d+/ig.test(replaceArr[i])) {
params["
$
"+(i+1)] = replaceArr[i]
} else {
params["
$
"+(i+1)] = "
'" + replaceArr[i] + "'
"
}
}
}
replaceArr.forEach(function(v,i){
tl_name = tl_name.replace("
(
$
"+(i+1)+"
)
",v)
})
// {"
tl_name
":"
d1
-
10
-
np
","
new_name
":"
ftdrill
(
$1
)
-
(
$2
)
-
(
$3
)
"}
new_name = replaceTlName(new_name)
function replaceTlName(name){
var tmp = /(
\
([^)]*
\
))/ig.exec(name)
if(!tmp){ return name }
var param_arr = tmp[1].match(/
\
$
\
d+/ig)
var newname = tmp[1]
param_arr.forEach(function(v){
newname = newname.replace(new RegExp("
\\
"+v,"
ig
"), params[v])
replaceArr.forEach(function(v,i){
tl_name = tl_name.replace("
(
$
"+(i+1)+"
)
",v)
})
newname = name.replace(tmp[1],eval(newname))
return replaceTlName(newname)
// {"
tl_name
":"
d1
-
10
-
np
","
new_name
":"
ftdrill
(
$1
)
-
(
$2
)
-
(
$3
)
"}
new_name = replaceTlName(new_name)
function replaceTlName(name){
var tmp = /(
\
([^)]*
\
))/ig.exec(name)
if(!tmp){ return name }
var param_arr = tmp[1].match(/
\
$
\
d+/ig)
var newname = tmp[1]
param_arr.forEach(function(v){
newname = newname.replace(new RegExp("
\\
"+v,"
ig
"), params[v])
})
newname = name.replace(tmp[1],eval(newname))
return replaceTlName(newname)
}
}
}
return {
orig_name: item.name,
new_name: new_name
}
})
rename_list = rename_list.filter(function(v){
var flag = true
if(!v){flag = false}
if(!v.orig_name || !v.new_name ){flag = false}
return flag
})
rename_list.forEach(function(v){
if(v.orig_name !== v.new_name && !GEN.isLayerExists({job:job, layer: v.new_name})){
if(!GEN.isLayerExists({job:job, layer:v.new_name})){
return {
orig_name: item.name,
new_name: new_name
}
})
rename_list = rename_list.filter(function(v){
var flag = true
if(!v){flag = false}
if(!v.orig_name || !v.new_name ){flag = false}
return flag
})
rename_list.forEach(function(v){
var layers_tmp = Object.keys(GEN.getMatrix({job:job}));
if(v.orig_name !== v.new_name && layers_tmp.indexOf(v.new_name) < 0){
GEN.renameLayer({job:job,layer:v.orig_name,new_name:v.new_name})
}
}
});
});
}
// 最后 如果第一个 最后一个不是top bottom 就手动修改
var afterMatrix = GEN.getMatrix({job:job})
var afterMatrix = GEN.getMatrix({job:job})
;
var signals = Object.keys(afterMatrix).filter(function(v){return afterMatrix[v].layer_type=="
signal
" && afterMatrix[v].context=="
board
"})
signals = signals.sort(function(a,b){return afterMatrix[a].row - afterMatrix[b].row})
var topSignal = signals[0]
...
...
@@ -1072,7 +1110,9 @@ function createOutline(props){
}
function exportInfo(info){
fs.writeFile("
/
home
/
toplinker
/
samba
/
Test_Scott
/
tmp
", _.toString(info))
}
function touch(layer) {
GEN.selRefFeat({layers:layer,use:"
filter
",mode:"
touch
"})
if(GEN.getSelectCount() > 0) {
...
...
ats/topcam/ATS_AIM_data_input.js
View file @
62b678fa
...
...
@@ -159,7 +159,7 @@ try {
var
custCfg
=
config
.
customer
[
par
.
customer
]
if
(
!
custCfg
){
throw
"customer config error:"
+
par
.
customer
}
custCfg
.
db
=
par
.
db
||
custCfg
.
db
var
step
=
custCfg
.
step
.
toLowerCase
()
var
step
=
custCfg
.
step
.
toLowerCase
()
||
"cad"
;
// 获取路径下文件信息
var
path
=
par
.
path
if
(
!
fs
.
exists
(
path
)){
...
...
@@ -196,7 +196,10 @@ try {
// 将jobFile下的zip解压
script_info
({
msg
:
"unzip the file"
,
result_severity
:
"info"
})
global
.
_ERRORMAG
=
"Failed to unzip the file"
;
decompression
(
jobFile
[
0
].
path
,
[])
decompression
(
jobFile
[
0
].
path
,
[]);
changePath2
(
jobFile
[
0
].
path
)
var
job_attrs
=
db
.
query
(
""
,
function
(
q
){
return
q
.
selectValue
({
table
:
'pdm_job'
,
...
...
@@ -205,7 +208,7 @@ try {
where
:{
id
:
JobId
}
})
});
if
(
!
job_attrs
)
{
job_attrs
=
{}}
if
(
!
job_attrs
)
{
job_attrs
=
{}}
job_attrs
.
readin_result
=
"Readin"
db
.
query
(
""
,
function
(
q
){
return
q
.
updateRow
({
...
...
@@ -232,12 +235,15 @@ try {
script_info
({
msg
:
"Import odb++"
,
result_severity
:
"error"
});
global
.
_ERRORMAG
=
"Fail to import odb++"
;
if
(
jobInfo
.
data
.
length
==
1
){
// 只分析到一个tgz文件 直接导入
IKM
.
msg
(
"只分析到一个tgz文件 直接导入"
)
import_info
.
push
({
name
:
jobInfo
.
data
[
0
].
file
.
name
,
type
:
"odb++"
,
date
:
now
(),
user
:
$
.
user_name
})
var
err
=
importJob
({
name
:
job
,
db
:
custCfg
.
db
,
path
:
jobInfo
.
data
[
0
].
file
.
path
},
config
.
delSameJob
)
IKM
.
msg
(
"只分析到一个tgz文件 直接导入"
);
import_info
.
push
({
name
:
jobInfo
.
data
[
0
].
file
.
name
,
type
:
"odb++"
,
date
:
now
(),
user
:
$
.
user_name
});
var
err
=
importJob
({
name
:
job
,
db
:
custCfg
.
db
,
path
:
jobInfo
.
data
[
0
].
file
.
path
},
config
.
delSameJob
);
// 将step改名cad
var
step_tmp
=
GEN
.
getStepList
({
job
:
job
})[
0
];
if
(
step_tmp
!=
"cad"
){
GEN
.
renameStep
({
job
:
job
,
name
:
step_tmp
,
new_name
:
'cad'
})
}
if
(
err
){
throw
err
}
}
else
{
// 多个tgz文件 说明需要合并
console
.
log
(
"==========合并的情况"
);
var
jobs
=
jobInfo
.
data
.
map
(
function
(
item
,
i
){
...
...
@@ -384,7 +390,6 @@ try {
GEN
.
checkInout
({
job
:
job
,
mode
:
"in"
})
GEN
.
closeJob
({
job
:
job
})
var
import_html
=
"<table border=1 align='center' cellpadding=5 cellspacing=0 style=
\"
text-align: center;
\"
><tr><th>导入状态/Import Status</th><th>文件/File</th><th>类型/Type</th><th>导入时间/Import Time</th><th>操作用户/User</th></tr>"
import_info
.
forEach
(
function
(
item
){
var
name
=
item
.
name
;
...
...
@@ -426,7 +431,25 @@ try {
catch
(
e
)
{
script_info
({
result_severity
:
"error"
})
if
(
global
.
_ERRORMAG
){
script_info
({
msg
:
global
.
_ERRORMAG
})
script_info
({
msg
:
global
.
_ERRORMAG
});
var
job_attrs
=
db
.
query
(
""
,
function
(
q
){
return
q
.
selectValue
({
table
:
'pdm_job'
,
field_format
:{
job_attrs
:
'json'
},
field
:
'job_attrs'
,
where
:{
id
:
JobId
}
})
});
if
(
!
job_attrs
)
{
job_attrs
=
{}}
job_attrs
.
readin_result
=
global
.
_ERRORMAG
db
.
query
(
""
,
function
(
q
){
return
q
.
updateRow
({
table
:
'pdm_job'
,
data
:{
job_attrs
:
job_attrs
},
update_policy
:{
attr_data
:
'json_merge'
},
where
:{
id
:
JobId
}
})
});
}
IKM
.
crud
(
"deleteRow"
,
{
table
:
"pdm_job_jobattr"
,
...
...
@@ -522,6 +545,7 @@ function importJob(props,delSameJob){
}
}
props
.
path
=
changePath
(
props
.
path
)
// 如果path的tgz不符合规范 纠正一下
GEN
.
importJob
(
props
);
}
...
...
@@ -587,23 +611,31 @@ function decompression(path, zips) {
var
files
=
fs
.
listDir
(
path
)
var
count
=
0
;
var
zipfiles
=
files
.
filter
(
function
(
item
){
if
(
item
.
suffix
==
"zip"
||
item
.
suffix
==
"rar"
||
item
.
suffix
==
"7z
"
)
{
if
(
item
.
suffix
==
"zip"
||
item
.
suffix
==
"rar"
||
item
.
suffix
==
"7z"
||
item
.
suffix
==
"ZIP
"
)
{
inputState
.
push
(
item
.
suffix
);
console
.
log
(
"--->path:"
+
item
.
path
)
if
(
zips
.
indexOf
(
item
.
path
)
<
0
){
zips
.
push
(
item
.
path
)
if
(
item
.
name
.
length
>=
20
)
{
zips
.
push
(
item
.
path
)
;
if
(
item
.
name
.
length
>=
30
&&
!
/�|
\?
/
.
test
(
item
.
name
)
)
{
var
mvname
=
"custom"
+
count
+
"."
+
item
.
suffix
;
count
++
fs
.
rename
(
item
.
path
,
item
.
dir
+
"/"
+
mvname
)
count
++
;
fs
.
rename
(
item
.
path
,
item
.
dir
+
"/"
+
mvname
)
;
item
.
path
=
item
.
dir
+
"/"
+
mvname
}
var
dir_name
=
item
.
path
.
replace
(
/
\.(
zip|7z|rar
)
$/
,
""
);
var
dir_name
=
item
.
path
.
replace
(
/
\.(
zip|7z|rar
)
$/ig
,
""
);
autoUn
(
item
.
path
,
dir_name
);
return
true
}
}
// else if(/7z/.test(item.completeSuffix)){
// inputState.push("7z");
// if(zips.indexOf(item.path) < 0){
// zips.push(item.path);
// var dir_name = item.path.replace(".7z", "");
// autoUn(item.path, dir_name);
// return true
// }
// }
return
false
})
if
(
zipfiles
.
length
)
{
decompression
(
path
,
zips
)}
...
...
@@ -630,5 +662,29 @@ function autoUn(path, dirname) {
}
function
exportInfo
(
info
){
fs
.
writeFile
(
"/home/toplinker/samba/scott_test/tmp"
,
_
.
toString
(
info
))
fs
.
writeFile
(
"/home/toplinker/samba/Test_Scott/tmp"
,
_
.
toString
(
info
))
}
function
changePath2
(
filePath
){
var
fileList
=
fs
.
listDir
(
filePath
);
var
tmp
=
[];
for
(
var
i
=
0
;
i
<
fileList
.
length
;
i
++
){
if
(
fileList
[
i
].
isDir
){
var
path
=
fileList
[
i
].
path
;
var
fileName
=
fileList
[
i
].
baseName
;
var
obj
=
{
path
:
path
,
fileName
:
fileName
}
tmp
.
push
(
obj
);
}
}
var
list
=
[];
for
(
var
i
=
tmp
.
length
-
1
;
i
>=
0
;
i
--
){
var
newFileName
=
tmp
[
i
].
fileName
.
replace
(
/
\s
*/g
,
''
);
//去除文件名中空格
newFileName
=
newFileName
.
replace
(
/
\?
/g
,
''
);
//去除文件名中?
var
newPath
=
tmp
[
i
].
path
.
replace
(
/^
(
.*
)\/[^\/]
*$/
,
"$1"
);
var
file
=
fs
.
rename
(
tmp
[
i
].
path
,
newPath
+
'/'
+
newFileName
);
list
.
push
(
file
);
}
}
\ No newline at end of file
ats/topcam/config_ats.js
View file @
62b678fa
...
...
@@ -343,7 +343,7 @@
{
"valid"
:
function
(
props
){
var
file
=
props
.
file
;
return
/.+
\.
art$/ig
.
test
(
file
.
name
)
return
/.+
\.
art$
|
\.
gbr$
/ig
.
test
(
file
.
name
)
},
"type"
:
"Gerber274x"
,
"format"
:
"Gerber274x_2"
,
...
...
@@ -452,19 +452,19 @@
{
"orig_name"
:
[
"^comp_+_bot$"
],
"tl_name"
:
"comp_+_bot"
},
{
"orig_name"
:
[
"top_enig"
,
"top-enig"
,
"enig_top"
],
"tl_name"
:
"enig_top"
},
{
"orig_name"
:
[
"bot_enig"
,
"bot-enig"
,
"enig_bot"
],
"tl_name"
:
"enig_bot"
},
{
"orig_name"
:
[
"top_
paste"
,
"^spt
$"
,
"^past_top$"
],
"tl_name"
:
"past_top"
},
{
"orig_name"
:
[
"bot
tom_paste"
,
"^spb
$"
,
"^past_botm$"
],
"tl_name"
:
"past_botm"
},
{
"orig_name"
:
[
"top_silk"
,
"^sst$"
,
"^silk_top$"
],
"tl_name"
:
"silk_top"
},
{
"orig_name"
:
[
"bot
tom_silk"
,
"^ssb
$"
,
"^silk_bot$"
],
"tl_name"
:
"silk_bot"
},
{
"orig_name"
:
[
"top_
solder"
,
"^smt
$"
,
"^sm_top$"
],
"tl_name"
:
"sm_top"
},
{
"orig_name"
:
[
"bot
tom_solder"
,
"^smb
$"
,
"^sm_botm$"
],
"tl_name"
:
"sm_botm"
},
{
"orig_name"
:
"^top$"
,
"tl_name"
:
"top"
},
{
"orig_name"
:
"^drill$"
,
"tl_name"
:
"drill"
},
{
"orig_name"
:
[
"^board_outline$"
,
"outline.art"
,
"^outline$"
],
"tl_name"
:
"outline"
},
{
"orig_name"
:
[
"top_
(?:solder)paste"
,
"^spt(?:
\\
.gbr)?
$"
,
"^past_top$"
],
"tl_name"
:
"past_top"
},
{
"orig_name"
:
[
"bot
(?:tom)?_(?:solder)paste"
,
"^spb(?:
\\
.gbr)?
$"
,
"^past_botm$"
],
"tl_name"
:
"past_botm"
},
{
"orig_name"
:
[
"top_silk"
,
"^sst
(?:
\\
.gbr)?
$"
,
"^silk_top$"
],
"tl_name"
:
"silk_top"
},
{
"orig_name"
:
[
"bot
(?:tom)?_silk"
,
"^ssb(?:
\\
.gbr)?
$"
,
"^silk_bot$"
],
"tl_name"
:
"silk_bot"
},
{
"orig_name"
:
[
"top_
(?:solder)mask"
,
"^smt(?:
\\
.gbr)?
$"
,
"^sm_top$"
],
"tl_name"
:
"sm_top"
},
{
"orig_name"
:
[
"bot
(?:tom)?_(?:solder)mask"
,
"^smb(?:
\\
.gbr)?
$"
,
"^sm_botm$"
],
"tl_name"
:
"sm_botm"
},
{
"orig_name"
:
[
"^top$"
,
"^top
\\
.gbr$"
,
"^top
\\
.art$"
]
,
"tl_name"
:
"top"
},
{
"orig_name"
:
"^drill
(?:
\\
.drl)
$"
,
"tl_name"
:
"drill"
},
{
"orig_name"
:
[
"^board_outline$"
,
"outline
\\
.gbr|outline
\\
.art"
,
"^outline$"
],
"tl_name"
:
"outline"
},
{
"orig_name"
:
[
"^rout$"
,
"
\\
.rou$"
],
"tl_name"
:
"rout"
},
{
"orig_name"
:
"^bottom$"
,
"tl_name"
:
"bottom"
},
{
"orig_name"
:
[
"^
l(
\\
d+)"
,
"^isl(
\\
d+)
$"
,
"^layer_(
\\
d+)$"
],
"tl_name"
:
"l_($1)"
},
{
"orig_name"
:
[
"_isl(
\\
d+)_isl(
\\
d+)"
,
"d(
\\
d+)-(
\\
d+)"
],
"tl_name"
:
"d_($1)-($2)"
},
{
"orig_name"
:
[
"^bottom$"
,
"^bottom
\\
.gbr$"
,
"^bottom
\\
.art$"
]
,
"tl_name"
:
"bottom"
},
{
"orig_name"
:
[
"^
inner_(
\\
d+)
\\
.art"
,
"^l(
\\
d+)"
,
"^isl(
\\
d+)(?:
\\
.gbr)?
$"
,
"^layer_(
\\
d+)$"
],
"tl_name"
:
"l_($1)"
},
{
"orig_name"
:
[
"
-(
\\
d+)-(
\\
d+)(?:-laser)?
\\
.drl"
,
"
_isl(
\\
d+)_isl(
\\
d+)"
,
"d(
\\
d+)-(
\\
d+)"
],
"tl_name"
:
"d_($1)-($2)"
},
{
"orig_name"
:
[
"_top_isl(
\\
d+)"
],
"tl_name"
:
"d_1-($1)"
},
{
"orig_name"
:
[
"_isl(
\\
d+)_bottom"
],
"tl_name"
:
"d_($1)-($1+1)"
}
]
...
...
@@ -599,25 +599,27 @@
"tl_name"
:
[
{
"orig_name"
:
[
"^comp_+_top$"
],
"tl_name"
:
"comp_+_top"
},
{
"orig_name"
:
[
"^comp_+_bot$"
],
"tl_name"
:
"comp_+_bot"
},
{
"orig_name"
:
[
"^pm_top"
,
"spcs
\\
.gbr$|paste.pri|pripaste|solderpaste_top"
,
"ppst
\\
.art|spt
\\
.art"
,
"assy[_-]?top
\\
.art"
,
"past_top"
,
"paste_top"
],
"tl_name"
:
"past_top"
},
{
"orig_name"
:
[
"^pm_bot"
,
"spps
\\
.gbr$|paste.sec|secpaste|solderpaste_bottom"
,
"spst
\\
.art|spb
\\
.art"
,
"assy[_-]?bott?o?m?
\\
.art"
,
"past_bot"
,
"paste_bot"
],
"tl_name"
:
"past_botm"
},
{
"orig_name"
:
[
"silk.pri"
,
"pleg
\\
.art|sst
\\
.art"
,
"^ss_top|sscs
\\
.gbr$"
,
"silk_top"
],
"tl_name"
:
"silk_top"
},
{
"orig_name"
:
[
"silk.sec"
,
"sleg
\\
.art|ssb
\\
.art"
,
"^ss_bot|ssps
\\
.gbr$"
,
"silk_bot"
],
"tl_name"
:
"silk_bot"
},
{
"orig_name"
:
[
"
\\
.st$|
\\
.tsm$|soldermask_top"
,
"mask.top
\\
.art|smt
\\
.art"
,
"mask.pri
\\
.art|smcs
\\
.gbr$"
,
"psm
\\
.art"
,
"sm_top"
],
"tl_name"
:
"sm_top"
},
{
"orig_name"
:
[
"
\\
.sb$|
\\
.bsm$|soldermask_bottom"
,
"mask.bot
\\
.art|smb
\\
.art"
,
"mask.sec
\\
.art|smps
\\
.gbr$"
,
"ssm
\\
.art"
,
"sm_bot"
],
"tl_name"
:
"sm_botm"
},
{
"orig_name"
:
[
"^pm_top"
,
"spcs
\\
.gbr$|paste.pri|pripaste|solderpaste_top"
,
"ppst
\\
.art|spt
\\
.art"
,
"assy[_-]?top
\\
.art"
,
"past_top"
,
"paste_top
|spt
"
],
"tl_name"
:
"past_top"
},
{
"orig_name"
:
[
"^pm_bot"
,
"spps
\\
.gbr$|paste.sec|secpaste|solderpaste_bottom"
,
"spst
\\
.art|spb
\\
.art"
,
"assy[_-]?bott?o?m?
\\
.art"
,
"past_bot"
,
"paste_bot
|spb
"
],
"tl_name"
:
"past_botm"
},
{
"orig_name"
:
[
"silk.pri"
,
"pleg
\\
.art|sst
\\
.art"
,
"^ss_top|sscs
\\
.gbr$"
,
"silk_top
|sst
"
],
"tl_name"
:
"silk_top"
},
{
"orig_name"
:
[
"silk.sec"
,
"sleg
\\
.art|ssb
\\
.art"
,
"^ss_bot|ssps
\\
.gbr$"
,
"silk_bot
|ssb
"
],
"tl_name"
:
"silk_bot"
},
{
"orig_name"
:
[
"
\\
.st$|
\\
.tsm$|soldermask_top"
,
"mask.top
\\
.art|smt
\\
.art"
,
"mask.pri
\\
.art|smcs
\\
.gbr$"
,
"psm
\\
.art"
,
"sm_top
|smt
"
],
"tl_name"
:
"sm_top"
},
{
"orig_name"
:
[
"
\\
.sb$|
\\
.bsm$|soldermask_bottom"
,
"mask.bot
\\
.art|smb
\\
.art"
,
"mask.sec
\\
.art|smps
\\
.gbr$"
,
"ssm
\\
.art"
,
"sm_bot
|smb
"
],
"tl_name"
:
"sm_botm"
},
{
"orig_name"
:
[
"^(?:(?!assy|enig|pm|past|ss|silk|sm|soldermask).)+_top
\
.art$"
,
"^top$"
,
"^top.art$"
],
"tl_name"
:
"top"
},
{
"orig_name"
:
[
"^(?:(?!assy|enig|pm|past|ss|silk|sm|soldermask).)+_bottom
\
.art$"
,
"^bot
\\
.art$"
,
"^bottom$"
,
"^bottom
\\
.art$"
],
"tl_name"
:
"bottom"
},
{
"orig_name"
:
[
"int(
\\
d+)
\\
.art"
],
"tl_name"
:
"l_($1+1)"
},
{
"orig_name"
:
[
"^
lay(
\\
d+)
\\
.art$|
l(
\\
d+).*
\\
.gbr$"
,
"^0?(
\\
d+)[
\\
D].*
\\
.art$"
,
"
\\
.p(
\\
d+)p?$"
,
"
\\
.l(
\\
d+)$"
,
"^l(
\\
d+).*
\\
.art$"
,
"^l(
\\
d+)
\\
.art$"
,
"^0(
\\
d+).*ccp_ms"
,
"^s(
\\
d+)
\\
.art"
,
"laye?r?(
\\
d+)"
,
"layer_(
\\
d+)"
],
"tl_name"
:
"l_($1)"
},
{
"orig_name"
:
[
"^
(?:signal|plane|layer)_(
\\
d+)$"
,
"^l(
\\
d+)$"
,
"_l(
\\
d+)-.{3}
\\
.art$"
,
"lay(
\\
d+)
\\
.art$"
,
"
l(
\\
d+).*
\\
.gbr$"
,
"^0?(
\\
d+)[
\\
D].*
\\
.art$"
,
"
\\
.p(
\\
d+)p?$"
,
"
\\
.l(
\\
d+)$"
,
"^l(
\\
d+).*
\\
.art$"
,
"^l(
\\
d+)
\\
.art$"
,
"^0(
\\
d+).*ccp_ms"
,
"^s(
\\
d+)
\\
.art"
,
"laye?r?(
\\
d+)"
,
"layer_(
\\
d+)"
],
"tl_name"
:
"l_($1)"
},
{
"orig_name"
:
[
"(
\\
d+)-(
\\
d+)-((?:(?!laser)[a-zA-Z])+)
\\
.drl$"
,
"
\\
.d(
\\
d+)-(
\\
d+)((?:(?!laser)[a-zA-Z])+)$"
],
"tl_name"
:
"d($1)-($2)-($3)"
},
{
"orig_name"
:
[
"
\\
.ncd(
\\
d)-(
\\
d)$"
,
"
\\
.d(
\\
d+)-(
\\
d+)$"
,
"-(
\\
d+)-(
\\
d+)
\\
.drl$"
,
"(
\\
d+)-(
\\
d+)-laser
\\
.drl$"
,
"d(
\\
d+)-(
\\
d+)"
],
"tl_name"
:
"d_($1)-($2)"
},
{
"orig_name"
:
[
"
\\
.ncdthru$"
],
"tl_name"
:
"drill"
},
{
"orig_name"
:
[
"
_l?(
\\
d+)_l?(
\\
d+)$"
,
"
\\
.ncd(
\\
d)-(
\\
d)$"
,
"
\\
.d(
\\
d+)-(
\\
d+)$"
,
"-(
\\
d+)-(
\\
d+)
\\
.drl$"
,
"(
\\
d+)-(
\\
d+)-laser
\\
.drl$"
,
"d(
\\
d+)-(
\\
d+)"
],
"tl_name"
:
"d_($1)-($2)"
},
{
"orig_name"
:
[
"
^drill$"
,
"
\\
.ncdthru$"
],
"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"
:
[
"^contour
\\
.gdo$"
,
"
\\
.R1$"
,
"outline"
],
"tl_name"
:
"outline"
},
{
"orig_name"
:
[
"^
ro
\\
.art$"
,
"^
contour
\\
.gdo$"
,
"
\\
.R1$"
,
"outline"
],
"tl_name"
:
"outline"
},
{
"orig_name"
:
[
"^pst
\\
.art$"
,
"top-enig"
,
"enig_top"
],
"tl_name"
:
"enig_top"
},
{
"orig_name"
:
[
"^sst
\\
.art$"
,
"bot-enig"
,
"enig_bot"
],
"tl_name"
:
"enig_bot"
}
{
"orig_name"
:
[
"^sst
\\
.art$"
,
"bot-enig"
,
"enig_bot"
],
"tl_name"
:
"enig_bot"
},
{
"orig_name"
:
[
"_top_l(
\\
d+)"
],
"tl_name"
:
"d_1-($1)"
},
{
"orig_name"
:
[
"_l(
\\
d+)_bottom"
],
"tl_name"
:
"d_($1)-($1+1)"
}
],
"mergerule"
:
{
profile
:[
"past_top"
,
"sm_top"
],
...
...
@@ -827,27 +829,27 @@
"tl_name"
:
[
{
"orig_name"
:
[
"^comp_+_top$"
],
"tl_name"
:
"comp_+_top"
},
{
"orig_name"
:
[
"^comp_+_bot$"
],
"tl_name"
:
"comp_+_bot"
},
{
"orig_name"
:
[
"^pmt
\\
.art$"
,
"
\\
.pma$|
\\
.spa$"
,
"paste.top|soldPasteTop|pastemask.?top"
,
"past_top"
],
"tl_name"
:
"past_top"
},
{
"orig_name"
:
[
"^pmb
\\
.art$"
,
"
\\
.pmb$|
\\
.spb$"
,
"paste.bot|soldPasteBot|pastemask.?bot"
,
"past_botm"
],
"tl_name"
:
"past_botm"
},
{
"orig_name"
:
[
"tsilk"
,
"^sst
\\
.art$"
,
"
\\
.ssa$"
,
"silkscrntop|silkscreentop"
,
"silk.top|silk-top"
],
"tl_name"
:
"silk_top"
},
{
"orig_name"
:
[
"bsilk"
,
"^ssb
\\
.art$"
,
"
\\
.ssb$"
,
"silkscrnbot|silkscreenbot"
,
"silk.bot|silk-bot"
],
"tl_name"
:
"silk_bot"
},
{
"orig_name"
:
[
"^pmt
\\
.art$"
,
"
\\
.pma$|
\\
.spa$"
,
"paste.
?
top|soldPasteTop|pastemask.?top"
,
"past_top"
],
"tl_name"
:
"past_top"
},
{
"orig_name"
:
[
"^pmb
\\
.art$"
,
"
\\
.pmb$|
\\
.spb$"
,
"paste.
?
bot|soldPasteBot|pastemask.?bot"
,
"past_botm"
],
"tl_name"
:
"past_botm"
},
{
"orig_name"
:
[
"tsilk
|silktop
"
,
"^sst
\\
.art$"
,
"
\\
.ssa$"
,
"silkscrntop|silkscreentop"
,
"silk.top|silk-top"
],
"tl_name"
:
"silk_top"
},
{
"orig_name"
:
[
"bsilk
|silkbot
"
,
"^ssb
\\
.art$"
,
"
\\
.ssb$"
,
"silkscrnbot|silkscreenbot"
,
"silk.bot|silk-bot"
],
"tl_name"
:
"silk_bot"
},
{
"orig_name"
:
[
"tmask"
,
"^smt
\\
.art$"
,
"
\\
.sma$"
,
"soldmask1top|soldermask.?top"
,
"sm.top|solder.top"
],
"tl_name"
:
"sm_top"
},
{
"orig_name"
:
[
"bmask"
,
"^smb
\\
.art$"
,
"
\\
.smb$"
,
"soldmask1bot|soldermask.?bot"
,
"sm.bot|solder.bot"
],
"tl_name"
:
"sm_botm"
},
{
"orig_name"
:
[
"^(?:(?!assy|export|enig|pm|past|paste|silk|mask).)+top
\\
.(pho|art)$"
,
"^top$"
,
"^top
\\
.art$"
],
"tl_name"
:
"top"
},
{
"orig_name"
:
[
"
^(?:(?!ref).)+l(
\\
d)
\\
.art$"
,
"-(
\\
d+)l
\\
.pho$"
,
"^l(
\\
d+).*
\\
.art$"
,
"^v(
\\
d+)
\\
.art$"
,
"^g(
\\
d+)
\\
.art$"
,
"^s(
\\
d+)
\\
.art$"
,
"
\\
.l(
\\
d+)$"
,
"Copper(
\\
d+)
\\
.ger$"
,
"^laye?r?_
(
\\
d+)"
],
"tl_name"
:
"l_($1)"
},
{
"orig_name"
:
[
"^
(?:(?!assy|view|enig|pm|past|paste|silk|mask).)+bot
\\
.(pho|art)$"
,
"^bot
\\
.art$"
,
"^bottom$"
,
"^bottom.art$"
],
"tl_name"
:
"bottom"
},
{
"orig_name"
:
[
"^
top
\\
.(pho|art)$"
,
"^
(?:(?!assy|export|enig|pm|past|paste|silk|mask).)+top
\\
.(pho|art)$"
,
"^top$"
,
"^top
\\
.art$"
],
"tl_name"
:
"top"
},
{
"orig_name"
:
[
"
_s(
\\
d+)
\\
.art$"
,
"^(?:(?!ref).)+l(
\\
d+)
\\
.art$"
,
"-(
\\
d+)l
\\
.pho$"
,
"^l(
\\
d+).*
\\
.art$"
,
"^v(
\\
d+)
\\
.art$"
,
"^g(
\\
d+)
\\
.art$"
,
"^s(
\\
d+)
\\
.art$"
,
"
\\
.l(
\\
d+)$"
,
"Copper(
\\
d+)
\\
.ger$"
,
"^laye?r?_?
(
\\
d+)"
],
"tl_name"
:
"l_($1)"
},
{
"orig_name"
:
[
"^
bottom
\\
.(pho|art)$"
,
"^(?:(?!assy|view|enig|pm|past|paste|silk|mask).)+bot(tom)?
\\
.(pho|art)$"
,
"^bot
\\
.art$"
,
"^bottom$"
,
"^bottom.art$"
],
"tl_name"
:
"bottom"
},
{
"orig_name"
:
[
"
\\
.d(
\\
d+)$"
],
"tl_name"
:
"d_($1)-($1+1)"
},
{
"orig_name"
:
[
"(
\\
d+)-(
\\
d+)plated
\\
.ncd"
,
"thruHolePlated_(
\\
d+)_(
\\
d+)
\\
.ncd"
,
"(
\\
d+)-(
\\
d+)
\\
.drl$"
,
"^drill(
\\
d+)-(
\\
d+)$"
,
"^d_(
\\
d+)-(
\\
d+)$"
],
"tl_name"
:
"d_($1)-($2)"
},
{
"orig_name"
:
[
"(
\\
d+)-(
\\
d+)-np
\\
.drl$"
,
"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"
:
[
"p_outline
\\
.art"
,
"panel
\\
.
art$"
,
"panel
outline
\\
.pho"
,
"outline
\\
.art$"
,
"
\\
.bol$"
,
"PnlContourNonPlated
\\
.ger"
,
"^outline"
],
"tl_name"
:
"outline"
},
{
"orig_name"
:
[
"p_outline
\\
.art"
,
"panel
\\
.
(art|pho)$"
,
"panel-?
outline
\\
.pho"
,
"outline
\\
.art$"
,
"
\\
.bol$"
,
"PnlContourNonPlated
\\
.ger"
,
"^outline"
],
"tl_name"
:
"outline"
},
{
"orig_name"
:
[
"topside-golden"
,
"top-enig"
,
"enig_top"
],
"tl_name"
:
"enig_top"
},
{
"orig_name"
:
[
"botside-golden"
,
"bot-enig"
,
"enig_bot"
],
"tl_name"
:
"enig_bot"
},
],
"mergerule"
:
{
profile
:[
"silk_top"
],
profile
:[
"silk_top"
,
"past_top"
],
laser
:
{
tl_name
:
"drill($1)-($2)"
,
regs
:
[
"(
\\
d+)-(
\\
d+)
\\
.drl$"
]
...
...
@@ -876,7 +878,7 @@
{
"valid"
:
function
(
props
){
var
file
=
props
.
file
;
return
/
\.
gdo$|
\.
pho$|^line$|^ftdrill/ig
.
test
(
file
.
name
)
return
/
\.
g
br$|
\.
g
do$|
\.
pho$|^line$|^ftdrill/ig
.
test
(
file
.
name
)
},
"type"
:
"Gerber274x"
,
"format"
:
"Gerber274x_4"
...
...
@@ -885,8 +887,8 @@
"valid"
:
function
(
props
){
var
file
=
props
.
file
;
return
/.+
\.
ncd$/ig
.
test
(
file
.
name
)
||
/.+
\.
d
\d
+$/ig
.
test
(
file
.
name
)
},
"type"
:
"Excellon2"
,
},
"type"
:
"Excellon2"
,
"format"
:
"Excellon2_5"
},
{
...
...
@@ -905,19 +907,19 @@
{
"orig_name"
:
[
"osp-bottom
\\
.pho"
,
"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"
:
[
"soldermask1|soldermask-top"
,
"top-solder-mask
\\
.pho"
,
"soldermasktop"
,
"sm_top"
],
"tl_name"
:
"sm_top"
},
{
"orig_name"
:
[
"soldermask2|soldermask-bottom"
,
"bottom-solder-mask
\\
.pho"
,
"soldermaskbottom"
,
"sm_bot"
],
"tl_name"
:
"sm_botm"
},
{
"orig_name"
:
[
"
top
\\
.pho"
,
"^top$"
,
"layer
top"
],
"tl_name"
:
"top"
},
{
"orig_name"
:
[
"^
lay(
\\
d+)"
,
"layer(
\\
d+)
\\
.gdo"
,
"layer_
(
\\
d+)"
],
"tl_name"
:
"l_($1)"
},
{
"orig_name"
:
[
"^
bottom
\\
.pho$"
,
"^bottom$"
,
"layer
bottom"
],
"tl_name"
:
"bottom"
},
{
"orig_name"
:
[
"^drill(
\\
d+)-(
\\
d+)$"
,
"^d(
\\
d+)-(
\\
d+)$"
],
"tl_name"
:
"d_($1)-($2)"
},
{
"orig_name"
:
[
"
topsoldermask|
soldermask1|soldermask-top"
,
"top-solder-mask
\\
.pho"
,
"soldermasktop"
,
"sm_top"
],
"tl_name"
:
"sm_top"
},
{
"orig_name"
:
[
"
bottomsoldermask|
soldermask2|soldermask-bottom"
,
"bottom-solder-mask
\\
.pho"
,
"soldermaskbottom"
,
"sm_bot"
],
"tl_name"
:
"sm_botm"
},
{
"orig_name"
:
[
"
^m1
\\
.gbr$"
,
"top
\\
.pho"
,
"^top$"
,
"lay(?:er)?
top"
],
"tl_name"
:
"top"
},
{
"orig_name"
:
[
"^
m(
\\
d+)
\\
.gbr$"
,
"^lay(
\\
d+)"
,
"layer(
\\
d+)
\\
.gdo"
,
"layer(?:_)?
(
\\
d+)"
],
"tl_name"
:
"l_($1)"
},
{
"orig_name"
:
[
"^
mbot
\\
.gbr$"
,
"^bottom
\\
.pho$"
,
"^bottom$"
,
"lay(?:er)?
bottom"
],
"tl_name"
:
"bottom"
},
{
"orig_name"
:
[
"^dr
(?:l)?(
\\
d+)-(
\\
d+)
\\
.drl"
,
"^dr
ill(
\\
d+)-(
\\
d+)$"
,
"^d(
\\
d+)-(
\\
d+)$"
],
"tl_name"
:
"d_($1)-($2)"
},
{
"orig_name"
:
[
"^drill$"
],
"tl_name"
:
"drill"
},
{
"orig_name"
:
[
"
\\
.rou$"
,
"^rout$"
],
"tl_name"
:
"rout"
},
{
"orig_name"
:
"fab.art"
,
"tl_name"
:
"fab.art"
},
{
"orig_name"
:
[
"fab
\\
.art|fab
\\
.gbr"
]
,
"tl_name"
:
"fab.art"
},
{
"orig_name"
:
[
"pcb-set
\\
.gdo"
,
"^pcb-set
\\
.pho$"
,
"^pcb-set$"
,
"^array$"
],
"tl_name"
:
"array"
},
{
"orig_name"
:
[
"^outline"
],
"tl_name"
:
"outline"
},
{
"orig_name"
:
[
"au
_mask-bottom
\\
.gdo"
,
"au_mask_bottom
\\
.gdo
"
,
"enig_top"
],
"tl_name"
:
"enig_top"
},
{
"orig_name"
:
[
"au
_mask-top
\\
.gdo"
,
"au_mask_top
\\
.gdo
"
,
"enig_bot"
],
"tl_name"
:
"enig_bot"
},
{
"orig_name"
:
[
"au
[_-]mask[_-]bot
"
,
"enig_top"
],
"tl_name"
:
"enig_top"
},
{
"orig_name"
:
[
"au
[_-]mask[_-]top
"
,
"enig_bot"
],
"tl_name"
:
"enig_bot"
},
{
"orig_name"
:
[
"cavitytop"
,
"cavity_top"
],
"tl_name"
:
"cavity_top"
},
{
"orig_name"
:
[
"cavitybottom"
,
"cavity_bot"
],
"tl_name"
:
"cavity_bot"
},
],
...
...
config_ats.js
deleted
100644 → 0
View file @
c52da11a
(
function
(){
return
{
"formats"
:
{
"ODB"
:
{},
"ODB_1"
:
{
"comments"
:
""
,
"arrStep"
:
"stp"
,
"isMerge"
:
"yes"
},
"Gerber274x_1"
:
{
"nf1"
:
3
,
"nf2"
:
4
,
"units"
:
"mm"
,
"zeroes"
:
"leading"
,
"decimal"
:
"no"
,
"nf_comp"
:
0
,
"break_sr"
:
"yes"
,
"data_type"
:
"ascii"
,
"separator"
:
"*"
,
"threshold"
:
200
,
"drill_only"
:
"no"
,
"multiplier"
:
1
,
"resolution"
:
3
,
"tool_units"
:
"inch"
,
"coordinates"
:
"absolute"
,
"merge_by_rule"
:
"no"
,
"signed_coords"
:
"no"
,
"text_line_width"
:
0.0024
},
"Gerber274x_2"
:
{
"nf1"
:
3
,
"nf2"
:
5
,
"units"
:
"inch"
,
"zeroes"
:
"leading"
,
"decimal"
:
"no"
,
"nf_comp"
:
0
,
"break_sr"
:
"yes"
,
"data_type"
:
"ascii"
,
"separator"
:
"*"
,
"threshold"
:
200
,
"drill_only"
:
"no"
,
"multiplier"
:
1
,
"resolution"
:
3
,
"tool_units"
:
"inch"
,
"coordinates"
:
"absolute"
,
"merge_by_rule"
:
"no"
,
"signed_coords"
:
"no"
,
"text_line_width"
:
0.0024
},
"Gerber274x_3"
:
{
"nf1"
:
3
,
"nf2"
:
5
,
"units"
:
"mm"
,
"zeroes"
:
"leading"
,
"decimal"
:
"no"
,
"nf_comp"
:
0
,
"break_sr"
:
"yes"
,
"data_type"
:
"ascii"
,
"separator"
:
"*"
,
"threshold"
:
200
,
"drill_only"
:
"no"
,
"multiplier"
:
1
,
"resolution"
:
3
,
"tool_units"
:
"inch"
,
"coordinates"
:
"absolute"
,
"merge_by_rule"
:
"no"
,
"signed_coords"
:
"no"
,
"text_line_width"
:
0.0024
},
"Gerber274x_4"
:
{
"nf1"
:
2
,
"nf2"
:
3
,
"units"
:
"mm"
,
"zeroes"
:
"none"
,
"decimal"
:
"no"
,
"nf_comp"
:
0
,
"break_sr"
:
"yes"
,
"data_type"
:
"ascii"
,
"separator"
:
"*"
,
"threshold"
:
200
,
"drill_only"
:
"no"
,
"multiplier"
:
1
,
"resolution"
:
3
,
"tool_units"
:
"mm"
,
"coordinates"
:
"absolute"
,
"merge_by_rule"
:
"no"
,
"signed_coords"
:
"no"
,
"text_line_width"
:
0.0024
},
"Gerber274x_5"
:
{
"nf1"
:
2
,
"nf2"
:
3
,
"units"
:
"mm"
,
"zeroes"
:
"leading"
,
"decimal"
:
"no"
,
"nf_comp"
:
0
,
"break_sr"
:
"yes"
,
"data_type"
:
"ascii"
,
"separator"
:
"*"
,
"threshold"
:
200
,
"drill_only"
:
"no"
,
"multiplier"
:
1
,
"resolution"
:
3
,
"tool_units"
:
"mm"
,
"coordinates"
:
"absolute"
,
"merge_by_rule"
:
"no"
,
"signed_coords"
:
"no"
,
"text_line_width"
:
0.0024
},
"Excellon1_1"
:{
"nf1"
:
3
,
"nf2"
:
0
,
"units"
:
"mm"
,
"zeroes"
:
"leading"
,
"decimal"
:
"yes"
,
"nf_comp"
:
0
,
"break_sr"
:
"yes"
,
"data_type"
:
"ascii"
,
"separator"
:
"nl"
,
"threshold"
:
200
,
"drill_only"
:
"no"
,
"multiplier"
:
1
,
"resolution"
:
3
,
"tool_units"
:
"mm"
,
"coordinates"
:
"absolute"
,
"merge_by_rule"
:
"no"
,
"signed_coords"
:
"no"
,
"text_line_width"
:
0.0024
},
"Excellon2_1"
:
{
"nf1"
:
3
,
"nf2"
:
5
,
"units"
:
"mm"
,
"zeroes"
:
"leading"
,
"decimal"
:
"no"
,
"nf_comp"
:
0
,
"break_sr"
:
"yes"
,
"data_type"
:
"ascii"
,
"separator"
:
"nl"
,
"threshold"
:
200
,
"drill_only"
:
"no"
,
"multiplier"
:
1
,
"resolution"
:
3
,
"tool_units"
:
"mm"
,
"coordinates"
:
"absolute"
,
"merge_by_rule"
:
"no"
,
"signed_coords"
:
"no"
,
"text_line_width"
:
0.0024
},
"Excellon2_2"
:
{
"nf1"
:
2
,
"nf2"
:
3
,
"units"
:
"inch"
,
"zeroes"
:
"leading"
,
"decimal"
:
"no"
,
"nf_comp"
:
0
,
"break_sr"
:
"yes"
,
"data_type"
:
"ascii"
,
"separator"
:
"nl"
,
"threshold"
:
200
,
"drill_only"
:
"no"
,
"multiplier"
:
1
,
"resolution"
:
3
,
"tool_units"
:
"inch"
,
"coordinates"
:
"absolute"
,
"merge_by_rule"
:
"no"
,
"signed_coords"
:
"no"
,
"text_line_width"
:
0.0024
},
"Excellon2_3"
:
{
"nf1"
:
2
,
"nf2"
:
5
,
"units"
:
"inch"
,
"zeroes"
:
"trailing"
,
"decimal"
:
"no"
,
"nf_comp"
:
0
,
"break_sr"
:
"yes"
,
"data_type"
:
"ascii"
,
"separator"
:
"nl"
,
"threshold"
:
200
,
"drill_only"
:
"no"
,
"multiplier"
:
1
,
"resolution"
:
3
,
"tool_units"
:
"mm"
,
"coordinates"
:
"absolute"
,
"merge_by_rule"
:
"no"
,
"signed_coords"
:
"no"
,
"text_line_width"
:
0.0024
},
"Excellon2_4"
:
{
"nf1"
:
2
,
"nf2"
:
4
,
"units"
:
"inch"
,
"zeroes"
:
"trailing"
,
"decimal"
:
"no"
,
"nf_comp"
:
0
,
"break_sr"
:
"yes"
,
"data_type"
:
"ascii"
,
"separator"
:
"nl"
,
"threshold"
:
200
,
"drill_only"
:
"no"
,
"multiplier"
:
1
,
"resolution"
:
3
,
"tool_units"
:
"inch"
,
"coordinates"
:
"absolute"
,
"merge_by_rule"
:
"no"
,
"signed_coords"
:
"no"
,
"text_line_width"
:
0.0024
},
"Excellon2_5"
:
{
"nf1"
:
2
,
"nf2"
:
3
,
"units"
:
"mm"
,
"zeroes"
:
"leading"
,
"decimal"
:
"no"
,
"nf_comp"
:
0
,
"break_sr"
:
"yes"
,
"data_type"
:
"ascii"
,
"separator"
:
"nl"
,
"threshold"
:
200
,
"drill_only"
:
"no"
,
"multiplier"
:
1
,
"resolution"
:
3
,
"tool_units"
:
"mm"
,
"coordinates"
:
"absolute"
,
"merge_by_rule"
:
"no"
,
"signed_coords"
:
"no"
,
"text_line_width"
:
0.0024
},
"Excellon2_6"
:
{
"nf1"
:
3
,
"nf2"
:
4
,
"units"
:
"mm"
,
"zeroes"
:
"leading"
,
"decimal"
:
"no"
,
"nf_comp"
:
0
,
"break_sr"
:
"yes"
,
"data_type"
:
"ascii"
,
"separator"
:
"nl"
,
"threshold"
:
200
,
"drill_only"
:
"no"
,
"multiplier"
:
1
,
"resolution"
:
3
,
"tool_units"
:
"mm"
,
"coordinates"
:
"absolute"
,
"merge_by_rule"
:
"no"
,
"signed_coords"
:
"no"
,
"text_line_width"
:
0.0024
},
"Excellon2_7"
:
{
"nf1"
:
3
,
"nf2"
:
4
,
"units"
:
"inch"
,
"zeroes"
:
"none"
,
"decimal"
:
"no"
,
"nf_comp"
:
0
,
"break_sr"
:
"yes"
,
"data_type"
:
"ascii"
,
"separator"
:
"nl"
,
"threshold"
:
200
,
"drill_only"
:
"no"
,
"multiplier"
:
1
,
"resolution"
:
3
,
"tool_units"
:
"inch"
,
"coordinates"
:
"absolute"
,
"merge_by_rule"
:
"no"
,
"signed_coords"
:
"no"
,
"text_line_width"
:
0.0024
},
"Excellon2_8"
:
{
"nf1"
:
2
,
"nf2"
:
5
,
"units"
:
"inch"
,
"zeroes"
:
"none"
,
"decimal"
:
"no"
,
"nf_comp"
:
0
,
"break_sr"
:
"yes"
,
"data_type"
:
"ascii"
,
"separator"
:
"nl"
,
"threshold"
:
200
,
"drill_only"
:
"no"
,
"multiplier"
:
1
,
"resolution"
:
3
,
"tool_units"
:
"inch"
,
"coordinates"
:
"absolute"
,
"merge_by_rule"
:
"no"
,
"signed_coords"
:
"no"
,
"text_line_width"
:
0.0024
},
"Excellon2_9"
:
{
"nf1"
:
3
,
"nf2"
:
6
,
"units"
:
"inch"
,
"zeroes"
:
"leading"
,
"decimal"
:
"no"
,
"nf_comp"
:
0
,
"break_sr"
:
"yes"
,
"data_type"
:
"ascii"
,
"separator"
:
"nl"
,
"threshold"
:
200
,
"drill_only"
:
"no"
,
"multiplier"
:
1
,
"resolution"
:
3
,
"tool_units"
:
"inch"
,
"coordinates"
:
"absolute"
,
"merge_by_rule"
:
"no"
,
"signed_coords"
:
"no"
,
"text_line_width"
:
0.0024
},
"IPC356_1"
:
{
"nf1"
:
2
,
"nf2"
:
4
,
"units"
:
"inch"
,
"zeroes"
:
"none"
,
"decimal"
:
"no"
,
"nf_comp"
:
0
,
"break_sr"
:
"yes"
,
"data_type"
:
"ascii"
,
"separator"
:
"*"
,
"threshold"
:
200
,
"drill_only"
:
"no"
,
"multiplier"
:
1
,
"resolution"
:
3
,
"tool_units"
:
"inch"
,
"coordinates"
:
"absolute"
,
"merge_by_rule"
:
"no"
,
"signed_coords"
:
"no"
,
"text_line_width"
:
0.0024
}
},
"customer"
:
{
"2171"
:
{
"step"
:
"cad"
,
"rules"
:
[
{
"valid"
:
function
(
props
){
var
file
=
props
.
file
;
return
/.+
\.
tgz$/ig
.
test
(
file
.
name
)
},
"type"
:
"ODB"
,
"format"
:
"ODB"
},
{
"valid"
:
function
(
props
){
var
file
=
props
.
file
;
return
/.+
\.
art$/ig
.
test
(
file
.
name
)
},
"type"
:
"Gerber274x"
,
"format"
:
"Gerber274x_2"
,
"format_params"
:
function
(
props
){
var
params
=
props
.
params
if
(
params
.
art_param
){
var
leading
=
params
.
art_param
[
"SUPPRESS_LEAD_ZEROES"
]
var
trailing
=
params
.
art_param
[
"SUPPRESS_TRAIL_ZEROES"
]
var
zeroes
=
"none"
if
(
/yes/ig
.
test
(
leading
)){
zeroes
=
"leading"
}
if
(
/yes/ig
.
test
(
trailing
)){
zeroes
=
"trailing"
}
var
nf1
,
nf2
if
(
params
.
art_param
.
hasOwnProperty
(
"FORMAT"
)){
var
tmp
=
params
.
art_param
[
"FORMAT"
].
split
(
"."
)
if
(
/
\d
+/ig
.
test
(
tmp
[
0
])){
nf1
=
Number
(
tmp
[
0
])}
if
(
/
\d
+/ig
.
test
(
tmp
[
1
])){
nf2
=
Number
(
tmp
[
1
])}
}
return
{
"nf1"
:
nf1
||
3
,
"nf2"
:
nf2
||
5
,
"units"
:
/
METRIC
|
MM
/
ig
.
test
(
params
.
art_param
[
"OUTPUT_UNITS"
])?
"mm"
:
"inch"
,
"zeroes"
:
zeroes
,
"decimal"
:
"no"
,
"nf_comp"
:
0
,
"break_sr"
:
"yes"
,
"data_type"
:
"ascii"
,
"separator"
:
"*"
,
"threshold"
:
200
,
"drill_only"
:
"no"
,
"multiplier"
:
1
,
"resolution"
:
3
,
"tool_units"
:
/
METRIC
|
MM
/
ig
.
test
(
params
.
art_param
[
"OUTPUT_UNITS"
])?
"mm"
:
"inch"
,
"coordinates"
:
"absolute"
,
"merge_by_rule"
:
"no"
,
"signed_coords"
:
"no"
,
"text_line_width"
:
0.0024
}
}
}
},
{
"valid"
:
function
(
props
){
var
file
=
props
.
file
;
return
/.+
\.
drl$/ig
.
test
(
file
.
name
)
},
"type"
:
"Excellon2"
,
"format"
:
"Excellon2_1"
,
"format_params"
:
function
(
props
){
var
params
=
props
.
params
if
(
params
.
nc_param
){
var
leading
=
params
.
nc_param
[
"SUPPRESS_LEAD_ZEROES"
]
var
trailing
=
params
.
nc_param
[
"SUPPRESS_TRAIL_ZEROES"
]
var
zeroes
=
"none"
if
(
/yes/ig
.
test
(
leading
)){
zeroes
=
"leading"
}
if
(
/yes/ig
.
test
(
trailing
)){
zeroes
=
"trailing"
}
return
{
"nf1"
:
params
.
nc_param
[
"INTEGER_PLACES"
]?
Number
(
params
.
nc_param
[
"INTEGER_PLACES"
])
:
3
,
"nf2"
:
params
.
nc_param
[
"DECIMAL_PLACES"
]?
Number
(
params
.
nc_param
[
"DECIMAL_PLACES"
])
:
5
,
"units"
:
/
METRIC
|
MM
/
ig
.
test
(
params
.
nc_param
[
"OUTPUT_UNITS"
])?
"mm"
:
"inch"
,
"zeroes"
:
zeroes
,
"decimal"
:
"no"
,
"nf_comp"
:
0
,
"break_sr"
:
"yes"
,
"data_type"
:
"ascii"
,
"separator"
:
"nl"
,
"threshold"
:
200
,
"drill_only"
:
"no"
,
"multiplier"
:
1
,
"resolution"
:
3
,
"tool_units"
:
/
METRIC
|
MM
/
ig
.
test
(
params
.
nc_param
[
"OUTPUT_UNITS"
])?
"mm"
:
"inch"
,
"coordinates"
:
params
.
nc_param
[
"COORDINATES"
]?
params
.
nc_param
[
"COORDINATES"
].
toLowerCase
()
:
"absolute"
,
"merge_by_rule"
:
"no"
,
"signed_coords"
:
"no"
,
"text_line_width"
:
0.0024
}
}
}
},
{
"valid"
:
function
(
props
){
var
file
=
props
.
file
;
return
/.+
\.
drd$/ig
.
test
(
file
.
name
)
},
"type"
:
"Excellon1"
,
"format"
:
"Excellon1_1"
},
{
"valid"
:
function
(
props
){
var
file
=
props
.
file
;
return
/.+
\.
phd$/ig
.
test
(
file
.
name
)
},
"type"
:
"Gerber274x"
,
"format"
:
"Gerber274x_1"
}
],
"tl_name"
:
[
{
"orig_name"
:
[
"top_enig"
,
"top-enig"
,
"enig_top"
],
"tl_name"
:
"enig_top"
},
{
"orig_name"
:
[
"bot_enig"
,
"bot-enig"
,
"enig_bot"
],
"tl_name"
:
"enig_bot"
},
{
"orig_name"
:
[
"top_paste"
,
"^spt$"
,
"^past_top$"
],
"tl_name"
:
"past_top"
},
{
"orig_name"
:
[
"bottom_paste"
,
"^spb$"
,
"^past_botm$"
],
"tl_name"
:
"past_botm"
},
{
"orig_name"
:
[
"top_silk"
,
"^sst$"
,
"^silk_top$"
],
"tl_name"
:
"silk_top"
},
{
"orig_name"
:
[
"bottom_silk"
,
"^ssb$"
,
"^silk_bot$"
],
"tl_name"
:
"silk_bot"
},
{
"orig_name"
:
[
"top_solder"
,
"^smt$"
,
"^sm_top$"
],
"tl_name"
:
"sm_top"
},
{
"orig_name"
:
[
"bottom_solder"
,
"^smb$"
,
"^sm_botm$"
],
"tl_name"
:
"sm_botm"
},
{
"orig_name"
:
"^top$"
,
"tl_name"
:
"top"
},
{
"orig_name"
:
"^drill$"
,
"tl_name"
:
"drill"
},
{
"orig_name"
:
[
"^board_outline$"
,
"outline.art"
,
"^outline$"
],
"tl_name"
:
"outline"
},
{
"orig_name"
:
[
"^rout$"
,
"
\\
.rou$"
],
"tl_name"
:
"rout"
},
{
"orig_name"
:
"^bottom$"
,
"tl_name"
:
"bottom"
},
{
"orig_name"
:
[
"^l(
\\
d+)"
,
"^isl(
\\
d+)$"
,
"^layer_(
\\
d+)$"
],
"tl_name"
:
"l_($1)"
},
{
"orig_name"
:
[
"_isl(
\\
d+)_isl(
\\
d+)"
,
"d(
\\
d+)-(
\\
d+)"
],
"tl_name"
:
"d_($1)-($2)"
},
{
"orig_name"
:
[
"_top_isl(
\\
d+)"
],
"tl_name"
:
"d_1-($1)"
},
{
"orig_name"
:
[
"_isl(
\\
d+)_bottom"
],
"tl_name"
:
"d_($1)-($1+1)"
}
]
},
"Yucca"
:
{
"step"
:
"cad"
,
"rules"
:
[
{
"valid"
:
function
(
props
){
var
file
=
props
.
file
;
return
/.+
\.
tgz$/ig
.
test
(
file
.
name
)
},
"type"
:
"ODB"
,
"format"
:
"ODB"
},
{
"valid"
:
function
(
props
){
var
file
=
props
.
file
;
return
/.+
\.
ipc$/ig
.
test
(
file
.
name
)
},
"type"
:
"IPC356"
,
"format"
:
"IPC356_1"
},
{
"valid"
:
function
(
props
){
var
file
=
props
.
file
;
return
/.+
\.
rou$/ig
.
test
(
file
.
name
)
},
"type"
:
"Excellon2"
,
"format"
:
"Excellon2_3"
},
{
"valid"
:
function
(
props
){
var
file
=
props
.
file
;
return
/.+
\.
art$/ig
.
test
(
file
.
name
)
},
"type"
:
"Gerber274x"
,
"format"
:
"Gerber274x_2"
,
"format_params"
:
function
(
props
){
var
params
=
props
.
params
if
(
params
.
art_param
){
var
leading
=
params
.
art_param
[
"SUPPRESS_LEAD_ZEROES"
]
var
trailing
=
params
.
art_param
[
"SUPPRESS_TRAIL_ZEROES"
]
var
zeroes
=
"none"
if
(
/yes/ig
.
test
(
leading
)){
zeroes
=
"leading"
}
if
(
/yes/ig
.
test
(
trailing
)){
zeroes
=
"trailing"
}
var
nf1
,
nf2
if
(
params
.
art_param
.
hasOwnProperty
(
"FORMAT"
)){
var
tmp
=
params
.
art_param
[
"FORMAT"
].
split
(
"."
)
if
(
/
\d
+/ig
.
test
(
tmp
[
0
])){
nf1
=
Number
(
tmp
[
0
])}
if
(
/
\d
+/ig
.
test
(
tmp
[
1
])){
nf2
=
Number
(
tmp
[
1
])}
}
return
{
"nf1"
:
nf1
||
3
,
"nf2"
:
nf2
||
5
,
"units"
:
/
METRIC
|
MM
/
ig
.
test
(
params
.
art_param
[
"OUTPUT_UNITS"
])?
"mm"
:
"inch"
,
"zeroes"
:
zeroes
,
"decimal"
:
"no"
,
"nf_comp"
:
0
,
"break_sr"
:
"yes"
,
"data_type"
:
"ascii"
,
"separator"
:
"*"
,
"threshold"
:
200
,
"drill_only"
:
"no"
,
"multiplier"
:
1
,
"resolution"
:
3
,
"tool_units"
:
/
METRIC
|
MM
/
ig
.
test
(
params
.
art_param
[
"OUTPUT_UNITS"
])?
"mm"
:
"inch"
,
"coordinates"
:
"absolute"
,
"merge_by_rule"
:
"no"
,
"signed_coords"
:
"no"
,
"text_line_width"
:
0.0024
}
}
}
},
{
"valid"
:
function
(
props
){
var
file
=
props
.
file
;
return
/.+
\.
drl$/ig
.
test
(
file
.
name
)
},
"type"
:
"Excellon2"
,
"format"
:
"Excellon2_1"
,
"format_params"
:
function
(
props
){
var
params
=
props
.
params
if
(
params
.
nc_param
){
var
leading
=
params
.
nc_param
[
"SUPPRESS_LEAD_ZEROES"
]
var
trailing
=
params
.
nc_param
[
"SUPPRESS_TRAIL_ZEROES"
]
var
zeroes
=
"none"
if
(
/yes/ig
.
test
(
leading
)){
zeroes
=
"leading"
}
if
(
/yes/ig
.
test
(
trailing
)){
zeroes
=
"trailing"
}
return
{
"nf1"
:
params
.
nc_param
[
"INTEGER_PLACES"
]?
Number
(
params
.
nc_param
[
"INTEGER_PLACES"
])
:
3
,
"nf2"
:
params
.
nc_param
[
"DECIMAL_PLACES"
]?
Number
(
params
.
nc_param
[
"DECIMAL_PLACES"
])
:
5
,
"units"
:
/
METRIC
|
MM
/
ig
.
test
(
params
.
nc_param
[
"OUTPUT_UNITS"
])?
"mm"
:
"inch"
,
"zeroes"
:
zeroes
,
"decimal"
:
"no"
,
"nf_comp"
:
0
,
"break_sr"
:
"yes"
,
"data_type"
:
"ascii"
,
"separator"
:
"nl"
,
"threshold"
:
200
,
"drill_only"
:
"no"
,
"multiplier"
:
1
,
"resolution"
:
3
,
"tool_units"
:
/
METRIC
|
MM
/
ig
.
test
(
params
.
nc_param
[
"OUTPUT_UNITS"
])?
"mm"
:
"inch"
,
"coordinates"
:
params
.
nc_param
[
"COORDINATES"
]?
params
.
nc_param
[
"COORDINATES"
].
toLowerCase
()
:
"absolute"
,
"merge_by_rule"
:
"no"
,
"signed_coords"
:
"no"
,
"text_line_width"
:
0.0024
}
}
}
}
],
"tl_name"
:
[
{
"orig_name"
:
[
"^pm_top"
,
"paste.pri"
,
"assytop
\\
.art"
,
"past_top"
,
"paste_top"
],
"tl_name"
:
"past_top"
},
{
"orig_name"
:
[
"^pm_bot"
,
"paste.sec"
,
"assybot
\\
.art"
,
"past_bot"
,
"paste_bot"
],
"tl_name"
:
"past_botm"
},
{
"orig_name"
:
[
"silk.pri"
,
"pleg
\\
.art"
,
"^ss_top"
,
"silk_top"
],
"tl_name"
:
"silk_top"
},
{
"orig_name"
:
[
"silk.sec"
,
"sleg
\\
.art"
,
"^ss_bot"
,
"silk_bot"
],
"tl_name"
:
"silk_bot"
},
{
"orig_name"
:
[
"mask.top
\\
.art"
,
"mask.pri
\\
.art"
,
"psm
\\
.art"
,
"sm_top"
],
"tl_name"
:
"sm_top"
},
{
"orig_name"
:
[
"mask.bot
\\
.art"
,
"mask.sec
\\
.art"
,
"ssm
\\
.art"
,
"sm_bot"
],
"tl_name"
:
"sm_botm"
},
{
"orig_name"
:
[
"^top$"
,
"^top.art$"
],
"tl_name"
:
"top"
},
{
"orig_name"
:
[
"
\\
.l(
\
d+)$"
,
"^l(
\\
d+).*
\\
.art$"
,
"^0?(
\\
d+)_.*
\\
.art$"
,
"^l(
\\
d+)
\\
.art$"
,
"^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+)-(
\\
d+)$"
,
"-(
\\
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"
},
{
"orig_name"
:
[
"outline"
],
"tl_name"
:
"outline"
},
{
"orig_name"
:
[
"^pst
\\
.art$"
,
"top-enig"
,
"enig_top"
],
"tl_name"
:
"enig_top"
},
{
"orig_name"
:
[
"^sst
\\
.art$"
,
"bot-enig"
,
"enig_bot"
],
"tl_name"
:
"enig_bot"
}
],
"mergerule"
:
{
profile
:[
"past_top"
]
},
"extra"
:
[
{
"verification"
:
function
(
info
){
if
(
!
info
.
type
){
return
false
}
return
/gerber/ig
.
test
(
info
.
type
)
},
"fn"
:
function
(
props
){
var
fileInfo
=
props
.
fileInfo
;
var
step
=
props
.
step
;
fileInfo
.
forEach
(
function
(
item
){
var
layer
=
item
.
file
.
name
.
toLowerCase
().
split
(
" "
).
join
(
"-"
)
var
path
=
item
.
file
.
path
var
filectx
=
fs
.
readFile
(
path
)
var
tmp
=
filectx
.
match
(
/Holesize
\d\.
=
[\d\.]
+ Tolerance =
[\S]
+
[\S]
+
[\S]
+ Quantity =
\d
+
\n
/igm
)
if
(
tmp
&&
tmp
.
length
)
{
var
res
=
tmp
.
map
(
function
(
v
,
i
)
{
var
tmp2
=
/Holesize
\d\.
=
([\d\.]
+
)
Tolerance =
([\S]
+
)
([\S]
+
)
([\S]
+
)
Quantity =
\d
+
\n
/igm
.
exec
(
v
);
return
{
size
:
tmp2
[
1
],
tolerance
:
tmp2
[
2
],
type
:
tmp2
[
3
],
unit
:
tmp2
[
4
],
row
:
i
+
1
}
})
// [{"size":"0.100300","tolerance":"+0.020000/-0.020000","type":"PLATED","unit":"MM","row":1}]
GEN
.
units
({
type
:
"mm"
})
var
toolsInfo
=
GEN
.
getTool
({
job
:
job
,
step
:
step
,
layer
:
layer
,
units
:
"mm"
})
GEN
.
COM
(
"tools_show,layer="
+
layer
)
// {"1":{"count":"01156","num":"1","type":"plated","min_tol":"0","max_tol":"0","finish_size":"1","drill_size":"1","slot_len":"0","type2":"standard","shape":"hole","bit":0}}
GEN
.
COM
(
"tools_tab_reset"
)
var
alltype
=
{
plated
:
"plate"
,
non_plated
:
"nplate"
,
laser
:
"via"
,
via
:
"via"
}
Object
.
keys
(
toolsInfo
).
forEach
(
function
(
row
){
var
info
=
toolsInfo
[
row
];
var
numberrow
=
row
-
1
;
var
type
=
res
[
numberrow
]?
res
[
numberrow
].
type
.
toLowerCase
()
:
info
.
type
.
toLowerCase
();
var
min_tol
=
res
[
numberrow
]?
Math
.
abs
(
res
[
numberrow
].
tolerance
.
split
(
"/"
)[
1
]
*
1000
):
info
.
min_tol
;
var
max_tol
=
res
[
numberrow
]?
Math
.
abs
(
res
[
numberrow
].
tolerance
.
split
(
"/"
)[
0
]
*
1000
)
:
info
.
max_tol
;
var
drill_size
=
res
[
numberrow
]?
res
[
numberrow
].
size
*
1000
:
info
.
drill_size
;
GEN
.
COM
(
"tools_tab_add,num="
+
row
+
",shape="
+
info
.
shape
+
",type="
+
alltype
[
type
]
+
",min_tol="
+
min_tol
+
",max_tol="
+
max_tol
+
",bit=,finish_size="
+
drill_size
+
",drill_size="
+
drill_size
);
})
GEN
.
COM
(
"tools_set,layer="
+
layer
+
",thickness=0,user_params=,slots=by_length"
)
// {"layer":"gfp2_1216_lte_rl03_am_m1610201_r01-bl-2-3-laser.drl",
// "info":[{"size":"0.090300","tolerance":"+0.020000/-0.020000","type":"PLATED","unit":"MM","row":1}]}
}
})
}
}
]
},
"New_data"
:
{
"step"
:
"cad"
,
"rules"
:
[
{
"valid"
:
function
(
props
){
var
file
=
props
.
file
;
return
/.+
\.
tgz$/ig
.
test
(
file
.
name
)
},
"type"
:
"ODB"
,
"format"
:
"ODB"
},
{
"valid"
:
function
(
props
){
var
file
=
props
.
file
;
return
/.+
\.
art$/ig
.
test
(
file
.
name
)
},
"type"
:
"Gerber274x"
,
"format"
:
"Gerber274x_2"
,
"format_params"
:
function
(
props
){
var
params
=
props
.
params
if
(
params
.
art_param
){
var
leading
=
params
.
art_param
[
"SUPPRESS_LEAD_ZEROES"
]
var
trailing
=
params
.
art_param
[
"SUPPRESS_TRAIL_ZEROES"
]
var
zeroes
=
"none"
if
(
/yes/ig
.
test
(
leading
)){
zeroes
=
"leading"
}
if
(
/yes/ig
.
test
(
trailing
)){
zeroes
=
"trailing"
}
var
nf1
,
nf2
if
(
params
.
art_param
.
hasOwnProperty
(
"FORMAT"
)){
var
tmp
=
params
.
art_param
[
"FORMAT"
].
split
(
"."
)
if
(
/
\d
+/ig
.
test
(
tmp
[
0
])){
nf1
=
Number
(
tmp
[
0
])}
if
(
/
\d
+/ig
.
test
(
tmp
[
1
])){
nf2
=
Number
(
tmp
[
1
])}
}
return
{
"nf1"
:
nf1
||
3
,
"nf2"
:
nf2
||
5
,
"units"
:
/
METRIC
|
MM
/
ig
.
test
(
params
.
art_param
[
"OUTPUT_UNITS"
])?
"mm"
:
"inch"
,
"zeroes"
:
zeroes
,
"decimal"
:
"no"
,
"nf_comp"
:
0
,
"break_sr"
:
"yes"
,
"data_type"
:
"ascii"
,
"separator"
:
"*"
,
"threshold"
:
200
,
"drill_only"
:
"no"
,
"multiplier"
:
1
,
"resolution"
:
3
,
"tool_units"
:
/
METRIC
|
MM
/
ig
.
test
(
params
.
art_param
[
"OUTPUT_UNITS"
])?
"mm"
:
"inch"
,
"coordinates"
:
"absolute"
,
"merge_by_rule"
:
"no"
,
"signed_coords"
:
"no"
,
"text_line_width"
:
0.0024
}
}
}
},
{
"valid"
:
function
(
props
){
var
file
=
props
.
file
;
return
/.+
\.
drl$/ig
.
test
(
file
.
name
)
},
"type"
:
"Excellon2"
,
"format"
:
"Excellon2_1"
,
"format_params"
:
function
(
props
){
var
params
=
props
.
params
if
(
params
.
nc_param
){
var
leading
=
params
.
nc_param
[
"SUPPRESS_LEAD_ZEROES"
]
var
trailing
=
params
.
nc_param
[
"SUPPRESS_TRAIL_ZEROES"
]
var
zeroes
=
"none"
if
(
/yes/ig
.
test
(
leading
)){
zeroes
=
"leading"
}
if
(
/yes/ig
.
test
(
trailing
)){
zeroes
=
"trailing"
}
return
{
"nf1"
:
params
.
nc_param
[
"INTEGER_PLACES"
]?
Number
(
params
.
nc_param
[
"INTEGER_PLACES"
])
:
3
,
"nf2"
:
params
.
nc_param
[
"DECIMAL_PLACES"
]?
Number
(
params
.
nc_param
[
"DECIMAL_PLACES"
])
:
5
,
"units"
:
/
METRIC
|
MM
/
ig
.
test
(
params
.
nc_param
[
"OUTPUT_UNITS"
])?
"mm"
:
"inch"
,
"zeroes"
:
zeroes
,
"decimal"
:
"no"
,
"nf_comp"
:
0
,
"break_sr"
:
"yes"
,
"data_type"
:
"ascii"
,
"separator"
:
"nl"
,
"threshold"
:
200
,
"drill_only"
:
"no"
,
"multiplier"
:
1
,
"resolution"
:
3
,
"tool_units"
:
/
METRIC
|
MM
/
ig
.
test
(
params
.
nc_param
[
"OUTPUT_UNITS"
])?
"mm"
:
"inch"
,
"coordinates"
:
params
.
nc_param
[
"COORDINATES"
]?
params
.
nc_param
[
"COORDINATES"
].
toLowerCase
()
:
"absolute"
,
"merge_by_rule"
:
"no"
,
"signed_coords"
:
"no"
,
"text_line_width"
:
0.0024
}
}
}
}
],
"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"
:
[
"_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"
:
[
"_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"
:
[
"_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"
:
[
"^nc_drill$"
,
"^drill$"
],
"tl_name"
:
"drill"
},
{
"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"
},
{
"orig_name"
:
"top-enig"
,
"tl_name"
:
"top-enig"
},
{
"orig_name"
:
"bot-enig"
,
"tl_name"
:
"bot-enig"
},
{
"orig_name"
:
"fab_page2"
,
"tl_name"
:
"fab_page2"
},
{
"orig_name"
:
[
"_d(
\\
d)(
\\
d+)
\\
.drd"
,
"_d(
\\
d)(
\\
d+)
\\
.fdr"
,
"^d(
\\
d)(
\\
d+)
\\
.art$"
,
"(
\\
d+)-(
\\
d+)-laser
\\
.drl"
,
"d(
\\
d+)-(
\\
d+)"
],
"tl_name"
:
"d_($1)-($2)"
}
]
},
"Wistron"
:{
"step"
:
"cad"
,
"rules"
:
[
{
"valid"
:
function
(
props
){
var
file
=
props
.
file
;
return
/.+
\.
tgz$/ig
.
test
(
file
.
name
)
},
"type"
:
"ODB"
,
"format"
:
"ODB"
},
{
"valid"
:
function
(
props
){
var
file
=
props
.
file
;
return
/.+
\.
btd$/ig
.
test
(
file
.
name
)
},
"type"
:
"IPC356"
,
"format"
:
"IPC356_1"
},
{
"valid"
:
function
(
props
){
var
file
=
props
.
file
;
return
/.+
\.
ger$/ig
.
test
(
file
.
name
)
||
/
\.
pho$|
\.
gdo$|
\.
bol$|
\.
gdo$|
\.
pma$|
\.
sma$|
\.
smb$|
\.
ssa$|
\.
ssb$/ig
.
test
(
file
.
name
)
||
/.+
\.
l
\d
+$/ig
.
test
(
file
.
name
)
},
"type"
:
"Gerber274x"
,
"format"
:
"Gerber274x_3"
},
{
"valid"
:
function
(
props
){
var
file
=
props
.
file
;
return
/.+
\.
ncd$/ig
.
test
(
file
.
name
)
},
"type"
:
"Excellon2"
,
"format"
:
"Excellon2_4"
},
{
"valid"
:
function
(
props
){
var
file
=
props
.
file
;
return
/.+
\.
d
\d
+$/ig
.
test
(
file
.
name
)
},
"type"
:
"Excellon2"
,
"format"
:
"Excellon2_6"
},
{
"valid"
:
function
(
props
){
var
file
=
props
.
file
;
return
/.+
\.
art$/ig
.
test
(
file
.
name
)
},
"type"
:
"Gerber274x"
,
"format"
:
"Gerber274x_3"
,
"format_params"
:
function
(
props
){
var
params
=
props
.
params
if
(
params
.
art_param
){
var
leading
=
params
.
art_param
[
"SUPPRESS_LEAD_ZEROES"
]
var
trailing
=
params
.
art_param
[
"SUPPRESS_TRAIL_ZEROES"
]
var
zeroes
=
"none"
if
(
/yes/ig
.
test
(
leading
)){
zeroes
=
"leading"
}
if
(
/yes/ig
.
test
(
trailing
)){
zeroes
=
"trailing"
}
var
nf1
,
nf2
if
(
params
.
art_param
.
hasOwnProperty
(
"FORMAT"
)){
var
tmp
=
params
.
art_param
[
"FORMAT"
].
split
(
"."
)
if
(
/
\d
+/ig
.
test
(
tmp
[
0
])){
nf1
=
Number
(
tmp
[
0
])}
if
(
/
\d
+/ig
.
test
(
tmp
[
1
])){
nf2
=
Number
(
tmp
[
1
])}
}
return
{
"nf1"
:
nf1
||
3
,
"nf2"
:
nf2
||
5
,
"units"
:
/
METRIC
|
MM
/
ig
.
test
(
params
.
art_param
[
"OUTPUT_UNITS"
])?
"mm"
:
"inch"
,
"zeroes"
:
zeroes
,
"decimal"
:
"no"
,
"nf_comp"
:
0
,
"break_sr"
:
"yes"
,
"data_type"
:
"ascii"
,
"separator"
:
"*"
,
"threshold"
:
200
,
"drill_only"
:
"no"
,
"multiplier"
:
1
,
"resolution"
:
3
,
"tool_units"
:
/
METRIC
|
MM
/
ig
.
test
(
params
.
art_param
[
"OUTPUT_UNITS"
])?
"mm"
:
"inch"
,
"coordinates"
:
"absolute"
,
"merge_by_rule"
:
"no"
,
"signed_coords"
:
"no"
,
"text_line_width"
:
0.0024
}
}
}
},
{
"valid"
:
function
(
props
){
var
file
=
props
.
file
;
return
/.+
\.
drl$|
\.
rou$/ig
.
test
(
file
.
name
)
},
"type"
:
"Excellon2"
,
"format"
:
"Excellon2_4"
,
"format_params"
:
function
(
props
){
var
params
=
props
.
params
if
(
params
.
ncdrill
&&
!
params
.
nc_param
){
params
.
nc_param
=
params
.
ncdrill
}
if
(
params
.
nc_param
){
var
leading
=
params
.
nc_param
[
"SUPPRESS_LEAD_ZEROES"
]
var
trailing
=
params
.
nc_param
[
"SUPPRESS_TRAIL_ZEROES"
]
var
zeroes
=
"none"
if
(
/yes/ig
.
test
(
leading
)){
zeroes
=
"leading"
}
if
(
/yes/ig
.
test
(
trailing
)){
zeroes
=
"trailing"
}
return
{
"nf1"
:
params
.
nc_param
[
"INTEGER_PLACES"
]?
Number
(
params
.
nc_param
[
"INTEGER_PLACES"
])
:
3
,
"nf2"
:
params
.
nc_param
[
"DECIMAL_PLACES"
]?
Number
(
params
.
nc_param
[
"DECIMAL_PLACES"
])
:
5
,
"units"
:
/
METRIC
|
MM
/
ig
.
test
(
params
.
nc_param
[
"OUTPUT_UNITS"
])?
"mm"
:
"inch"
,
"zeroes"
:
zeroes
,
"decimal"
:
"no"
,
"nf_comp"
:
0
,
"break_sr"
:
"yes"
,
"data_type"
:
"ascii"
,
"separator"
:
"nl"
,
"threshold"
:
200
,
"drill_only"
:
"no"
,
"multiplier"
:
1
,
"resolution"
:
3
,
"tool_units"
:
/
METRIC
|
MM
/
ig
.
test
(
params
.
nc_param
[
"OUTPUT_UNITS"
])?
"mm"
:
"inch"
,
"coordinates"
:
params
.
nc_param
[
"COORDINATES"
]?
params
.
nc_param
[
"COORDINATES"
].
toLowerCase
()
:
"absolute"
,
"merge_by_rule"
:
"no"
,
"signed_coords"
:
"no"
,
"text_line_width"
:
0.0024
}
}
}
}
],
"tl_name"
:
[
{
"orig_name"
:
[
"pastmasktop
\\
.pho|^pmt
\\
.art$"
,
"
\\
.pma$"
,
"SoldPasteTop
\\
.ger"
,
"past_top"
],
"tl_name"
:
"past_top"
},
{
"orig_name"
:
[
"pastmaskbot
\\
.pho|^pmb
\\
.art$"
,
"
\\
.pmb$"
,
"SoldPasteBot
\\
.ger"
,
"past_botm"
],
"tl_name"
:
"past_botm"
},
{
"orig_name"
:
[
"silkscreentop
\\
.pho|tsilk"
,
"^sst
\\
.art$"
,
"
\\
.ssa$"
,
"SilkScrnTop
\\
.ger"
,
"silk_top"
],
"tl_name"
:
"silk_top"
},
{
"orig_name"
:
[
"silkscreenbot
\\
.pho|bsilk"
,
"^ssb
\\
.art$"
,
"
\\
.ssb$"
,
"SilkScrnBot
\\
.ger"
,
"silk_bot"
],
"tl_name"
:
"silk_bot"
},
{
"orig_name"
:
[
"soldermasktop
\\
.pho|tmask"
,
"^smt
\\
.art$"
,
"
\\
.sma$"
,
"SoldMask1Top
\\
.ger"
,
"sm_top"
],
"tl_name"
:
"sm_top"
},
{
"orig_name"
:
[
"soldermaskbot
\\
.pho|bmask"
,
"^smb
\\
.art$"
,
"
\\
.smb$"
,
"SoldMask1Bot
\\
.ger"
,
"sm_bot"
],
"tl_name"
:
"sm_botm"
},
{
"orig_name"
:
[
"-top
\\
.pho$|^top$"
,
"^top.art$"
],
"tl_name"
:
"top"
},
{
"orig_name"
:
[
"-(
\\
d+)l
\\
.pho$"
,
"^l(
\\
d+).*
\\
.art$"
,
"^v(
\\
d+)
\\
.art$"
,
"^g(
\\
d+)
\\
.art$"
,
"^s(
\\
d+)
\\
.art$"
,
"
\\
.l(
\\
d+)$"
,
"Copper(
\\
d+)
\\
.ger$"
,
"^layer_(
\\
d+)"
],
"tl_name"
:
"l_($1)"
},
{
"orig_name"
:
[
"-bot
\\
.pho$|^bot
\\
.art$"
,
"^bottom$"
,
"^bottom.art$"
],
"tl_name"
:
"bottom"
},
{
"orig_name"
:
[
"
\\
.d(
\\
d+)$"
],
"tl_name"
:
"d_($1)-($1+1)"
},
{
"orig_name"
:
[
"thruHolePlated_(
\\
d+)_(
\\
d+)
\\
.ncd"
,
"(
\\
d+)-(
\\
d+)
\\
.drl$"
,
"^drill(
\\
d+)-(
\\
d+)$"
,
"^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"
:
[
"outline
\\
.art$"
,
"
\\
.bol$"
,
"PnlContourNonPlated
\\
.ger"
,
"^outline"
],
"tl_name"
:
"outline"
},
{
"orig_name"
:
[
"^topside.golden
\\
.pho$"
,
"top-enig"
,
"enig_top"
],
"tl_name"
:
"enig_top"
},
{
"orig_name"
:
[
"^botside.golden
\\
.pho$"
,
"bot-enig"
,
"enig_bot"
],
"tl_name"
:
"enig_bot"
},
],
"mergerule"
:
{
profile
:[
"silk_top"
]
}
},
"Vivo"
:{
"step"
:
"cad"
,
"rules"
:
[
{
"valid"
:
function
(
props
){
var
file
=
props
.
file
;
return
/.+
\.
tgz$/ig
.
test
(
file
.
name
)
},
"type"
:
"ODB"
,
"format"
:
"ODB"
},
{
"valid"
:
function
(
props
){
var
file
=
props
.
file
;
return
/.+
\.
btd$|.+
\.
rou$/ig
.
test
(
file
.
name
)
},
"type"
:
"IPC356A"
,
"format"
:
"IPC356A_1"
},
{
"valid"
:
function
(
props
){
var
file
=
props
.
file
;
return
/
\.
gdo$|
\.
pho$/ig
.
test
(
file
.
name
)
},
"type"
:
"Gerber274x"
,
"format"
:
"Gerber274x_4"
},
{
"valid"
:
function
(
props
){
var
file
=
props
.
file
;
return
/.+
\.
ncd$/ig
.
test
(
file
.
name
)
||
/.+
\.
d
\d
+$/ig
.
test
(
file
.
name
)
},
"type"
:
"Excellon2"
,
"format"
:
"Excellon2_5"
},
{
"valid"
:
function
(
props
){
var
file
=
props
.
file
;
return
/^ftdrill/ig
.
test
(
file
.
name
)
},
"type"
:
"Gerber274x"
,
"format"
:
"Gerber274x_4"
},
{
"valid"
:
function
(
props
){
var
file
=
props
.
file
;
return
/.+
\.
drl/ig
.
test
(
file
.
name
)
||
/.+
\.
d
\d
+$/ig
.
test
(
file
.
name
)
},
"type"
:
"Excellon2"
,
"format"
:
"Excellon2_7"
}
],
"tl_name"
:
[
{
"orig_name"
:
[
"osp-top
\\
.pho"
,
"solderpastetop"
,
"past_top"
],
"tl_name"
:
"past_top"
},
{
"orig_name"
:
[
"osp-bottom
\\
.pho"
,
"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"
:
[
"soldermask1|soldermask-top"
,
"top-solder-mask
\\
.pho"
,
"soldermasktop"
,
"sm_top"
],
"tl_name"
:
"sm_top"
},
{
"orig_name"
:
[
"soldermask2|soldermask-bottom"
,
"bottom-solder-mask
\\
.pho"
,
"soldermaskbottom"
,
"sm_bot"
],
"tl_name"
:
"sm_botm"
},
{
"orig_name"
:
[
"top
\\
.pho"
,
"^top$"
,
"layertop"
],
"tl_name"
:
"top"
},
{
"orig_name"
:
[
"^lay(
\\
d+)"
,
"layer(
\\
d+)
\\
.gdo"
,
"layer_(
\\
d+)"
],
"tl_name"
:
"l_($1)"
},
{
"orig_name"
:
[
"^bottom
\\
.pho$"
,
"^bottom$"
,
"layerbottom"
],
"tl_name"
:
"bottom"
},
{
"orig_name"
:
[
"^drill(
\\
d+)-(
\\
d+)$"
,
"^d(
\\
d+)-(
\\
d+)$"
],
"tl_name"
:
"d_($1)-($2)"
},
{
"orig_name"
:
[
"^drill$"
],
"tl_name"
:
"drill"
},
{
"orig_name"
:
[
"
\\
.rou$"
,
"^rout$"
],
"tl_name"
:
"rout"
},
{
"orig_name"
:
"fab.art"
,
"tl_name"
:
"fab.art"
},
{
"orig_name"
:
[
"pcb-set
\\
.gdo"
,
"^pcb-set
\\
.pho$"
,
"^pcb-set$"
,
"^array$"
],
"tl_name"
:
"array"
},
{
"orig_name"
:
[
"^outline"
],
"tl_name"
:
"outline"
},
{
"orig_name"
:
[
"au_mask-bottom
\\
.gdo"
,
"au_mask_bottom
\\
.gdo"
,
"enig_top"
],
"tl_name"
:
"enig_top"
},
{
"orig_name"
:
[
"au_mask-top
\\
.gdo"
,
"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"
},
],
"mergerule"
:
{
drill_second
:
[
"(
\\
d+)-(
\\
d+)
\\
.drl$"
],
drill
:
[
{
orig_rule
:[
"contournonplated"
],
drill_type
:
"non_plated"
,
shape
:
"slot"
},
{
orig_rule
:[
"contourplated"
],
drill_type
:
"plated"
,
shape
:
"slot"
},
{
orig_rule
:[
"thruholenonplated"
],
drill_type
:
"non_plated"
,
shape
:
"hole"
},
{
orig_rule
:[
"thruholeplated"
],
drill_type
:
"plated"
,
shape
:
"hole"
},
],
profile
:[
"enig_bot"
,
"past_top"
],
laser
:
{
tl_name
:
"drill($1)-($2)"
,
regs
:
[
"(
\\
d+)-(
\\
d+)plated
\\
.ncd$"
,
"(
\\
d+)-(
\\
d+)
\\
.drl$"
]
}
}
},
"1352"
:{
"step"
:
"cad"
,
"rules"
:
[
{
"valid"
:
function
(
props
){
var
file
=
props
.
file
;
return
/.+
\.
tgz$/ig
.
test
(
file
.
name
)
},
"type"
:
"ODB"
,
"format"
:
"ODB"
},
{
"valid"
:
function
(
props
){
var
file
=
props
.
file
;
return
/.+
\.
ipc$/ig
.
test
(
file
.
name
)
},
"type"
:
"IPC356"
,
"format"
:
"IPC356_1"
},
{
"valid"
:
function
(
props
){
var
file
=
props
.
file
;
return
/.+
\.
art$/ig
.
test
(
file
.
name
)
},
"type"
:
"Gerber274x"
,
"format"
:
"Gerber274x_5"
},
{
"valid"
:
function
(
props
){
var
file
=
props
.
file
;
return
/.+
\.
drl$/ig
.
test
(
file
.
name
)
},
"type"
:
"Excellon2"
,
"format"
:
"Excellon2_8"
}
],
"tl_name"
:
[
{
"orig_name"
:
[
"pasttop
\\
.art"
,
"past_top"
],
"tl_name"
:
"past_top"
},
{
"orig_name"
:
[
"pastbotm
\\
.art"
,
"past_botm"
],
"tl_name"
:
"past_botm"
},
{
"orig_name"
:
[
"^silktop
\\
.art$"
,
"silk_top"
],
"tl_name"
:
"silk_top"
},
{
"orig_name"
:
[
"^silkbotm
\\
.art$"
,
"silk_bot"
],
"tl_name"
:
"silk_bot"
},
{
"orig_name"
:
[
"soldtop.art"
,
"sm_top"
],
"tl_name"
:
"sm_top"
},
{
"orig_name"
:
[
"soldbotm
\\
.art"
,
"sm_bot"
],
"tl_name"
:
"sm_botm"
},
{
"orig_name"
:
[
"^top$"
,
"^top.art$"
],
"tl_name"
:
"top"
},
{
"orig_name"
:
[
"^pgp(
\\
d+)
\\
.art$"
,
"^art(
\\
d+)
\\
.art$"
,
"^l_(
\\
d+)"
],
"tl_name"
:
"l_($1)"
},
{
"orig_name"
:
[
"^bot
\\
.art$"
,
"^bottom$"
,
"^bottom.art$"
],
"tl_name"
:
"bottom"
},
{
"orig_name"
:
[
"
\\
.d(
\\
d+)$"
],
"tl_name"
:
"d_($1)-($1+1)"
},
{
"orig_name"
:
[
"^drill(
\\
d+)-(
\\
d+)$"
,
"^d_(
\\
d+)-(
\\
d+)$"
],
"tl_name"
:
"d_($1)-($2)"
},
{
"orig_name"
:
[
"^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"
:
[
"
\\
.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"
},
],
"mergerule"
:
{
drill
:[
"(
\\
d+)-(
\\
d+)
\\
.drl$"
],
profile
:[
"sm_top"
],
laser
:
{
tl_name
:
"drill($1)-($2)"
,
regs
:
[
"(
\\
d+)-(
\\
d+)
\\
.drl$"
]
}
}
}
},
"data_format"
:
[
{
"tl_name"
:
"enig_top"
,
"new_name"
:
"enig_top"
,
"attr"
:{
"context"
:
"board"
,
"type"
:
"document"
}},
{
"tl_name"
:
"past_top"
,
"new_name"
:
"past_top"
,
"attr"
:{
"context"
:
"board"
,
"type"
:
"solder_paste"
}},
{
"tl_name"
:
"silk_top"
,
"new_name"
:
"silk_top"
,
"attr"
:{
"context"
:
"board"
,
"type"
:
"silk_screen"
}},
{
"tl_name"
:
"sm_top"
,
"new_name"
:
"sm_top"
,
"attr"
:{
"context"
:
"board"
,
"type"
:
"solder_mask"
}},
{
"tl_name"
:
"^top$"
,
"new_name"
:
"top"
,
"attr"
:{
"context"
:
"board"
,
"type"
:
"signal"
}},
{
"tl_name"
:
"l_(
\\
d+)"
,
"new_name"
:
"l($1)"
,
"attr"
:{
"context"
:
"board"
,
"type"
:
"signal"
}},
{
"tl_name"
:
"^bottom$"
,
"new_name"
:
"bottom"
,
"attr"
:{
"context"
:
"board"
,
"type"
:
"signal"
}},
{
"tl_name"
:
"sm_botm"
,
"new_name"
:
"sm_botm"
,
"attr"
:{
"context"
:
"board"
,
"type"
:
"solder_mask"
}},
{
"tl_name"
:
"silk_bot"
,
"new_name"
:
"silk_bot"
,
"attr"
:{
"context"
:
"board"
,
"type"
:
"silk_screen"
}},
{
"tl_name"
:
"past_botm"
,
"new_name"
:
"past_botm"
,
"attr"
:{
"context"
:
"board"
,
"type"
:
"solder_paste"
}},
{
"tl_name"
:
"enig_bot"
,
"new_name"
:
"enig_bot"
,
"attr"
:{
"context"
:
"board"
,
"type"
:
"document"
}},
{
"tl_name"
:
"d_(
\\
d+)-(
\\
d+)"
,
"new_name"
:
"ftdrill($1)-($2)l"
,
"attr"
:{
"context"
:
"board"
,
"type"
:
"drill"
}},
{
"tl_name"
:
"drill"
,
"new_name"
:
"ftdrill"
,
"attr"
:{
"context"
:
"board"
,
"type"
:
"drill"
}},
{
"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"
}})()
\ No newline at end of file
template.js
View file @
62b678fa
...
...
@@ -78,44 +78,41 @@ for(var key in default_par){ if (!par.hasOwnProperty(key) || par[key] == ""){ pa
var
job
=
Job
;
try
{
if
(
_
.
isEmpty
(
job
)){
throw
"参数job不存在"
}
else
{
job
=
job
.
toLowerCase
()
}
// if(!GEN.isJobExists({job:job})){throw "料号"+job+"不存在"}
// if(!GEN.isJobOpen({job:job})){ GEN.openJob({job:job}) }
// if(mode == "aimdfm"){ if(GEN.checkInout({job:job,mode:"test"}) != 0){ throw "the job check" } else { GEN.checkInout({job:job,mode:"out"}) } }
if
(
!
GEN
.
isJobExists
({
job
:
job
})){
throw
"料号"
+
job
+
"不存在"
}
if
(
!
GEN
.
isJobOpen
({
job
:
job
})){
GEN
.
openJob
({
job
:
job
})
}
if
(
mode
==
"aimdfm"
){
if
(
GEN
.
checkInout
({
job
:
job
,
mode
:
"test"
})
!=
0
){
throw
"the job check"
}
else
{
GEN
.
checkInout
({
job
:
job
,
mode
:
"out"
})
}
}
GEN
.
openStep
({
job
:
job
,
name
:
"cad"
})
var
matrix
=
GEN
.
getMatrix
({
job
:
job
})
exportInfo
(
"getMatrix"
);
// 获取matrix
GEN
.
INFO
({
entity_type
:
'matrix'
,
entity_path
:
job
+
'/matrix'
,
data_type
:
'row'
,
parameters
:
'name'
});
exportInfo
({
matrix
:
Object
.
keys
(
matrix
),
infores
:
GEN
.
INFO_RESULT
});
// var stepList = GEN.getStepList({job:job})
// stepList = stepList.filter(function(step){
// var reg = new RegExp(par.step,"ig")
// process.exec('7za', ['x' ,"/tmp/topcamtest/custom0.zip", "-o/tmp/topcamtest/custom0", "-aoa"])
// return reg.test(step)
// })
process
.
exec
(
'/usr/local/lib/p7zip/7za'
,
[
'x'
,
"/tmp/tmp/custom0.zip"
,
"-o/tmp/tmp/custom0"
,
"-aoa"
])
// /usr/local/lib/p7zip/7za x /tmp/topcamtest/custom0.zip -o/tmp/topcamtest/custom0 -aoa
// /usr/bin/sudo -u genesis -b -s /usr/bin/id -un > /tmp/topcamtest/test.txt
// mkdir /tmp/test
// exportInfo(ret)
// /usr/bin/sudo -u genesis -b -s /usr/local/lib/p7zip/7za x /tmp/topcamtest/custom0.zip -o/tmp/topcamtest/custom0 -aoa
// sudo -u genesis -b -s /bin/csh -c "setenv DISPLAY ':0.0';cd /opt/toplinker/aimdfmserver/bin;./aimdfmserver > /dev/null"
// stepList.forEach(function(step){
// GEN.openStep({job:job,name:step});
// GEN.COM("tools_set,layer=ftdrill,slots=by_length")
// var tool = GEN.getTool({job:job,step:step,layer:"ftdrill",units:"mm"},true); // {"1":{"count":"01156","num":"1","type":"plated","min_tol":"0","max_tol":"0","finish_size":"100.31","drill_size":"100.31","slot_len":"0","type2":"standard","shape":"hole","bit":0}}
// fs.writeFile("/home/toplinker/samba/scott_test/tmp", _.toString(tool))
// })
// 保存
if
(
/yes/ig
.
test
(
par
.
auto_save
)){
GEN
.
checkInout
({
job
:
job
,
mode
:
"out"
});
GEN
.
saveJob
({
job
:
job
});
GEN
.
checkInout
({
job
:
job
,
mode
:
"in"
});
GEN
.
closeJob
({
job
:
job
});}
else
{
GEN
.
checkInout
({
job
:
job
,
mode
:
"in"
})}
if
(
mode
===
"aimdfm"
)
{
$
.
QDfm
.
updateRow
({
table
:
"pdm_aimdfm_task"
,
data
:
{
progress
:
33.33
},
where
:
{
id
:
$
.
task_id
}});
$
.
QDfm
.
updateRow
({
table
:
"pdm_aimdfm_task"
,
data
:
{
progress
:
100
},
where
:
{
id
:
$
.
task_id
}});
if
(
GEN
.
hasError
())
{
Status
=
'error'
;
resultData
.
push
({
type
:
"error"
,
title
:
"GEN错误!"
,
detail
:
[{
desc
:
_
.
join
(
GEN
.
STATUS
,
"
\n
"
)
}]
});
return
{
status
:
Status
,
result_data
:
resultData
};
}
else
{
resultData
.
push
({
type
:
"info"
,
title
:
"操作完成, 请注意检查!"
});
return
{
status
:
Status
,
result_data
:
resultData
};
}
}
else
{
return
"Done"
}
}
catch
(
e
)
{
GEN
.
COM
(
"disp_on"
)
GEN
.
COM
(
"origin_on"
)
GEN
.
COM
(
"checkin_closed_job,job="
+
job
);
IKM
.
msg
(
_
.
join
(
GEN
.
STATUS
,
"
\n
"
));
IKM
.
msg
(
e
);
Status
=
'error'
;
resultData
.
push
({
type
:
"error"
,
title
:
"脚本执行出错!"
,
detail
:
[{
desc
:
_
.
toString
(
e
)}]});
return
(
mode
===
"aimdfm"
)
?
{
status
:
Status
,
result_data
:
resultData
}
:
"Error"
;
}
function
exportInfo
(
info
){
fs
.
writeFile
(
"/home/toplinker/samba/
scott_tes
t/tmp"
,
_
.
toString
(
info
))
fs
.
writeFile
(
"/home/toplinker/samba/
Test_Scot
t/tmp"
,
_
.
toString
(
info
))
}
\ No newline at end of file
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