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
a56b5476
Commit
a56b5476
authored
May 08, 2020
by
Scott Sun
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
s
parent
7c4785f5
Changes
7
Show whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
301 additions
and
106 deletions
+301
-106
ATS_AIM_customer_data_analysis.js
ats/analysis/ATS_AIM_customer_data_analysis.js
+84
-76
ATS_AIM_data_input.js
ats/input/ATS_AIM_data_input.js
+16
-15
ATS_AIM_data_format.js
ats/rename/ATS_AIM_data_format.js
+8
-3
文件名称对应.md
ats/文件名称对应.md
+15
-0
config_ats.js
config_ats.js
+7
-7
scott_test.js
test/scott_test.js
+163
-0
test.js
test/test.js
+8
-5
No files found.
ats/analysis/ATS_AIM_customer_data_analysis.js
View file @
a56b5476
...
@@ -102,7 +102,6 @@ try {
...
@@ -102,7 +102,6 @@ try {
GEN
.
openStep
({
job
:
job
,
name
:
pcs_step
})
GEN
.
openStep
({
job
:
job
,
name
:
pcs_step
})
GEN
.
units
({
type
:
"mm"
})
GEN
.
units
({
type
:
"mm"
})
_
.
values
(
matrix
).
forEach
(
function
(
v
){
_
.
values
(
matrix
).
forEach
(
function
(
v
){
if
(
v
.
context
==
"board"
&&
v
.
layer_type
==
"drill"
){
if
(
v
.
context
==
"board"
&&
v
.
layer_type
==
"drill"
){
if
(
v
.
type
==
"laser_drill"
){
if
(
v
.
type
==
"laser_drill"
){
GEN
.
affectedLayer
({
affected
:
'no'
,
mode
:
'all'
})
GEN
.
affectedLayer
({
affected
:
'no'
,
mode
:
'all'
})
...
@@ -307,21 +306,42 @@ try {
...
@@ -307,21 +306,42 @@ try {
})
})
})
})
console
.
log
(
"=========== ===================> 6 set smd bga"
)
console
.
log
(
"=============================> 6 set smd bga"
)
var
allStep
=
GEN
.
getStepList
({
job
:
job
})
allStep
.
forEach
(
function
(
step
){
var
hasattrs
=
[
".smd"
,
".bga"
]
GEN
.
openStep
({
job
:
job
,
name
:
step
})
var
ishasattrs
=
hasattrs
.
reduce
(
function
(
a
,
b
){
// 判断是否含有.smd属性
console
.
log
(
3
)
if
(
!
hasAttr
({
job
:
job
,
step
:
pcs_step
,
attr
:
b
,
layers
:
analysis_obj
.
matrixInfo
.
mOuters
})){
a
=
false
}
GEN
.
COM
(
"chklist_single,show=yes,action=valor_cleanup_set_smd"
)
return
a
console
.
log
(
4
)
},
true
)
if
(
!
ishasattrs
){
// 如果找不到.smd 分析.smd
GEN
.
COM
(
"chklist_single,action=valor_cleanup_set_smd,show=yes"
)
GEN
.
COM
(
"chklist_cupd,chklist=valor_cleanup_set_smd,nact=1,params=((pp_layer=.type=signal|mixed&side=top|bottom)(pp_work_on=SMD
\
;BGA)(pp_delete=No)(pp_types=Square
\
;Rect
\
;Oval)(pp_other_smd=)(pp_sm=No)(pp_drill=)(pp_rotate=No)(pp_ignore_covered=Yes)(pp_bga_types=Round)(pp_other_bga=)(pp_sm_bga=No)(pp_bga_max_pitch=70)(pp_bga_actions=Set attribute)(pp_bga_suffix=_bga)(pp_identify_gf=)),mode=regular"
)
GEN
.
COM
(
"chklist_cupd,chklist=valor_cleanup_set_smd,nact=1,params=((pp_layer=.type=signal|mixed&side=top|bottom)(pp_work_on=SMD
\
;BGA)(pp_delete=No)(pp_types=Square
\
;Rect
\
;Oval)(pp_other_smd=)(pp_sm=No)(pp_drill=)(pp_rotate=No)(pp_ignore_covered=Yes)(pp_bga_types=Round)(pp_other_bga=)(pp_sm_bga=No)(pp_bga_max_pitch=70)(pp_bga_actions=Set attribute)(pp_bga_suffix=_bga)(pp_identify_gf=)),mode=regular"
)
console
.
log
(
5
)
GEN
.
COM
(
"get_user_name"
)
console
.
log
(
6
)
GEN
.
COM
(
"get_job_path,job="
+
job
)
console
.
log
(
7
)
GEN
.
COM
(
"disp_on"
)
console
.
log
(
8
)
GEN
.
COM
(
"origin_on"
)
console
.
log
(
9
)
GEN
.
COM
(
"chklist_cnf_act,chklist=valor_cleanup_set_smd,nact=1,cnf=no"
)
console
.
log
(
10
)
GEN
.
COM
(
"chklist_run,chklist=valor_cleanup_set_smd,nact=1,area=profile"
)
GEN
.
COM
(
"chklist_run,chklist=valor_cleanup_set_smd,nact=1,area=profile"
)
GEN
.
COM
(
"chklist_close,chklist=valor_cleanup_set_smd,mode=hide"
)
console
.
log
(
11
)
}
GEN
.
COM
(
"skip_next_pre_hook"
)
console
.
log
(
12
)
GEN
.
COM
(
"chklist_run,chklist=valor_cleanup_set_smd,nact=1,area=profile"
)
console
.
log
(
13
)
GEN
.
COM
(
"get_user_name"
)
console
.
log
(
14
)
GEN
.
COM
(
"skip_current_command"
)
console
.
log
(
15
)
GEN
.
COM
(
"disp_on"
)
console
.
log
(
16
)
GEN
.
COM
(
"origin_on"
)
console
.
log
(
17
)
GEN
.
COM
(
"show_tab,tab=Checklists,show=no"
)
GEN
.
closeStep
()
})
// GEN.createChklist()
// GEN.createChklist()
...
@@ -451,8 +471,13 @@ try {
...
@@ -451,8 +471,13 @@ try {
},[])[
0
]
},[])[
0
]
return
{
layer
:
v
,
symbol
:
symbol
,
start
:
matrix
[
v
][
"drl_start"
],
end
:
matrix
[
v
][
"drl_end"
]}
return
{
layer
:
v
,
symbol
:
symbol
,
start
:
matrix
[
v
][
"drl_start"
],
end
:
matrix
[
v
][
"drl_end"
]}
})
})
console
.
log
(
"==================================
=
> 12 Drill analysis"
)
console
.
log
(
"==================================> 12 Drill analysis"
)
var
drillRes
=
analysisDrill
(
drillToSignals
,
step
)
// 钻孔分析结果
var
drillRes
=
analysisDrill
(
drillToSignals
,
step
)
// 钻孔分析结果
console
.
log
(
"================drillRes:"
+
_
.
toString
(
drillRes
));
throw
"tmp"
// 数据入库
// 数据入库
Object
.
keys
(
res
).
forEach
(
function
(
key
){
Object
.
keys
(
res
).
forEach
(
function
(
key
){
var
val
=
res
[
key
]
var
val
=
res
[
key
]
...
@@ -474,7 +499,6 @@ try {
...
@@ -474,7 +499,6 @@ try {
})
})
// 铜面积
// 铜面积
console
.
log
(
"=============================> 13 save copper_percent"
)
console
.
log
(
"=============================> 13 save copper_percent"
)
// 创建profile
var
copper_percent_pcs
=
signalLayers
.
map
(
function
(
v
){
var
copper_percent_pcs
=
signalLayers
.
map
(
function
(
v
){
var
tmp
=
{
layer
:
v
}
var
tmp
=
{
layer
:
v
}
tmp
.
copper_percent
=
GEN
.
copperArea
({
layer1
:
v
}).
percent
+
"%"
tmp
.
copper_percent
=
GEN
.
copperArea
({
layer1
:
v
}).
percent
+
"%"
...
@@ -1256,9 +1280,11 @@ function analysisDrill(par, step){
...
@@ -1256,9 +1280,11 @@ function analysisDrill(par, step){
// {"layer":"d1-2","symbol":"r35.0394","start":"top","end":"bottom"}
// {"layer":"d1-2","symbol":"r35.0394","start":"top","end":"bottom"}
var
job
=
Job
.
toLowerCase
()
var
job
=
Job
.
toLowerCase
()
var
res
=
par
.
map
(
function
(
drill
){
var
res
=
par
.
map
(
function
(
drill
){
GEN
.
affectedLayer
({
affected
:
"yes"
,
layer
:
drill
.
layer
,
clear_before
:
"yes"
,
mode
:
"all"
})
GEN
.
affectedLayer
({
affected
:
'no'
,
mode
:
'all'
})
GEN
.
affectedLayer
({
affected
:
'yes'
,
layer
:
drill
.
layer
})
GEN
.
selClearFeature
()
GEN
.
selClearFeature
()
GEN
.
selectByFilter
({
feat_types
:
"pad"
,
include_syms
:
drill
.
symbol
})
GEN
.
selectByFilter
({
feat_types
:
"pad"
,
include_syms
:
drill
.
symbol
})
if
(
GEN
.
getSelectCount
()
>
0
){
// 拷贝到_tmp
// 拷贝到_tmp
var
tmplayer
=
drill
.
layer
+
"_tmp"
var
tmplayer
=
drill
.
layer
+
"_tmp"
if
(
GEN
.
isLayerExists
({
job
:
job
,
layer
:
tmplayer
})){
GEN
.
deleteLayer
({
job
:
job
,
step
:
step
,
layer
:
tmplayer
})}
if
(
GEN
.
isLayerExists
({
job
:
job
,
layer
:
tmplayer
})){
GEN
.
deleteLayer
({
job
:
job
,
step
:
step
,
layer
:
tmplayer
})}
...
@@ -1267,20 +1293,9 @@ function analysisDrill(par, step){
...
@@ -1267,20 +1293,9 @@ function analysisDrill(par, step){
GEN
.
selClearFeature
();
GEN
.
selClearFeature
();
[
drill
.
start
,
drill
.
end
].
forEach
(
function
(
item
,
i
){
[
drill
.
start
,
drill
.
end
].
forEach
(
function
(
item
,
i
){
GEN
.
workLayer
({
name
:
item
,
display_number
:
1
,
clear_before
:
"yes"
})
GEN
.
workLayer
({
name
:
item
,
display_number
:
1
,
clear_before
:
"yes"
})
// GEN.selRefFeat({
// layers: tmplayer,
// use: "filter",
// mode: "touch",
// f_types: "pad",
// pads_as:"shape",
// polarity:"positive",
// include_syms:drill.symbol,
// filter: {
// feat_types:'pad'
// }
// })
GEN
.
COM
(
"sel_ref_feat"
,
GEN
.
COM
(
"sel_ref_feat"
,
{
layers
:
tmplayer
,
use
:
"filter"
,
mode
:
"touch"
,
pads_as
:
"shape"
,
f_types
:
"pad"
,
polarity
:
"positive
\
;negative"
,
include_syms
:
drill
.
symbol
})
{
layers
:
tmplayer
,
use
:
"filter"
,
mode
:
"touch"
,
pads_as
:
"shape"
,
f_types
:
"pad"
,
polarity
:
"positive
\
;negative"
,
include_syms
:
drill
.
symbol
})
if
(
GEN
.
getSelectCount
()
>
0
){
var
res
=
""
var
res
=
""
var
pads
=
GEN
.
getFeatures
({
job
:
job
,
step
:
step
,
layer
:
item
,
options
:
"select"
})
var
pads
=
GEN
.
getFeatures
({
job
:
job
,
step
:
step
,
layer
:
item
,
options
:
"select"
})
if
(
pads
&&
pads
.
length
)
{
if
(
pads
&&
pads
.
length
)
{
...
@@ -1297,8 +1312,10 @@ function analysisDrill(par, step){
...
@@ -1297,8 +1312,10 @@ function analysisDrill(par, step){
}
else
if
(
i
==
1
){
}
else
if
(
i
==
1
){
drill
.
drl_pad_bot
=
res
drill
.
drl_pad_bot
=
res
}
}
}
})
})
GEN
.
deleteLayer
({
job
:
job
,
step
:
step
,
layer
:
tmplayer
})
GEN
.
deleteLayer
({
job
:
job
,
step
:
step
,
layer
:
tmplayer
})
}
return
drill
return
drill
})
})
return
res
return
res
...
@@ -1344,14 +1361,14 @@ function bgaAnalysis(props){
...
@@ -1344,14 +1361,14 @@ function bgaAnalysis(props){
if
(
!
res
.
hasOwnProperty
(
layer
.
signalL
)){
if
(
!
res
.
hasOwnProperty
(
layer
.
signalL
)){
res
[
layer
.
signalL
]
=
{}
res
[
layer
.
signalL
]
=
{}
}
}
res
[
layer
.
signalL
].
min
_bga_size
=
myFixed
(
min_symbols_info
[
"min_bga_size"
],
4
)
res
[
layer
.
signalL
].
min
1_bga_dia
=
myFixed
(
min_symbols_info
[
"min_bga_size"
],
2
)
res
[
layer
.
signalL
].
min
_bga_openging_size
=
myFixed
(
min_symbols_info
[
"min_bga_openging_size"
],
4
)
res
[
layer
.
signalL
].
min
1_bga_sm_dia
=
myFixed
(
min_symbols_info
[
"min_bga_openging_size"
],
2
)
res
[
layer
.
signalL
].
min
_bga_pitch
=
myFixed
(
min_symbols_info
[
"min_bga_pitch"
],
4
)
res
[
layer
.
signalL
].
min
1_bga_grid
=
myFixed
(
min_symbols_info
[
"min_bga_pitch"
],
2
)
// 分析所有BGA
// 分析所有BGA
var
all_bga_min_pitch_info
=
all_bga_min_pitch_anal
({
job
:
job
,
step
:
step
,
layer
:
tmp_layer
,
solderLayer
:
layer
.
solderL
})
var
all_bga_min_pitch_info
=
all_bga_min_pitch_anal
({
job
:
job
,
step
:
step
,
layer
:
tmp_layer
,
solderLayer
:
layer
.
solderL
})
res
[
layer
.
signalL
].
bga_min_pitch
=
myFixed
(
all_bga_min_pitch_info
[
"bga_min_pitch"
],
4
)
res
[
layer
.
signalL
].
min2_bga_grid
=
myFixed
(
all_bga_min_pitch_info
[
"bga_min_pitch"
],
2
)
res
[
layer
.
signalL
].
bga_min_pitch_pad_size
=
myFixed
(
all_bga_min_pitch_info
[
"bga_min_pitch_pad_size"
],
4
)
res
[
layer
.
signalL
].
min2_bga_dia
=
myFixed
(
all_bga_min_pitch_info
[
"bga_min_pitch_pad_size"
],
2
)
res
[
layer
.
signalL
].
bga_min_pitch_openging_size
=
myFixed
(
all_bga_min_pitch_info
[
"bga_min_pitch_openging_size"
],
4
)
res
[
layer
.
signalL
].
min2_bga_sm_dia
=
myFixed
(
all_bga_min_pitch_info
[
"bga_min_pitch_openging_size"
],
2
)
GEN
.
deleteLayer
({
job
:
job
,
layer
:
tmp_layer
})
GEN
.
deleteLayer
({
job
:
job
,
layer
:
tmp_layer
})
}
}
})
})
...
@@ -1610,16 +1627,7 @@ function hasAttr(props){ // 判断层 有没有部分属性
...
@@ -1610,16 +1627,7 @@ function hasAttr(props){ // 判断层 有没有部分属性
}
}
function
myFixed
(
str
,
num
)
{
function
myFixed
(
str
,
num
)
{
if
(
/^
[
1-9
][
0-9
]
*
([
.
][
0-9
]
+
)?
$/
.
test
(
str
)){
if
(
/^
[
1-9
][
0-9
]
*
([
.
][
0-9
]
+
)?
$/
.
test
(
str
)){
var
tmp
=
String
(
str
)
return
Number
(
str
).
toFixed
(
num
)
if
(
tmp
.
search
(
/
\.
/
)
>=
0
){
tmp
=
tmp
.
split
(
"."
)
if
(
tmp
[
1
].
length
>
num
){
tmp
[
1
]
=
tmp
[
1
].
substr
(
0
,
num
)
return
tmp
.
join
(
"."
)
}
return
str
}
return
str
}
else
{
}
else
{
return
str
return
str
}
}
...
...
ats/input/ATS_AIM_data_input.js
View file @
a56b5476
...
@@ -74,7 +74,6 @@ var PAR = {};
...
@@ -74,7 +74,6 @@ var PAR = {};
if
(
$
.
hasOwnProperty
(
'script_parameter'
)){
if
(
$
.
hasOwnProperty
(
'script_parameter'
)){
PAR
=
JSON
.
parse
(
$
.
script_parameter
);
PAR
=
JSON
.
parse
(
$
.
script_parameter
);
}
}
try
{
try
{
var
par
=
PAR
;
var
par
=
PAR
;
// var db_path = db.query("",function(q){
// var db_path = db.query("",function(q){
...
@@ -129,7 +128,7 @@ try {
...
@@ -129,7 +128,7 @@ try {
var
path
=
par
.
path
var
path
=
par
.
path
console
.
log
(
"========= ====>path:"
+
path
)
console
.
log
(
"========= ====>path:"
+
path
)
if
(
!
fs
.
exists
(
path
)){
throw
"path error"
}
if
(
!
fs
.
exists
(
path
)){
throw
"path error"
}
var
pathInfo
=
fs
.
listDir
(
path
,
1
)
var
pathInfo
=
fs
.
listDir
(
path
+
"/"
+
db_customer
.
toLowerCase
()
,
1
)
// 判断存不存在料号文件
// 判断存不存在料号文件
var
vc_position
=
db
.
query
(
""
,
function
(
q
){
var
vc_position
=
db
.
query
(
""
,
function
(
q
){
return
q
.
selectValue
({
return
q
.
selectValue
({
...
@@ -159,38 +158,32 @@ try {
...
@@ -159,38 +158,32 @@ try {
var
err
=
importJob
({
name
:
job
,
db
:
custCfg
.
db
,
path
:
jobInfo
.
data
[
0
].
file
.
path
},
config
.
delSameJob
)
var
err
=
importJob
({
name
:
job
,
db
:
custCfg
.
db
,
path
:
jobInfo
.
data
[
0
].
file
.
path
},
config
.
delSameJob
)
if
(
err
){
throw
err
}
if
(
err
){
throw
err
}
}
else
{
// 多个tgz文件 说明需要合并
}
else
{
// 多个tgz文件 说明需要合并
console
.
log
(
"==========合并的情况"
);
var
jobs
=
jobInfo
.
data
.
map
(
function
(
item
,
i
){
var
jobs
=
jobInfo
.
data
.
map
(
function
(
item
,
i
){
var
err
=
importJob
({
name
:
job
+
"_tmp_"
+
i
,
db
:
custCfg
.
db
,
path
:
item
.
file
.
path
},
config
.
delSameJob
)
var
err
=
importJob
({
name
:
job
+
"_tmp_"
+
i
,
db
:
custCfg
.
db
,
path
:
item
.
file
.
path
},
config
.
delSameJob
)
if
(
err
){
throw
err
}
if
(
err
){
throw
err
}
return
job
+
"_tmp_"
+
i
return
job
+
"_tmp_"
+
i
})
})
var
job_type
=
{
pcs
:
"pcs"
,
cad
:
"pcs"
,
stp
:
"arr"
,
arr
:
"arr"
,
array
:
"arr"
}
// 分析arr_job 和 pcs_job
// 分析arr_job 和 pcs_job
jobs
=
jobs
.
map
(
function
(
jobname
){
jobs
=
jobs
.
map
(
function
(
jobname
){
GEN
.
openJob
({
job
:
jobname
});
GEN
.
openJob
({
job
:
jobname
});
var
step_tmp
=
GEN
.
getStepList
({
job
:
jobname
})[
0
]
var
step_tmp
=
GEN
.
getStepList
({
job
:
jobname
})[
0
]
var
type
=
job_type
[
step_tmp
]
var
type
=
getStepType
(
step_tmp
)
return
{
return
{
jobname
:
jobname
,
jobname
:
jobname
,
stepname
:
step_tmp
,
stepname
:
step_tmp
,
type
:
type
type
:
type
}
}
})
})
var
pcs_job
=
jobs
.
filter
(
function
(
v
){
return
v
.
type
==
"pcs"
})
var
arr_job
=
jobs
.
filter
(
function
(
v
){
return
v
.
type
==
"arr"
})
var
pcs_job
=
jobs
.
filter
(
function
(
v
){
return
v
.
type
==
"pcs"
})[
0
]
var
arr_job
=
jobs
.
filter
(
function
(
v
){
return
v
.
type
==
"arr"
})[
0
]
GEN
.
copyStep
({
// 合并
GEN
.
copyStep
({
// 合并
source_job
:
arr_job
.
jobname
,
source_job
:
arr_job
.
jobname
,
source_name
:
arr_job
.
stepname
,
source_name
:
arr_job
.
stepname
,
dest_job
:
pcs_job
.
jobname
,
dest_job
:
pcs_job
.
jobname
,
dest_name
:
arr_job
.
stepname
,
dest_name
:
arr_job
.
stepname
,
});
});
GEN
.
closeJob
({
job
:
arr_job
.
jobname
});
GEN
.
closeJob
({
job
:
arr_job
.
jobname
});
GEN
.
deleteJob
({
job
:
arr_job
.
jobname
});
// 合并后 删除array的料号
GEN
.
deleteJob
({
job
:
arr_job
.
jobname
});
// 合并后 删除array的料号
// 修改pcs料号名称
// 修改pcs料号名称
...
@@ -352,4 +345,12 @@ function importJob(props,delSameJob){
...
@@ -352,4 +345,12 @@ function importJob(props,delSameJob){
GEN
.
importJob
(
props
);
GEN
.
importJob
(
props
);
}
}
function
getStepType
(
step
){
if
(
/pcs|cad|orig/ig
.
test
(
step
)){
return
"pcs"
}
if
(
/stp|arr/ig
.
test
(
step
)){
return
"arr"
}
return
pcs
}
ats/rename/ATS_AIM_data_format.js
View file @
a56b5476
...
@@ -97,14 +97,19 @@ try {
...
@@ -97,14 +97,19 @@ try {
if
(
!
GEN
.
isJobExists
({
job
:
job
})){
throw
"job "
+
job
+
" is not exist"
}
if
(
!
GEN
.
isJobExists
({
job
:
job
})){
throw
"job "
+
job
+
" is not exist"
}
if
(
!
GEN
.
isJobOpen
({
job
:
job
})){
GEN
.
openJob
({
job
:
job
})}
if
(
!
GEN
.
isJobOpen
({
job
:
job
})){
GEN
.
openJob
({
job
:
job
})}
if
(
GEN
.
checkInout
({
job
:
job
,
mode
:
"test"
})
!=
0
&&
mode
!=
"develop"
){
throw
"the job check"
}
if
(
GEN
.
checkInout
({
job
:
job
,
mode
:
"test"
})
!=
0
&&
mode
!=
"develop"
){
throw
"the job check"
}
console
.
log
(
"Checkout====== ========================>"
)
GEN
.
checkInout
({
job
:
job
,
mode
:
"out"
});
GEN
.
checkInout
({
job
:
job
,
mode
:
"out"
});
console
.
log
(
"Checkout success==============================>"
)
// if(config.hasOwnProperty("merge_drill")){ // todo
// if(config.hasOwnProperty("merge_drill")){ // todo
// mergeDrill({job:job})
// mergeDrill({job:job})
// }
// }
// start martix_tl_name
// start martix_tl_name
var
matrix
=
GEN
.
getMatrix
({
job
:
job
})
console
.
log
(
"get matrix ====== ======== job:"
+
job
);
var
matrix
=
GEN
.
getMatrix
({
job
:
job
});
console
.
log
(
"=========matrix:"
+
_
.
toString
(
matrix
));
console
.
log
(
"matrix add tl_name :"
);
var
tl_name_matrix
=
tlNameMatrix
({
matrix
:
matrix
,
tl_name
:
custCfg
.
tl_name
})
// 给matrix信息添加tl_name
var
tl_name_matrix
=
tlNameMatrix
({
matrix
:
matrix
,
tl_name
:
custCfg
.
tl_name
})
// 给matrix信息添加tl_name
console
.
log
(
"tl_name add end:"
);
var
format_cfg
=
config
.
data_format
// 拿到数据标准化配置
var
format_cfg
=
config
.
data_format
// 拿到数据标准化配置
...
...
ats/文件名称对应.md
0 → 100644
View file @
a56b5476
料号名称
0000/222 spt smt top isl2 ... isl7 bottom smb spb rout d_top_isl2 ... d_isl7_bottom drill bot_testpoint bot_stiffener top_osp bot_osp outline top_enig bot_enig top_assem bot_assem
3333333 spt smt top isl2 ... isl7 bottom smb spb rout d_top_isl2 ... d_isl7_bottom drill ssb sst top_testpoint bot_testpoint bot_assy_mate top_assy_mate
1 spt smt top isl2 ... isl7 bottom smb spb rout d_top_isl2 ... d_isl7_bottom drill top_assem bot_assem top_testpoint bot_testpoint
top_osp bot_osp top_enig bot_enig fab_page2 bot_assy_mate top_assy_mate tmp_top_shorts tmp_bot_shorts ssb sst
i3 bottom.art top.art fab.art lay2.art ... lay9.art multipack.art
outline.art pleg.art ppst.art psm.art sleg.art spst.art ssm.art k55387-002-1-10.drl k55387-002-1-2-laser.drl ... k55387-002-1-10.rou
i6 01_topccp_ms... 02ccp_ms... ... 06_botccp_ms... as_topccp_ms... dimensionsccp_ms... outlineccp_ms... pm_topccp_ms... sm_botccp_ms... sm_topccp_ms... ss_botccp_ms... ss_topccp_ms... via_plugccp_ms... ...1-2-laser.drl ...1-6.drl
config_ats.js
View file @
a56b5476
...
@@ -154,7 +154,7 @@
...
@@ -154,7 +154,7 @@
{
{
"valid"
:
function
(
props
){
"valid"
:
function
(
props
){
var
file
=
props
.
file
;
var
file
=
props
.
file
;
return
/.+
\.
tgz$/ig
.
test
(
file
.
name
)
&&
!
(
/-a/ig
.
test
(
file
.
baseName
))
return
/.+
\.
tgz$/ig
.
test
(
file
.
name
)
},
},
"type"
:
"ODB"
,
"type"
:
"ODB"
,
"format"
:
"ODB"
"format"
:
"ODB"
...
@@ -267,10 +267,10 @@
...
@@ -267,10 +267,10 @@
}
}
],
],
"tl_name"
:
[
"tl_name"
:
[
{
"orig_name"
:
[
"^s
st$"
,
"^past_top$"
],
"tl_name"
:
"past_top"
},
{
"orig_name"
:
[
"^s
pt$"
,
"^past_top$"
],
"tl_name"
:
"past_top"
},
{
"orig_name"
:
[
"^s
s
b$"
,
"^past_botm$"
],
"tl_name"
:
"past_botm"
},
{
"orig_name"
:
[
"^s
p
b$"
,
"^past_botm$"
],
"tl_name"
:
"past_botm"
},
{
"orig_name"
:
[
"^s
p
t$"
,
"^silk_top$"
],
"tl_name"
:
"silk_top"
},
{
"orig_name"
:
[
"^s
s
t$"
,
"^silk_top$"
],
"tl_name"
:
"silk_top"
},
{
"orig_name"
:
[
"^s
p
b$"
,
"^silk_bot$"
],
"tl_name"
:
"silk_bot"
},
{
"orig_name"
:
[
"^s
s
b$"
,
"^silk_bot$"
],
"tl_name"
:
"silk_bot"
},
{
"orig_name"
:
[
"^smt$"
,
"^sm_top$"
],
"tl_name"
:
"sm_top"
},
{
"orig_name"
:
[
"^smt$"
,
"^sm_top$"
],
"tl_name"
:
"sm_top"
},
{
"orig_name"
:
[
"^smb$"
,
"^sm_botm$"
],
"tl_name"
:
"sm_botm"
},
{
"orig_name"
:
[
"^smb$"
,
"^sm_botm$"
],
"tl_name"
:
"sm_botm"
},
{
"orig_name"
:
"^top$"
,
"tl_name"
:
"top"
},
{
"orig_name"
:
"^top$"
,
"tl_name"
:
"top"
},
...
@@ -405,8 +405,8 @@
...
@@ -405,8 +405,8 @@
"tl_name"
:
[
"tl_name"
:
[
{
"orig_name"
:
[
"assytop.art"
,
"past_top"
],
"tl_name"
:
"past_top"
},
{
"orig_name"
:
[
"assytop.art"
,
"past_top"
],
"tl_name"
:
"past_top"
},
{
"orig_name"
:
[
"assybot.art"
,
"past_botm"
],
"tl_name"
:
"past_botm"
},
{
"orig_name"
:
[
"assybot.art"
,
"past_botm"
],
"tl_name"
:
"past_botm"
},
{
"orig_name"
:
[
"pleg.art"
,
"silk_top"
],
"tl_name"
:
"silk_top"
},
{
"orig_name"
:
[
"pleg.art"
,
"
^ss_top"
,
"
silk_top"
],
"tl_name"
:
"silk_top"
},
{
"orig_name"
:
[
"sleg.art"
,
"silk_bot"
],
"tl_name"
:
"silk_bot"
},
{
"orig_name"
:
[
"sleg.art"
,
"
^ss_bot"
,
"
silk_bot"
],
"tl_name"
:
"silk_bot"
},
{
"orig_name"
:
[
"ssm.art"
,
"sm_top"
],
"tl_name"
:
"sm_top"
},
{
"orig_name"
:
[
"ssm.art"
,
"sm_top"
],
"tl_name"
:
"sm_top"
},
{
"orig_name"
:
[
"psm.art"
,
"sm_bot"
],
"tl_name"
:
"sm_botm"
},
{
"orig_name"
:
[
"psm.art"
,
"sm_bot"
],
"tl_name"
:
"sm_botm"
},
{
"orig_name"
:
[
"^top$"
,
"^top.art$"
],
"tl_name"
:
"top"
},
{
"orig_name"
:
[
"^top$"
,
"^top.art$"
],
"tl_name"
:
"top"
},
...
...
test/scott_test.js
0 → 100644
View file @
a56b5476
/*
NAME:
DESCRIPTION: ;
PARAMETER:
[
]
VERSION_HISTORY:
V1.00 2020-04-17 Scott Sun
1.新版本
HELP:
<html><body bgcolor="#DDECFE">
<font size="3" color="#003DB2"><p>功能简介</p></font>
<p> 数据标准化 </p>
<br>
<font size="3" color="#003DB2"><p>参数配置</p></font>
<p> 客户配置 </p>
<br>
<font size="3" color="#003DB2"><p>注意事项</p></font>
<p> 无 </p>
<br>
</body></html>
*/
//////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////
// 引入模块 包
console
.
log
(
"==============================================>scott test"
)
var
$
=
require
(
'topcam.scriptfunc'
).
argv
();
var
fs
=
require
(
'fs'
);
var
_
=
require
(
'lodash'
);
var
database
=
require
(
"topsin.database"
);
database
.
addConnection
(
$
.
conf
.
database_conf
,
"DFM"
);
var
QDfm
=
database
.
query
(
"DFM"
);
if
(
$
.
conf
.
product_type
==
"aimdfm"
)
{
QDfm
.
updateRow
({
table
:
"pdm_aimdfm_task"
,
data
:
{
current_process_title
:
$
.
process_title
},
where
:
{
id
:
$
.
task_id
}
});
}
var
GEN
=
$
.
gen
;
var
Job
=
$
.
job_name
;
var
db
=
$
.
db
;
var
JobId
=
$
.
job_id
;
var
Status
=
'ok'
;
var
resultData
=
[];
var
PAR
=
{};
if
(
$
.
hasOwnProperty
(
'script_parameter'
)){
PAR
=
JSON
.
parse
(
$
.
script_parameter
);
}
try
{
var
job
=
Job
;
if
(
_
.
isEmpty
(
job
))
throw
"没有传入料号名!"
;
job
=
job
.
toLowerCase
()
// 料号验证
if
(
!
GEN
.
isJobExists
({
job
:
job
})){
throw
"job "
+
job
+
" is not exist"
}
if
(
!
GEN
.
isJobOpen
({
job
:
job
})){
GEN
.
openJob
({
job
:
job
})}
var
matrix
=
GEN
.
getMatrix
({
job
:
job
})
var
drillLayers
=
Object
.
keys
(
matrix
).
filter
(
function
(
v
){
return
matrix
[
v
].
layer_type
==
"drill"
})
var
step
=
"cad"
GEN
.
openStep
({
job
:
job
,
name
:
step
})
console
.
log
(
"==================================>drillLayers:"
+
_
.
toString
(
drillLayers
))
// 钻孔
var
drillToSignals
=
drillLayers
.
map
(
function
(
v
){
// 获取到钻孔层对应的顶层和底层
var
simbols
=
GEN
.
getLayerSymsHist
({
job
:
job
,
step
:
step
,
layer
:
v
})
var
symbol
=
_
.
values
(
simbols
).
sort
(
function
(
a
,
b
){
return
Number
(
a
.
size
)
-
Number
(
b
.
size
)})
.
reduce
(
function
(
a
,
b
){
if
(
b
.
pad
!=
"0"
){
a
.
push
(
b
.
symbol
)
}
return
a
},[])[
0
]
return
{
layer
:
v
,
symbol
:
symbol
,
start
:
matrix
[
v
][
"drl_start"
],
end
:
matrix
[
v
][
"drl_end"
]}
})
console
.
log
(
"==================================>drillToSignals:"
+
_
.
toString
(
drillToSignals
))
var
drillRes
=
analysisDrill
(
drillToSignals
,
step
)
// 钻孔分析结果
console
.
log
(
"==================================>drillRes:"
+
_
.
toString
(
drillRes
))
QDfm
.
updateRow
({
table
:
"pdm_aimdfm_task"
,
data
:
{
progress
:
33.33
},
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
};
}
}
catch
(
e
)
{
Status
=
'error'
;
resultData
.
push
({
type
:
"error"
,
title
:
"脚本执行出错!"
,
detail
:
[{
desc
:
_
.
toString
(
e
)}]});
return
{
status
:
Status
,
result_data
:
resultData
};
}
function
analysisDrill
(
par
,
step
){
// {"layer":"d1-2","symbol":"r3.937","start":"top","end":"isl2"}
// {"layer":"d1-2","symbol":"r35.0394","start":"top","end":"bottom"}
var
job
=
Job
.
toLowerCase
()
var
res
=
par
.
map
(
function
(
drill
){
GEN
.
affectedLayer
({
affected
:
'no'
,
mode
:
'all'
})
GEN
.
affectedLayer
({
affected
:
'yes'
,
layer
:
drill
.
layer
})
GEN
.
selClearFeature
()
GEN
.
selectByFilter
({
feat_types
:
"pad"
,
include_syms
:
drill
.
symbol
})
if
(
GEN
.
getSelectCount
()
>
0
){
// 拷贝到_tmp
var
tmplayer
=
drill
.
layer
+
"_tmp"
if
(
GEN
.
isLayerExists
({
job
:
job
,
layer
:
tmplayer
})){
GEN
.
deleteLayer
({
job
:
job
,
step
:
step
,
layer
:
tmplayer
})}
GEN
.
selCopyOther
({
dest
:
"layer_name"
,
target_layer
:
tmplayer
})
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
.
COM
(
"sel_ref_feat"
,
{
layers
:
tmplayer
,
use
:
"filter"
,
mode
:
"touch"
,
pads_as
:
"shape"
,
f_types
:
"pad"
,
polarity
:
"positive
\
;negative"
,
include_syms
:
drill
.
symbol
})
if
(
GEN
.
getSelectCount
()
>
0
){
var
res
=
""
var
pads
=
GEN
.
getFeatures
({
job
:
job
,
step
:
step
,
layer
:
item
,
options
:
"select"
})
if
(
pads
&&
pads
.
length
)
{
pads
=
pads
.
filter
(
function
(
item
){
return
/^r
\d
+/
.
test
(
item
.
symbol
)
})
pads
=
pads
.
sort
(
function
(
a
,
b
){
return
parseInt
(
a
.
symbol
)
-
parseInt
(
b
.
symbol
)
})
res
=
pads
[
0
].
symbol
.
slice
(
1
)
}
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
})
}
return
drill
})
return
res
}
\ No newline at end of file
test/test.js
View file @
a56b5476
var
step
=
"arr"
console
.
log
(
getStepType
(
step
));
var
t
=
"orig"
var
step_reg
=
new
RegExp
(
t
)
var
list
=
[
"orig"
,
"net"
]
list
=
list
.
filter
(
function
(
v
){
return
step_reg
.
test
(
v
)})
console
.
log
(
list
);
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