Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Sign in / Register
Toggle navigation
A
ats_cam_script
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
ats_cam_script
Commits
de2bd998
Commit
de2bd998
authored
Mar 01, 2021
by
Scott Sun
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
scott
parent
8ff10e8d
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
317 additions
and
159 deletions
+317
-159
ATS_AIM_customer_data_analysis.js
src/ATS_AIM_customer_data_analysis.js
+184
-101
ATS_AIM_data_format.js
src/ATS_AIM_data_format.js
+57
-16
ATS_AIM_data_input.js
src/ATS_AIM_data_input.js
+68
-24
config_ats.js
src/config_ats.js
+8
-18
No files found.
src/ATS_AIM_customer_data_analysis.js
View file @
de2bd998
...
...
@@ -232,7 +232,6 @@ try {
script_info
({
msg
:
"Upload matrix"
,
result_severity
:
"info"
})
global
.
_ERRORMAG
=
"Error-Upload matrix"
;
script_info
({
progress
:
65
})
var
matrix
=
UPLOAD_LAYER_MATRIX
({
job
:
job
})
// 分析matrix 获得分析后的matrix信息
GEN
.
openStep
({
job
:
job
,
name
:
pcs_step
})
...
...
@@ -242,14 +241,23 @@ try {
GEN
.
affectedLayer
({
affected
:
'no'
,
mode
:
'all'
})
GEN
.
workLayer
({
name
:
v
.
odb_name
,
display_number
:
2
,
clear_before
:
'yes'
})
GEN
.
selClearFeature
()
GEN
.
selAllFeat
()
if
(
GEN
.
getSelectCount
()
>
0
){
// unSelect()
// if(GEN.getSelectCount() > 0){
// GEN.COM("cur_atr_reset")
// GEN.COM("cur_atr_set,attribute=.drill,option=via")
// GEN.COM("sel_change_atr,mode=add")
// }
// GEN.selAllFeat()
var
syms
=
GEN
.
getLayerSymsHist
({
job
:
job
,
step
:
pcs_step
,
layer
:
v
.
odb_name
});
// var getLayerSymsHist = $.gen.getLayerSymsHist({job:'demo',step:'panel',layer:'l2',options:'break_sr',units:'mm'});
var
include_syms
=
[];
for
(
var
key
in
syms
)
{
var
info
=
syms
[
key
];
if
(
info
.
size
>
5.9055
)
{
include_syms
.
push
(
key
)
}
}
GEN
.
selectByFilter
({
include_syms
:
include_syms
.
join
(
"
\\
;"
)})
if
(
GEN
.
getSelectCount
()
>
0
){
GEN
.
COM
(
"cur_atr_reset"
)
GEN
.
COM
(
"cur_atr_set,attribute=.drill,option=plated"
)
GEN
.
COM
(
"sel_change_atr,mode=add"
)
}
GEN
.
clearLayers
()
GEN
.
selClearFeature
()
...
...
@@ -501,6 +509,7 @@ try {
script_info
({
msg
:
"PN analysis"
})
global
.
_ERRORMAG
=
"Error-PN analysis"
;
var
config
=
{
jobInfo
:
{
layer_count
:
[
"signal"
,
"power_ground"
],
// Board属性的signal或者power_ground层
...
...
@@ -539,13 +548,15 @@ try {
}
}
console
.
log
(
"===============================> 2analysis_obj"
)
// 分析料号info
var
jobInfo
=
{}
Object
.
keys
(
config
.
jobInfo
).
forEach
(
function
(
key
){
var
props
=
config
.
jobInfo
[
key
];
if
(
props
){
try
{
console
.
log
(
"-------------"
+
key
+
"-----------"
);
if
(
props
.
hasOwnProperty
(
"api"
)
&&
props
.
hasOwnProperty
(
"props"
)){
jobInfo
[
key
]
=
analysis_obj
[
"analysis_"
+
props
.
api
](
props
.
props
)
}
else
if
(
props
.
only_value
){
...
...
@@ -554,11 +565,12 @@ try {
jobInfo
[
key
]
=
analysis_obj
[
"analysis_"
+
key
](
props
)
}
}
catch
(
e
)
{
IKM
.
msg
(
e
)
console
.
log
(
"========================================error:"
);
jobInfo
[
key
]
=
"_error"
}
}
})
})
;
console
.
log
(
"===================================> 3 jobinfo"
)
// 过滤掉料号信息的 _todo 和 _error
...
...
@@ -582,7 +594,7 @@ try {
})
console
.
log
(
"=================================> 5 save drill info"
)
script_info
({
msg
:
"Drill layer analysis"
})
global
.
_ERRORMAG
=
"Error-Drill layer analysis"
;
...
...
@@ -606,10 +618,15 @@ try {
var
step
=
item
.
name
;
if
(
GEN
.
isStepExists
({
job
:
job
,
step
:
step
})){
GEN
.
openStep
({
job
:
job
,
name
:
step
})
drillLayers
.
forEach
(
function
(
layer
){
var
layer
=
layer
.
name
;
if
(
!
GEN
.
isLayerEmpty
({
job
:
job
,
step
:
step
,
layer
:
layer
})){
var
mv_layer
=
moveSlotDrls
({
job
:
job
,
step
:
step
,
layer
:
layer
})
GEN
.
COM
(
"tools_set,layer="
+
layer
+
",slots=by_length"
)
GEN
.
COM
(
"tools_merge_ex,layer="
+
layer
+
",mode=merge"
)
var
tool
=
GEN
.
getTool
({
job
:
job
,
step
:
step
,
layer
:
layer
,
units
:
"mm"
});
// {"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}}
if
(
!
drill_tool_info
[
layer
]){
drill_tool_info
[
layer
]
=
tool
;
...
...
@@ -640,6 +657,10 @@ try {
}
}
}
if
(
mv_layer
)
{
GEN
.
workLayer
({
name
:
mv_layer
,
display_number
:
2
,
clear_before
:
'yes'
})
GEN
.
selCopyOther
({
dest
:
'layer_name'
,
target_layer
:
layer
,
invert
:
'no'
,
dx
:
0
,
dy
:
0
,
size
:
0
})
}
}
})
GEN
.
closeStep
()
...
...
@@ -654,6 +675,7 @@ try {
})
});
var
seq_index
=
1
;
// 钻孔管理器信息处理
Object
.
keys
(
drill_tool_info
).
forEach
(
function
(
layer
){
var
datalist
=
[]
var
tool_num
=
1
;
...
...
@@ -662,6 +684,9 @@ try {
var
drill_type
=
item
.
type
if
(
matrix
[
layer
].
type
==
"laser_drill"
&&
/^
[^\d]
+
(\d
+
)
-
(\d
+
)[^\d]?
$/
.
test
(
layer_name
)){
drill_type
=
"laser"
if
(
Number
(
item
.
drill_size
)
>=
150
){
drill_type
=
"plated"
}
var
info_drilll
=
/^
[^\d]
+
(\d
+
)
-
(\d
+
)[^\d]?
$/
.
exec
(
layer_name
);
layer_name
=
"l"
+
info_drilll
[
1
]
+
"-"
+
info_drilll
[
2
];
}
else
if
(
layer_name
===
"ftdrill"
){
...
...
@@ -710,7 +735,8 @@ try {
});
})
})
console
.
log
(
"=============================> 6 set smd bga"
)
script_info
({
msg
:
"SMD&BGA create"
})
global
.
_ERRORMAG
=
"Error-SMD&BGA create"
;
...
...
@@ -757,10 +783,7 @@ try {
// 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){
...
...
@@ -885,7 +908,6 @@ try {
// }
script_info
({
msg
:
"Signal layer analysis"
})
global
.
_ERRORMAG
=
"Error-Signal layer analysis"
;
script_info
({
progress
:
85
})
stepList
.
forEach
(
function
(
step
){
GEN
.
openStep
({
job
:
job
,
name
:
step
})
...
...
@@ -902,13 +924,14 @@ try {
if
(
GEN
.
isLayerExists
({
job
:
job
,
layer
:
tmp_area_layer
})){
GEN
.
deleteLayer
({
job
:
job
,
layer
:[
tmp_area_layer
]})
}
GEN
.
copyLayer
({
source_job
:
job
,
source_step
:
step
,
source_layer
:
tmp_gold_info
[
layer_gold_type
],
dest_layer
:
tmp_area_layer
,
mode
:
'replace'
,
invert
:
'no'
});
GEN
.
COM
(
"clip_area_strt"
)
GEN
.
COM
(
"clip_area_end,layers_mode=layer_name,layer="
+
tmp_area_layer
+
",area=profile,area_type=rectangle,inout=outside,contour_cut=yes,margin=0,feat_types=line
\
;pad
\
;surface
\
;arc
\
;text"
)
// var tmp_info = GEN.copperArea({layer1:tmp_gold_info[layer_gold_type],resolution_value:1})
// var tmp_info = GEN.exposedArea({layer1:item.signalL,mask1:tmp_gold_info[layer_gold_type],resolution_value:1})
var
tmp_info
=
GEN
.
exposedArea
({
layer1
:
item
.
signalL
,
mask1
:
tmp_gold_info
[
layer_gold_type
],
resolution_value
:
1
})
var
tmp_data
=
{}
var
tmp_data
=
{}
;
if
(
layer_gold_type
==
"top"
)
{
tmp_data
.
sf_area_ref_layer_front
=
tmp_gold_info
[
layer_gold_type
]
tmp_data
.
sf_area_gold_area_front
=
tmp_info
.
area
...
...
@@ -966,7 +989,7 @@ try {
jobid
:
JobId
,
layer
:
item
.
signalL
,
layerinfohash
:
{
org_min_pad_size
:
getMinSym
(
syms
)
org_min_pad_size
:
getMinSym
(
syms
,
1
)
}
})
if
(
item
.
solderL
)
{
...
...
@@ -979,7 +1002,7 @@ try {
jobid
:
JobId
,
layer
:
item
.
signalL
,
layerinfohash
:
{
org_min_pad_sm_opening_size
:
getMinSym
(
syms2
)
org_min_pad_sm_opening_size
:
getMinSym
(
syms2
,
1
)
}
})
GEN
.
deleteLayer
({
job
:
job
,
layer
:
item
.
signalL
+
"_sm"
})
...
...
@@ -990,7 +1013,7 @@ try {
}
})
GEN
.
clearLayers
()
GEN
.
affectedLayer
({
affected
:
'no'
,
mode
:
'all'
})
GEN
.
affectedLayer
({
affected
:
'no'
,
mode
:
'all'
})
;
console
.
log
(
"==================================> Drill analysis"
)
...
...
@@ -1007,6 +1030,7 @@ try {
return
{
layer
:
v
,
symbol
:
symbol
,
start
:
tmp_matrix
[
v
][
"drl_start"
],
end
:
tmp_matrix
[
v
][
"drl_end"
]}
})
var
drillRes
=
analysisDrill
(
drillToSignals
,
step
)
// 钻孔分析结果
drillRes
.
forEach
(
function
(
item
){
save_layerinfo
({
...
...
@@ -1020,6 +1044,23 @@ try {
})
console
.
log
(
"==================================> chk signals analysis"
)
// 删除线路层的外形线
if
(
GEN
.
isLayerExists
({
job
:
job
,
layer
:
"out_rout"
})){
GEN
.
deleteLayer
({
job
:
job
,
layer
:
"out_rout"
})}
GEN
.
units
({
type
:
"mm"
})
GEN
.
COM
(
"profile_to_rout,layer=out_rout,width=1"
)
GEN
.
units
({
type
:
"inch"
})
GEN
.
affectedLayer
({
affected
:
'no'
,
mode
:
'all'
})
signalLayers
.
forEach
(
function
(
signal
){
GEN
.
workLayer
({
name
:
signal
,
display_number
:
2
,
clear_before
:
'yes'
})
GEN
.
COM
(
"filter_set,filter_name=popup,update_popup=no,feat_types=line"
)
GEN
.
selRefFeat
({
layers
:
'out_rout'
,
use
:
'filter'
,
mode
:
'touch'
})
if
(
GEN
.
getSelectCount
()
>
0
)
{
GEN
.
selDelete
()}
GEN
.
COM
(
"filter_reset,filter_name=popup"
)
})
// 创建chklist并运行 如果chklist存在先删除
// var tmpitem = {
...
...
@@ -1834,7 +1875,7 @@ function analysis(props){
return
"_todo"
}
T_m_p
.
prototype
.
analysis_milling_length_card
=
function
(){
// todo
var
allStep
=
[
this
.
pcs_step
,
this
.
array_step
]
var
allStep
=
[
this
.
pcs_step
,
this
.
array_step
]
.
filter
(
function
(
v
){
return
v
})
var
res
=
0
var
that
=
this
;
console
.
log
(
"============analysis_milling_length_card============="
);
...
...
@@ -1912,7 +1953,7 @@ function analysis(props){
if
(
ret
==
"no"
&&
hasComp
==
false
)
{
var
mOuters
=
this
.
matrixInfo
.
mOuters
// signalL solderL(null)
var
job_tmp
=
this
.
job
GEN
.
openStep
({
job
:
job_tmp
,
name
:
this
.
array_
step
})
GEN
.
openStep
({
job
:
job_tmp
,
name
:
step
})
GEN
.
clearLayers
()
mOuters
.
forEach
(
function
(
outer_layer
){
if
(
outer_layer
.
solderL
){
...
...
@@ -2286,16 +2327,15 @@ function analysisChkAttr(par) {
step
:
par
.
step
,
checklist
:
oChecklistName
,
nact
:
nact
,
attr
:
v
+
"_min_"
+
type
,
units
:
"mm"
attr
:
v
+
"_min_"
+
type
})
if
(
a
===
"N/A"
&&
/^
\d
+
\.?\d
*$/
.
test
(
tmp
))
{
tmp
=
Number
(
tmp
)
a
=
tmp
/
25.4
a
=
tmp
.
toFixed
(
2
)
}
if
(
/^
\d
+
\.?\d
*$/
.
test
(
a
)
&&
/^
\d
+
\.?\d
*$/
.
test
(
tmp
)
&&
Number
(
tmp
)
<
Number
(
a
))
{
tmp
=
Number
(
tmp
)
a
=
tmp
/
25.4
a
=
tmp
.
toFixed
(
2
)
}
return
a
},
"N/A"
)
...
...
@@ -2308,8 +2348,9 @@ function analysisChkAttr(par) {
return
hash
}
function
analysisDrill
(
par
,
step
){
// [{
// "layer": "ftdrill2-3l",
// "layer": "
ftdrill2-3l",
// "symbol": "r7.874",
// "start": "l2",
// "end": "l3"
...
...
@@ -2334,81 +2375,82 @@ function analysisDrill(par, step){
GEN
.
affectedLayer
({
affected
:
"no"
,
mode
:
"all"
})
GEN
.
selClearFeature
();
[
drill
.
start
,
drill
.
end
].
forEach
(
function
(
item
,
i
){
GEN
.
workLayer
({
name
:
item
,
display_number
:
1
,
clear_before
:
"yes"
})
GEN
.
selClearFeature
();
GEN
.
COM
(
"filter_set,filter_name=popup,update_popup=no,feat_types=pad"
);
// GEN.COM("sel_ref_feat",{layers:tmplayer,use:"filter",mode:"touch",pads_as:"shape",f_types:"pad",polarity:"positive\;negative",include_syms:drill.symbol})
GEN
.
COM
(
"sel_ref_feat,layers="
+
tmplayer
+
",use=filter,mode=touch,pads_as=shape,f_types=pad,polarity=positive
\
;negative,include_syms=,exclude_syms="
)
// GEN.selRefFeat({layers:tmplayer, use:"filter",mode:"touch"})
GEN
.
COM
(
"filter_reset,filter_name=popup"
)
if
(
GEN
.
getSelectCount
()
>
0
){
var
res
=
999
;
if
(
GEN
.
isLayerExists
({
job
:
job
,
layer
:
"temp"
})){
GEN
.
deleteLayer
({
job
:
job
,
layer
:[
"temp"
]})}
if
(
GEN
.
isLayerExists
({
job
:
job
,
layer
:
"temp+++"
})){
GEN
.
deleteLayer
({
job
:
job
,
layer
:[
"temp+++"
]})}
GEN
.
selCopyOther
({
dest
:
'layer_name'
,
target_layer
:
'temp'
,
invert
:
'no'
,
dx
:
0
,
dy
:
0
,
size
:
0
})
GEN
.
workLayer
({
name
:
"temp"
,
display_number
:
1
,
clear_before
:
"yes"
})
// GEN.COM("sel_ref_feat,layers="+item+",use=filter,mode=touch,pads_as=shape,f_types=surface,polarity=positive\;negative,include_syms=,exclude_syms=")
// if(GEN.getSelectCount()>0){GEN.selDelete()}
GEN
.
COM
(
"chklist_single,action=valor_dfm_nfpr,show=yes"
)
GEN
.
COM
(
"chklist_cupd,chklist=valor_dfm_nfpr,nact=1,params=((pp_layer=temp)(pp_delete=Duplicate)(pp_work=Features)(pp_drill=PTH
\
;NPTH
\
;Via)(pp_non_drilled=Yes)(pp_in_selected=All)(pp_remove_mark=Remove)),mode=regular"
)
GEN
.
COM
(
"chklist_run,chklist=valor_dfm_nfpr,nact=1,area=profile"
)
var
layer
=
"temp"
;
var
drl_layer
=
layer
+
"_drl"
if
(
GEN
.
isLayerExists
({
job
:
job
,
layer
:
drl_layer
})){
GEN
.
deleteLayer
({
job
:
job
,
layer
:
drl_layer
})}
GEN
.
createLayer
({
job
:
job
,
layer
:
drl_layer
,
type
:
'drill'
})
GEN
.
selCopyOther
({
dest
:
'layer_name'
,
target_layer
:
drl_layer
,
invert
:
'no'
,
dx
:
0
,
dy
:
0
,
size
:
0
})
if
(
GEN
.
isChklistExists
({
job
:
job
,
step
:
step
,
chklist
:
'tmp_chk'
})){
GEN
.
COM
(
"chklist_delete,chklist=tmp_chk"
)
}
GEN
.
COM
(
"chklist_create,chklist=tmp_chk"
)
GEN
.
COM
(
"chklist_show,chklist=tmp_chk"
)
GEN
.
COM
(
"chklist_single,action=valor_analysis_drill,show=yes"
)
GEN
.
COM
(
"chklist_pclear"
)
GEN
.
COM
(
"chklist_cupd,chklist=valor_analysis_drill,nact=1,params=((pp_drill_layer="
+
drl_layer
+
")(pp_rout_distance=200)(pp_tests=Hole Separation)(pp_extra_hole_type=Pth
\
;Via)(pp_use_compensated_rout=Skeleton)),mode=regular"
)
GEN
.
COM
(
"chklist_pcopy,chklist=valor_analysis_drill,nact=1"
)
GEN
.
COM
(
"chklist_ppaste,chklist=tmp_chk,row=0"
)
GEN
.
COM
(
"chklist_run,chklist=tmp_chk,nact=1,area=profile"
)
GEN
.
COM
(
"chklist_close,chklist=valor_analysis_drill,mode=hide"
)
GEN
.
COM
(
"chklist_close,chklist=tmp_chk,mode=hide"
)
GEN
.
deleteLayer
({
job
:
job
,
layer
:
drl_layer
})
// GEN.deleteLayer({job:job, layer:[layer, layer+"+++"]})
var
meas
=
GEN
.
getCheckMeas
({
job
:
job
,
step
:
step
,
chklist
:
'tmp_chk'
,
nact
:
1
})
meas
=
meas
.
filter
(
function
(
v
){
return
/^touch/
.
test
(
v
)})
if
(
meas
.
length
){
meas
.
forEach
(
function
(
v
){
var
tmparr
=
v
.
split
(
" "
)
GEN
.
COM
(
"sel_net_feat,operation=select,x="
+
tmparr
[
7
]
+
",y="
+
tmparr
[
8
]
+
",use_ffilter=no"
)
if
(
GEN
.
getSelectCount
()
>
0
){
GEN
.
selDelete
()}
})
}
// exportInfo({drill:drill, item:item});
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
(
!
/^comp_
\+
_/
.
test
(
item
)){
GEN
.
workLayer
({
name
:
item
,
display_number
:
1
,
clear_before
:
"yes"
})
GEN
.
selClearFeature
();
GEN
.
COM
(
"filter_set,filter_name=popup,update_popup=no,feat_types=pad"
);
// GEN.COM("sel_ref_feat",{layers:tmplayer,use:"filter",mode:"touch",pads_as:"shape",f_types:"pad",polarity:"positive\;negative",include_syms:drill.symbol})
GEN
.
COM
(
"sel_ref_feat,layers="
+
tmplayer
+
",use=filter,mode=touch,pads_as=shape,f_types=pad,polarity=positive
\
;negative,include_syms=,exclude_syms="
)
if
(
pads
&&
pads
.
length
)
{
var
tmphash
=
{};
pads
.
forEach
(
function
(
item2
){
var
key
=
item2
.
x
+
"x"
+
item2
.
y
if
(
!
tmphash
[
key
]){
tmphash
[
key
]
=
item2
}
else
{
tmphash
[
key
]
=
tmphash
[
key
].
size
>
item2
.
size
?
tmphash
[
key
]:
item2
// GEN.selRefFeat({layers:tmplayer, use:"filter",mode:"touch"})
GEN
.
COM
(
"filter_reset,filter_name=popup"
)
if
(
GEN
.
getSelectCount
()
>
0
){
var
res
=
999
;
if
(
GEN
.
isLayerExists
({
job
:
job
,
layer
:
"temp"
})){
GEN
.
deleteLayer
({
job
:
job
,
layer
:[
"temp"
]})}
if
(
GEN
.
isLayerExists
({
job
:
job
,
layer
:
"temp+++"
})){
GEN
.
deleteLayer
({
job
:
job
,
layer
:[
"temp+++"
]})}
GEN
.
selCopyOther
({
dest
:
'layer_name'
,
target_layer
:
'temp'
,
invert
:
'no'
,
dx
:
0
,
dy
:
0
,
size
:
0
})
GEN
.
workLayer
({
name
:
"temp"
,
display_number
:
1
,
clear_before
:
"yes"
})
// GEN.COM("sel_ref_feat,layers="+item+",use=filter,mode=touch,pads_as=shape,f_types=surface,polarity=positive\;negative,include_syms=,exclude_syms=")
// if(GEN.getSelectCount()>0){GEN.selDelete()}
GEN
.
COM
(
"chklist_single,action=valor_dfm_nfpr,show=yes"
)
GEN
.
COM
(
"chklist_cupd,chklist=valor_dfm_nfpr,nact=1,params=((pp_layer=temp)(pp_delete=Duplicate)(pp_work=Features)(pp_drill=PTH
\
;NPTH
\
;Via)(pp_non_drilled=Yes)(pp_in_selected=All)(pp_remove_mark=Remove)),mode=regular"
)
GEN
.
COM
(
"chklist_run,chklist=valor_dfm_nfpr,nact=1,area=profile"
)
var
layer
=
"temp"
;
var
drl_layer
=
layer
+
"_drl"
if
(
GEN
.
isLayerExists
({
job
:
job
,
layer
:
drl_layer
})){
GEN
.
deleteLayer
({
job
:
job
,
layer
:
drl_layer
})}
GEN
.
createLayer
({
job
:
job
,
layer
:
drl_layer
,
type
:
'drill'
})
GEN
.
selCopyOther
({
dest
:
'layer_name'
,
target_layer
:
drl_layer
,
invert
:
'no'
,
dx
:
0
,
dy
:
0
,
size
:
0
})
if
(
GEN
.
isChklistExists
({
job
:
job
,
step
:
step
,
chklist
:
'tmp_chk'
})){
GEN
.
COM
(
"chklist_delete,chklist=tmp_chk"
)
}
GEN
.
COM
(
"chklist_create,chklist=tmp_chk"
)
GEN
.
COM
(
"chklist_show,chklist=tmp_chk"
)
GEN
.
COM
(
"chklist_single,action=valor_analysis_drill,show=yes"
)
GEN
.
COM
(
"chklist_pclear"
)
GEN
.
COM
(
"chklist_cupd,chklist=valor_analysis_drill,nact=1,params=((pp_drill_layer="
+
drl_layer
+
")(pp_rout_distance=200)(pp_tests=Hole Separation)(pp_extra_hole_type=Pth
\
;Via)(pp_use_compensated_rout=Skeleton)),mode=regular"
)
GEN
.
COM
(
"chklist_pcopy,chklist=valor_analysis_drill,nact=1"
)
GEN
.
COM
(
"chklist_ppaste,chklist=tmp_chk,row=0"
)
GEN
.
COM
(
"chklist_run,chklist=tmp_chk,nact=1,area=profile"
)
GEN
.
COM
(
"chklist_close,chklist=valor_analysis_drill,mode=hide"
)
GEN
.
COM
(
"chklist_close,chklist=tmp_chk,mode=hide"
)
GEN
.
deleteLayer
({
job
:
job
,
layer
:
drl_layer
})
// GEN.deleteLayer({job:job, layer:[layer, layer+"+++"]})
var
meas
=
GEN
.
getCheckMeas
({
job
:
job
,
step
:
step
,
chklist
:
'tmp_chk'
,
nact
:
1
})
meas
=
meas
.
filter
(
function
(
v
){
return
/^touch/
.
test
(
v
)})
if
(
meas
.
length
){
meas
.
forEach
(
function
(
v
){
var
tmparr
=
v
.
split
(
" "
)
GEN
.
COM
(
"sel_net_feat,operation=select,x="
+
tmparr
[
7
]
+
",y="
+
tmparr
[
8
]
+
",use_ffilter=no"
)
if
(
GEN
.
getSelectCount
()
>
0
){
GEN
.
selDelete
()}
})
}
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
)
{
var
tmphash
=
{};
pads
.
forEach
(
function
(
item2
){
var
key
=
item2
.
x
+
"x"
+
item2
.
y
if
(
!
tmphash
[
key
]){
tmphash
[
key
]
=
item2
}
else
{
tmphash
[
key
]
=
tmphash
[
key
].
size
>
item2
.
size
?
tmphash
[
key
]:
item2
}
})
for
(
var
key
in
tmphash
)
{
var
size
=
tmphash
[
key
].
size
;
res
=
size
<
res
?
size
:
res
;
}
})
for
(
var
key
in
tmphash
)
{
var
size
=
tmphash
[
key
].
size
;
res
=
size
<
res
?
size
:
res
;
if
(
res
==
999
)
{
res
=
""
}
}
if
(
i
==
0
)
{
drill
.
drl_pad_top
=
res
}
else
if
(
i
==
1
){
drill
.
drl_pad_bot
=
res
}
if
(
res
==
999
)
{
res
=
""
}
}
if
(
i
==
0
)
{
drill
.
drl_pad_top
=
res
}
else
if
(
i
==
1
){
drill
.
drl_pad_bot
=
res
}
}
}
})
GEN
.
deleteLayer
({
job
:
job
,
step
:
step
,
layer
:
tmplayer
})
}
...
...
@@ -3019,7 +3061,7 @@ function getMinSym(sym) {
if
(
!
info
.
size
)
{
var
width
=
Number
(
info
.
width
)
var
height
=
Number
(
info
.
height
)
info
.
size
=
width
>
height
?
height
:
width
;
info
.
size
=
width
<
height
?
height
:
width
;
}
if
(
info
.
size
)
{
if
(
!
min_size
){
min_size
=
info
.
size
}
...
...
@@ -3127,4 +3169,45 @@ function sendEmail(msg) {
print
(
err
.
text
());
}
}
}
function
moveSlotDrls
(
props
){
var
job
=
props
.
job
;
var
step
=
props
.
step
;
var
drl_layer
=
props
.
layer
;
var
flag
;
GEN
.
affectedLayer
({
affected
:
'no'
,
mode
:
'all'
})
GEN
.
workLayer
({
name
:
drl_layer
,
display_number
:
2
,
clear_before
:
'yes'
})
GEN
.
selectByFilter
({
feat_types
:
"line"
})
if
(
GEN
.
getSelectCount
()
>
1
)
{
GEN
.
selClearFeature
();
var
feats
=
GEN
.
getFeatures
({
job
:
job
,
step
:
step
,
layer
:
drl_layer
,
options
:
"feat_index"
,
units
:
"mm"
}).
filter
(
function
(
v
){
return
v
.
type
==
"line"
})
feats
.
forEach
(
function
(
item
){
GEN
.
selClearFeature
();
var
index
=
item
.
index
;
// 选择index
GEN
.
selLayerFeat
({
layer
:
drl_layer
,
index
:
index
,
operation
:
"select"
})
var
tmp_layer
=
drl_layer
+
"_tmp"
if
(
GEN
.
isLayerExists
({
job
:
job
,
layer
:
tmp_layer
})){
GEN
.
deleteLayer
({
job
:
job
,
layer
:
tmp_layer
})
}
GEN
.
selMoveOther
({
target_layer
:
tmp_layer
,
invert
:
'no'
,
dx
:
0
,
dy
:
0
,
size
:
0
})
GEN
.
workLayer
({
name
:
tmp_layer
,
display_number
:
2
,
clear_before
:
'yes'
})
// 参考选择辅助层 include 的移动走
GEN
.
selRefFeat
({
layers
:
drl_layer
,
use
:
'filter'
,
mode
:
"cover"
})
if
(
GEN
.
getSelectCount
()
>
0
)
{
GEN
.
selMoveOther
({
target_layer
:
drl_layer
+
"_inner_slot"
,
invert
:
'no'
,
dx
:
0
,
dy
:
0
,
size
:
0
})
flag
=
drl_layer
+
"_inner_slot"
}
else
{
GEN
.
selMoveOther
({
target_layer
:
drl_layer
,
invert
:
'no'
,
dx
:
0
,
dy
:
0
,
size
:
0
})
}
if
(
GEN
.
isLayerExists
({
job
:
job
,
layer
:
tmp_layer
})){
GEN
.
deleteLayer
({
job
:
job
,
layer
:
tmp_layer
})
}
GEN
.
selClearFeature
();
GEN
.
workLayer
({
name
:
drl_layer
,
display_number
:
2
,
clear_before
:
'yes'
})
})
}
return
flag
}
\ No newline at end of file
src/ATS_AIM_data_format.js
View file @
de2bd998
...
...
@@ -399,7 +399,7 @@ try {
global
.
_ERRORMAG
=
"Failed to create profile"
;
script_info
({
progress
:
55
})
var
all_layer
=
Object
.
keys
(
tmp_matrix
);
var
all_layer
=
Object
.
keys
(
GEN
.
getMatrix
({
job
:
job
})
);
// 没有outline层
// 判断有没有profile
var
tmp_step
=
GEN
.
getStepList
({
job
:
job
})[
0
]
...
...
@@ -431,7 +431,15 @@ try {
}
else
{
createOutline
({
job
:
job
,
step
:
tmp_step
,
profileRule
:
profileRule
})
}
}
else
{
createOutline
({
job
:
job
,
step
:
tmp_step
,
profileRule
:
profileRule
})
// var hasFab = false;
// all_layer.forEach(function(v){
// if(/fab/.test(v)){hasFab = true}
// })
// if(hasFab){
// throw "创建profile失败,请手动创建好profile后仅执行分析步骤"
// } else {
createOutline
({
job
:
job
,
step
:
tmp_step
,
profileRule
:
profileRule
})
// }
}
}
else
if
(
/^wistron$/ig
.
test
(
par
.
customer
))
{
var
contours
=
all_layer
.
filter
(
function
(
layer
){
return
/contour/
.
test
(
layer
)})
...
...
@@ -454,19 +462,44 @@ try {
createOutline
({
job
:
job
,
step
:
tmp_step
,
profileRule
:
profileRule
})
}
}
else
if
(
/^vivo$/ig
.
test
(
par
.
customer
))
{
var
drilldrawings
=
all_layer
.
filter
(
function
(
v
){
return
/^drilldrawing
\d
/
.
test
(
v
)})
var
drilldrawinglayer
;
if
(
drilldrawings
.
length
>
0
)
{
drilldrawings
=
drilldrawings
.
map
(
function
(
v
){
GEN
.
workLayer
({
name
:
v
,
display_number
:
2
,
clear_before
:
'yes'
})
GEN
.
selAllFeat
();
var
count
=
Number
(
GEN
.
getSelectCount
());
if
(
count
==
0
)
{
count
=
9999999
}
GEN
.
selClearFeature
()
return
{
name
:
v
,
count
:
count
}
})
drilldrawings
.
sort
(
function
(
a
,
b
){
return
a
.
count
-
b
.
count
})
drilldrawinglayer
=
drilldrawings
[
0
].
name
}
// 判断有没有line层
if
(
all_layer
.
indexOf
(
"line"
)
>=
0
){
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
(
drilldrawinglayer
){
GEN
.
workLayer
({
name
:
drilldrawinglayer
,
display_number
:
2
,
clear_before
:
'yes'
})
GEN
.
selAllFeat
()
if
(
GEN
.
getSelectCount
()
>
0
)
{
createOutline
({
job
:
job
,
step
:
tmp_step
,
profileRule
:[
"^"
+
drilldrawinglayer
+
"$"
]})
}
else
{
createOutline
({
job
:
job
,
step
:
tmp_step
,
profileRule
:
profileRule
})
}
}
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");
//
if(!hasProfle({job:job, step:tmp_step})){
GEN
.
COM
(
"sel_create_profile,create_profile_with_holes=no"
);
if
(
!
hasProfle
({
job
:
job
,
step
:
tmp_step
})){
createOutline
({
job
:
job
,
step
:
tmp_step
,
profileRule
:[
"^array$"
]})
//
}
}
}
else
{
createOutline
({
job
:
job
,
step
:
tmp_step
,
profileRule
:
profileRule
})
}
}
else
if
(
all_layer
.
indexOf
(
"top"
)
>=
0
)
{
...
...
@@ -647,14 +680,20 @@ catch (e) {
}
function
checkIn
(){
GEN
.
COM
(
"open_job,job="
+
Job
+
",open_win=no,disk_map=,job_map="
)
GEN
.
AUX
(
"set_group,group=99"
)
GEN
.
COM
(
"close_job,job="
+
Job
+
""
)
GEN
.
COM
(
"disp_on"
)
GEN
.
COM
(
"origin_on"
)
GEN
.
COM
(
"disp_on"
)
GEN
.
COM
(
"origin_on"
)
GEN
.
COM
(
"checkin_closed_job,job="
+
Job
);
db
.
query
(
""
,
function
(
q
){
return
q
.
insertRow
({
table
:
'pdm_aimdfm_task'
,
data
:{
job_id
:
JobId
,
flow_id
:
13
,
task_title
:
Job
+
":checkin"
,
status
:
'waiting'
,
user_name
:
"Admin"
,
user_id
:
1
}
})
});
}
function
tlNameMatrix
(
props
){
// 设置标准名
...
...
@@ -775,8 +814,8 @@ function sortLayer(props){ // 排序方法 {job:要排序的料号, rule: {要
}
sortNames.forEach(function(v,i,arr){
if(i !== 0){
GEN.matrixMoveRow({ job:job,layer:v.name,after:arr[i-1].name })
}
GEN.matrixMoveRow({ job:job,layer:v.name,after:arr[i-1].name })
}
if(!/^comp_
\
+_/.test(v.name)){
GEN.matrixLayerAttr(_.assign({job:job,layer:v.name},v.attr));
}
...
...
@@ -1108,10 +1147,12 @@ function createOutline(props){
selCopyLayer({job:job,layer:l})
GEN.workLayer({name:l,display_number:2,clear_before:"
yes
"})
GEN.selClearFeature()
GEN.saveJob({job:job})
if(GEN.GEN_TYPE == "
genesis
"){
GEN.selCreateProfile()
} else {
GEN.COM("
profile_limits
,
layers
=
"+l+"
,
type
=
lyrfilter
,
margin
=
0
")
GEN.COM("
sel_create_profile
,
create_profile_with_holes
=
no
")
// GEN.COM("
profile_limits
,
layers
=
"+l+"
,
type
=
lyrfilter
,
margin
=
0
")
}
GEN.selectByFilter({profile:"
in
"})
if(GEN.getSelectCount()> 0){GEN.selDelete()}
...
...
src/ATS_AIM_data_input.js
View file @
de2bd998
...
...
@@ -87,7 +87,7 @@ if (mode === "aimdfm") {
}
var
Status
=
'ok'
;
var
resultData
=
[];
var
import_info
=
[];
// 存储导入文件的信息
var
import_info
=
[];
var
inputState
=
[];
var
cam_workflow_info
=
IKM
.
get_jobinfo
({
jobid
:
JobId
,
jobinfo
:
"cam_workflow_info"
});
if
(
cam_workflow_info
){
...
...
@@ -120,7 +120,7 @@ try {
console
.
log
(
"========================db"
);
par
.
db
=
"genesis"
};
var
db_customer
=
db
.
query
(
""
,
function
(
q
){
// 获取客户
var
db_customer
=
db
.
query
(
""
,
function
(
q
){
return
q
.
selectValue
({
table
:
'pdm_job'
,
field
:
'customer_code'
,
...
...
@@ -135,7 +135,7 @@ try {
par
.
customer
=
db_customer
}
par
.
customer
=
par
.
customer
[
0
].
toUpperCase
()
+
par
.
customer
.
slice
(
1
).
toLowerCase
()
var
cfg
=
db
.
query
(
""
,
function
(
q
){
// 获取脚本配置
var
cfg
=
db
.
query
(
""
,
function
(
q
){
return
q
.
selectValue
({
table
:
'pub_conf'
,
field
:
'text_data'
,
...
...
@@ -146,7 +146,7 @@ try {
script_info
({
msg
:
"Find customer config"
,
result_severity
:
"error"
});
global
.
_ERRORMAG
=
"No customer config was found"
;
throw
"cfg can not find"
}
var
config
=
eval
(
cfg
);
// 解析配置
var
config
=
eval
(
cfg
);
if
(
!
config
.
hasOwnProperty
(
"customer"
)){
script_info
({
msg
:
"Find customer config"
,
result_severity
:
"error"
});
global
.
_ERRORMAG
=
"No customer config was found"
;
...
...
@@ -155,11 +155,11 @@ try {
if
(
_
.
isEmpty
(
job
))
throw
"没有传入料号名!"
;
job
=
job
.
toLowerCase
()
// 如果genesis已经存在这个料号
err
=
delSameJob
({
job
:
job
,
delSame
:
config
.
delSameJob
});
if
(
err
){
throw
err
};
// 删除相同料号
var
custCfg
=
config
.
customer
[
par
.
customer
]
// 获取该客户的配置
err
=
delSameJob
({
job
:
job
,
delSame
:
config
.
delSameJob
});
if
(
err
){
throw
err
};
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
()
||
"cad"
;
// 获取step
var
step
=
custCfg
.
step
.
toLowerCase
()
||
"cad"
;
// 获取路径下文件信息
var
path
=
par
.
path
if
(
!
fs
.
exists
(
path
)){
...
...
@@ -167,9 +167,18 @@ try {
global
.
_ERRORMAG
=
"No PN file was found in folder"
;
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
){
script_info
({
msg
:
"Find PN folder"
,
result_severity
:
"error"
});
...
...
@@ -187,11 +196,11 @@ 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
)
// 修改不规范的路径
changePath2
(
jobFile
[
0
].
path
)
var
job_attrs
=
db
.
query
(
""
,
function
(
q
){
// 设置料号attrs
var
job_attrs
=
db
.
query
(
""
,
function
(
q
){
return
q
.
selectValue
({
table
:
'pdm_job'
,
field_format
:{
job_attrs
:
'json'
},
...
...
@@ -210,8 +219,9 @@ try {
})
});
jobFiles
=
fs
.
listDir
(
jobFile
[
0
].
path
)
// 分析料号文件 得到料号导入信息 导入类型
var
jobInfo
=
analyJobFiles
({
jobFiles
:
jobFiles
.
filter
(
function
(
v
){
return
v
.
isFile
}),
custCfg
:
custCfg
,
config
:
config
,
job
:
job
})
if
(
jobInfo
.
data
.
length
==
0
){
...
...
@@ -250,7 +260,8 @@ try {
}
})
var
step_all
=
[];
// 分析arr_job 和 pcs_job
// 分析arr_job 和 pcs_job;
jobs
=
jobs
.
filter
(
function
(
v
){
return
GEN
.
isJobExists
({
job
:
v
.
name
})});
jobs
.
forEach
(
function
(
item
){
var
jobname
=
item
.
name
GEN
.
openJob
({
job
:
jobname
});
...
...
@@ -272,14 +283,14 @@ try {
})
}
})
})
})
;
var
pcs_job_name_tmp
=
step_all
[
0
].
jobname
step_all
=
step_all
.
filter
(
function
(
item
){
return
item
.
jobname
!=
pcs_job_name_tmp
})
var
pcs_job
=
jobs
.
filter
(
function
(
item
){
return
item
.
name
==
pcs_job_name_tmp
})[
0
]
})[
0
]
;
importJob
({
name
:
job
,
db
:
custCfg
.
db
,
path
:
pcs_job
.
path
},
config
.
delSameJob
)
GEN
.
openJob
({
job
:
job
});
step_all
.
forEach
(
function
(
item
){
...
...
@@ -338,7 +349,7 @@ try {
var
gerberInfo
=
jobInfo
.
data
.
map
(
function
(
item
){
var
gerberCfg
=
JSON
.
parse
(
JSON
.
stringify
(
item
.
format
));
var
file
=
item
.
file
gerberCfg
.
layer
=
file
.
name
.
toLowerCase
().
split
(
" "
).
join
(
"-"
)
gerberCfg
.
layer
=
file
.
name
.
toLowerCase
().
split
(
" "
).
join
(
"-"
)
.
replace
(
/
[
()
]
/ig
,
"_"
)
gerberCfg
.
path
=
file
.
path
gerberCfg
.
format
=
item
.
type
gerberCfg
.
job
=
job
...
...
@@ -637,19 +648,22 @@ function decompression(path, zips) {
var
files
=
fs
.
listDir
(
path
)
var
count
=
0
;
var
zipfiles
=
files
.
filter
(
function
(
item
){
if
(
/zip/ig
.
test
(
item
.
suffix
)
||
item
.
suffix
==
"rar"
||
item
.
suffix
==
"7z"
||
item
.
suffix
==
"ZIP"
)
{
if
(
/zip/ig
.
test
(
item
.
suffix
)
||
item
.
suffix
==
"rar"
||
item
.
suffix
==
"7z"
)
{
inputState
.
push
(
item
.
suffix
);
console
.
log
(
"--->path:"
+
item
.
path
)
if
(
zips
.
indexOf
(
item
.
path
)
<
0
){
zips
.
push
(
item
.
path
);
if
(
item
.
name
.
length
>=
30
&&
!
/�|
\?
/
.
test
(
item
.
name
))
{
//if(item.name.length >= 30 && !/�|\?/.test(item.name)) {
if
(
/
\w
/
.
test
(
item
.
name
)){
var
mvname
=
"custom"
+
count
+
"."
+
item
.
suffix
;
count
++
;
fs
.
rename
(
item
.
path
,
item
.
dir
+
"/"
+
mvname
);
fs
.
rename
(
item
.
path
,
item
.
dir
+
"/"
+
mvname
);
fs
.
copyFile
(
item
.
path
,
ATS_AIM_checkin
,
true
);
item
.
path
=
item
.
dir
+
"/"
+
mvname
zips
.
push
(
item
.
path
);
}
var
dir_name
=
item
.
path
.
replace
(
/
\.(
zipx|zip|7z|rar
)
$/ig
,
""
);
autoUn
(
item
.
path
,
dir_name
);
autoUn
(
item
.
path
,
dir_name
,
item
.
dir
);
return
true
}
}
...
...
@@ -678,12 +692,42 @@ function changePath(path) {
})
}
function
autoUn
(
path
,
dirname
)
{
function
autoUn
(
path
,
dirname
,
dir
)
{
// 解压密码逻辑 先获取 /home/toplinker/samba/unzip_pwd.txt
var
pw
=
"/home/toplinker/samba/unzip_pwd.txt"
;
var
pws
=
fs
.
readFile
(
pw
);
var
strs
=
pws
.
split
(
"
\n
"
)
var
ret
=
{};
strs
.
map
(
function
(
v
)
{
var
tmp
=
v
.
split
(
/
\s
+/
);
ret
[
tmp
[
0
].
trim
()]
=
tmp
[
1
].
trim
()
})
var
pwd
;
if
(
ret
[
Job
]){
pwd
=
ret
[
Job
]
}
if
(
fs
.
exists
(
dir
+
"/pw.txt"
)){
pwd
=
fs
.
readFile
(
dir
+
"/pw.txt"
);
}
if
(
/
\.
rar$/
.
test
(
path
)){
fs
.
mkdir
(
dirname
)
process
.
exec
(
'/opt/rar/unrar'
,
[
'x'
,
path
,
dirname
,
"-o+"
])
if
(
pwd
){
process
.
exec
(
'/opt/rar/unrar'
,
[
'x'
,
path
,
dirname
,
"-o+"
,
"-p"
+
pwd
])
}
else
{
process
.
exec
(
'/opt/rar/unrar'
,
[
'x'
,
path
,
dirname
,
"-o+"
])
}
}
else
{
process
.
exec
(
'/usr/local/lib/p7zip/7za'
,
[
'x'
,
path
,
"-o"
+
dirname
,
"-aoa"
])
if
(
pwd
){
process
.
exec
(
'/usr/local/lib/p7zip/7za'
,
[
'x'
,
path
,
"-o"
+
dirname
,
"-aoa"
,
"-p"
+
pwd
])
}
else
{
process
.
exec
(
'/usr/local/lib/p7zip/7za'
,
[
'x'
,
path
,
"-o"
+
dirname
,
"-aoa"
])
}
}
}
...
...
src/config_ats.js
View file @
de2bd998
...
...
@@ -448,8 +448,6 @@
}
],
"tl_name"
:
[
{
"orig_name"
:
[
"^comp_+_top$"
],
"tl_name"
:
"comp_+_top"
},
{
"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_(?:solder)paste"
,
"^spt(?:
\\
.gbr)?$"
,
"^past_top$"
],
"tl_name"
:
"past_top"
},
...
...
@@ -459,7 +457,7 @@
{
"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"
:
"^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$"
,
"^bottom
\\
.gbr$"
,
"^bottom
\\
.art$"
],
"tl_name"
:
"bottom"
},
...
...
@@ -597,27 +595,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|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"
:
[
"^tm
\\
.art$|
\\
.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"
:
[
"^bm
\\
.art$|
\\
.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"
:
[
"^(?:(?!assy|enig|pm|past|ss|silk|sm|soldermask
|via|plug).)+_top
\
.art$"
,
"^surface$"
,
"^top$"
,
"^top.art$|^pri
\\
.art$"
],
"tl_name"
:
"top"
},
{
"orig_name"
:
[
"^(?:(?!assy|enig|pm|past|ss|silk|sm|soldermask
|via|plug).)+_bottom
\
.art$"
,
"^base$"
,
"^bot
\\
.art$"
,
"^bottom$"
,
"^bottom
\\
.art$|^sec
\\
.art$"
],
"tl_name"
:
"bottom"
},
{
"orig_name"
:
[
"int(
\\
d+)
\\
.art"
],
"tl_name"
:
"l_($1+1)"
},
{
"orig_name"
:
[
"_top_lay(
\\
d+)"
],
"tl_name"
:
"d_1-($1)"
},
{
"orig_name"
:
[
"_lay(
\\
d+)_bot"
],
"tl_name"
:
"d_($1)-($1+1)"
},
{
"orig_name"
:
[
"_lay(
\\
d+)_lay(
\\
d+)"
,
"_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"
:
[
"lay-(
\\
d+)
\\
.art$"
,
"^(?: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"
:
[
"_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"
:
[
"^nth_layer$"
,
"^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"
:
[
"^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"
:
[
"top-enig"
,
"enig_top"
],
"tl_name"
:
"enig_top"
},
{
"orig_name"
:
[
"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)"
}
],
...
...
@@ -827,8 +825,6 @@
}
],
"tl_name"
:
[
{
"orig_name"
:
[
"^comp_+_top$"
],
"tl_name"
:
"comp_+_top"
},
{
"orig_name"
:
[
"^comp_+_bot$"
],
"tl_name"
:
"comp_+_bot"
},
{
"orig_name"
:
[
"^spt$|^pmt
\\
.art$"
,
"
\\
.pma$|
\\
.spa$"
,
"paste.?top|soldPasteTop|pastemask.?top"
,
"past_top"
],
"tl_name"
:
"past_top"
},
{
"orig_name"
:
[
"^spb$|^pmb
\\
.art$"
,
"
\\
.pmb$|
\\
.spb$"
,
"paste.?bot|soldPasteBot|pastemask.?bot"
,
"past_botm"
],
"tl_name"
:
"past_botm"
},
{
"orig_name"
:
[
"sst|tsilk|silktop"
,
"^sst
\\
.art$"
,
"
\\
.ssa$"
,
"silkscrntop|silkscreentop"
,
"silk.top|silk-top"
],
"tl_name"
:
"silk_top"
},
...
...
@@ -901,8 +897,6 @@
}
],
"tl_name"
:
[
{
"orig_name"
:
[
"^comp_+_top$"
],
"tl_name"
:
"comp_+_top"
},
{
"orig_name"
:
[
"^comp_+_bot$"
],
"tl_name"
:
"comp_+_bot"
},
{
"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"
},
...
...
@@ -975,8 +969,6 @@
}
],
"tl_name"
:
[
{
"orig_name"
:
[
"^comp_+_top$"
],
"tl_name"
:
"comp_+_top"
},
{
"orig_name"
:
[
"^comp_+_bot$"
],
"tl_name"
:
"comp_+_bot"
},
{
"orig_name"
:
[
"pasttop
\\
.art"
,
"past_top"
],
"tl_name"
:
"past_top"
},
{
"orig_name"
:
[
"pastbotm
\\
.art"
,
"past_bot"
],
"tl_name"
:
"past_botm"
},
{
"orig_name"
:
[
"^silktop
\\
.art$"
,
"silk_top"
],
"tl_name"
:
"silk_top"
},
...
...
@@ -1089,7 +1081,6 @@
}
},
"data_format"
:
[
{
"tl_name"
:
"comp_
\\
+_top"
,
"new_name"
:
"comp_+_top"
,
"attr"
:{}},
{
"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"
}},
...
...
@@ -1101,7 +1092,6 @@
{
"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"
:
"comp_
\\
+_bot"
,
"new_name"
:
"comp_+_bot"
,
"attr"
:{}},
{
"tl_name"
:
"d_(
\\
d+)-(
\\
d+)"
,
"new_name"
:
"ftdrill($1)-($2)l"
,
"attr"
:{
"context"
:
"board"
,
"type"
:
"drill"
}},
{
"tl_name"
:
"d(
\\
d+)-(
\\
d+)-(.*)"
,
"new_name"
:
"ftdrill($1)-($2)-($3)"
,
"attr"
:{
"context"
:
"board"
,
"type"
:
"drill"
}},
{
"tl_name"
:
"drill"
,
"new_name"
:
"ftdrill"
,
"attr"
:{
"context"
:
"board"
,
"type"
:
"drill"
}},
...
...
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