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
7daf8e0c
Commit
7daf8e0c
authored
5 years ago
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
300 additions
and
105 deletions
+300
-105
ATS_AIM_customer_data_analysis.js
ats/analysis/ATS_AIM_customer_data_analysis.js
+83
-75
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 @
7daf8e0c
...
...
@@ -102,7 +102,6 @@ try {
GEN
.
openStep
({
job
:
job
,
name
:
pcs_step
})
GEN
.
units
({
type
:
"mm"
})
_
.
values
(
matrix
).
forEach
(
function
(
v
){
if
(
v
.
context
==
"board"
&&
v
.
layer_type
==
"drill"
){
if
(
v
.
type
==
"laser_drill"
){
GEN
.
affectedLayer
({
affected
:
'no'
,
mode
:
'all'
})
...
...
@@ -307,21 +306,42 @@ try {
})
})
console
.
log
(
"=========== ===================> 6 set smd bga"
)
var
hasattrs
=
[
".smd"
,
".bga"
]
var
ishasattrs
=
hasattrs
.
reduce
(
function
(
a
,
b
){
// 判断是否含有.smd属性
if
(
!
hasAttr
({
job
:
job
,
step
:
pcs_step
,
attr
:
b
,
layers
:
analysis_obj
.
matrixInfo
.
mOuters
})){
a
=
false
}
return
a
},
true
)
if
(
!
ishasattrs
){
// 如果找不到.smd 分析.smd
GEN
.
COM
(
"chklist_single,action=valor_cleanup_set_smd,show=yes"
)
console
.
log
(
"=============================> 6 set smd bga"
)
var
allStep
=
GEN
.
getStepList
({
job
:
job
})
allStep
.
forEach
(
function
(
step
){
GEN
.
openStep
({
job
:
job
,
name
:
step
})
console
.
log
(
3
)
GEN
.
COM
(
"chklist_single,show=yes,action=valor_cleanup_set_smd"
)
console
.
log
(
4
)
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_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()
...
...
@@ -451,8 +471,13 @@ try {
},[])[
0
]
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
)
// 钻孔分析结果
console
.
log
(
"================drillRes:"
+
_
.
toString
(
drillRes
));
throw
"tmp"
// 数据入库
Object
.
keys
(
res
).
forEach
(
function
(
key
){
var
val
=
res
[
key
]
...
...
@@ -474,7 +499,6 @@ try {
})
// 铜面积
console
.
log
(
"=============================> 13 save copper_percent"
)
// 创建profile
var
copper_percent_pcs
=
signalLayers
.
map
(
function
(
v
){
var
tmp
=
{
layer
:
v
}
tmp
.
copper_percent
=
GEN
.
copperArea
({
layer1
:
v
}).
percent
+
"%"
...
...
@@ -1256,9 +1280,11 @@ function analysisDrill(par, step){
// {"layer":"d1-2","symbol":"r35.0394","start":"top","end":"bottom"}
var
job
=
Job
.
toLowerCase
()
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
.
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
})}
...
...
@@ -1267,20 +1293,9 @@ function analysisDrill(par, step){
GEN
.
selClearFeature
();
[
drill
.
start
,
drill
.
end
].
forEach
(
function
(
item
,
i
){
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"
,
{
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
)
{
...
...
@@ -1297,8 +1312,10 @@ function analysisDrill(par, step){
}
else
if
(
i
==
1
){
drill
.
drl_pad_bot
=
res
}
}
})
GEN
.
deleteLayer
({
job
:
job
,
step
:
step
,
layer
:
tmplayer
})
}
return
drill
})
return
res
...
...
@@ -1344,14 +1361,14 @@ function bgaAnalysis(props){
if
(
!
res
.
hasOwnProperty
(
layer
.
signalL
)){
res
[
layer
.
signalL
]
=
{}
}
res
[
layer
.
signalL
].
min
_bga_size
=
myFixed
(
min_symbols_info
[
"min_bga_size"
],
4
)
res
[
layer
.
signalL
].
min
_bga_openging_size
=
myFixed
(
min_symbols_info
[
"min_bga_openging_size"
],
4
)
res
[
layer
.
signalL
].
min
_bga_pitch
=
myFixed
(
min_symbols_info
[
"min_bga_pitch"
],
4
)
res
[
layer
.
signalL
].
min
1_bga_dia
=
myFixed
(
min_symbols_info
[
"min_bga_size"
],
2
)
res
[
layer
.
signalL
].
min
1_bga_sm_dia
=
myFixed
(
min_symbols_info
[
"min_bga_openging_size"
],
2
)
res
[
layer
.
signalL
].
min
1_bga_grid
=
myFixed
(
min_symbols_info
[
"min_bga_pitch"
],
2
)
// 分析所有BGA
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
].
bga_min_pitch_pad_size
=
myFixed
(
all_bga_min_pitch_info
[
"bga_min_pitch_pad_size"
],
4
)
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_grid
=
myFixed
(
all_bga_min_pitch_info
[
"bga_min_pitch"
],
2
)
res
[
layer
.
signalL
].
min2_bga_dia
=
myFixed
(
all_bga_min_pitch_info
[
"bga_min_pitch_pad_size"
],
2
)
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
})
}
})
...
...
@@ -1610,16 +1627,7 @@ function hasAttr(props){ // 判断层 有没有部分属性
}
function
myFixed
(
str
,
num
)
{
if
(
/^
[
1-9
][
0-9
]
*
([
.
][
0-9
]
+
)?
$/
.
test
(
str
)){
var
tmp
=
String
(
str
)
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
return
Number
(
str
).
toFixed
(
num
)
}
else
{
return
str
}
...
...
This diff is collapsed.
Click to expand it.
ats/input/ATS_AIM_data_input.js
View file @
7daf8e0c
...
...
@@ -74,7 +74,6 @@ var PAR = {};
if
(
$
.
hasOwnProperty
(
'script_parameter'
)){
PAR
=
JSON
.
parse
(
$
.
script_parameter
);
}
try
{
var
par
=
PAR
;
// var db_path = db.query("",function(q){
...
...
@@ -129,7 +128,7 @@ try {
var
path
=
par
.
path
console
.
log
(
"========= ====>path:"
+
path
)
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
){
return
q
.
selectValue
({
...
...
@@ -159,38 +158,32 @@ try {
var
err
=
importJob
({
name
:
job
,
db
:
custCfg
.
db
,
path
:
jobInfo
.
data
[
0
].
file
.
path
},
config
.
delSameJob
)
if
(
err
){
throw
err
}
}
else
{
// 多个tgz文件 说明需要合并
console
.
log
(
"==========合并的情况"
);
var
jobs
=
jobInfo
.
data
.
map
(
function
(
item
,
i
){
var
err
=
importJob
({
name
:
job
+
"_tmp_"
+
i
,
db
:
custCfg
.
db
,
path
:
item
.
file
.
path
},
config
.
delSameJob
)
if
(
err
){
throw
err
}
return
job
+
"_tmp_"
+
i
})
var
job_type
=
{
pcs
:
"pcs"
,
cad
:
"pcs"
,
stp
:
"arr"
,
arr
:
"arr"
,
array
:
"arr"
}
// 分析arr_job 和 pcs_job
jobs
=
jobs
.
map
(
function
(
jobname
){
GEN
.
openJob
({
job
:
jobname
});
var
step_tmp
=
GEN
.
getStepList
({
job
:
jobname
})[
0
]
var
type
=
job_type
[
step_tmp
]
var
type
=
getStepType
(
step_tmp
)
return
{
jobname
:
jobname
,
stepname
:
step_tmp
,
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
({
// 合并
source_job
:
arr_job
.
jobname
,
source_name
:
arr_job
.
stepname
,
dest_job
:
pcs_job
.
jobname
,
dest_name
:
arr_job
.
stepname
,
});
GEN
.
closeJob
({
job
:
arr_job
.
jobname
});
GEN
.
deleteJob
({
job
:
arr_job
.
jobname
});
// 合并后 删除array的料号
// 修改pcs料号名称
...
...
@@ -352,4 +345,12 @@ function importJob(props,delSameJob){
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
}
This diff is collapsed.
Click to expand it.
ats/rename/ATS_AIM_data_format.js
View file @
7daf8e0c
...
...
@@ -97,14 +97,19 @@ try {
if
(
!
GEN
.
isJobExists
({
job
:
job
})){
throw
"job "
+
job
+
" is not exist"
}
if
(
!
GEN
.
isJobOpen
({
job
:
job
})){
GEN
.
openJob
({
job
:
job
})}
if
(
GEN
.
checkInout
({
job
:
job
,
mode
:
"test"
})
!=
0
&&
mode
!=
"develop"
){
throw
"the job check"
}
console
.
log
(
"Checkout====== ========================>"
)
GEN
.
checkInout
({
job
:
job
,
mode
:
"out"
});
console
.
log
(
"Checkout success==============================>"
)
// if(config.hasOwnProperty("merge_drill")){ // todo
// mergeDrill({job:job})
// }
// 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
console
.
log
(
"tl_name add end:"
);
var
format_cfg
=
config
.
data_format
// 拿到数据标准化配置
...
...
This diff is collapsed.
Click to expand it.
ats/文件名称对应.md
0 → 100644
View file @
7daf8e0c
料号名称
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
This diff is collapsed.
Click to expand it.
config_ats.js
View file @
7daf8e0c
...
...
@@ -154,7 +154,7 @@
{
"valid"
:
function
(
props
){
var
file
=
props
.
file
;
return
/.+
\.
tgz$/ig
.
test
(
file
.
name
)
&&
!
(
/-a/ig
.
test
(
file
.
baseName
))
return
/.+
\.
tgz$/ig
.
test
(
file
.
name
)
},
"type"
:
"ODB"
,
"format"
:
"ODB"
...
...
@@ -267,10 +267,10 @@
}
],
"tl_name"
:
[
{
"orig_name"
:
[
"^s
st$"
,
"^past_top$"
],
"tl_name"
:
"past_top"
},
{
"orig_name"
:
[
"^s
s
b$"
,
"^past_botm$"
],
"tl_name"
:
"past_botm"
},
{
"orig_name"
:
[
"^s
p
t$"
,
"^silk_top$"
],
"tl_name"
:
"silk_top"
},
{
"orig_name"
:
[
"^s
p
b$"
,
"^silk_bot$"
],
"tl_name"
:
"silk_bot"
},
{
"orig_name"
:
[
"^s
pt$"
,
"^past_top$"
],
"tl_name"
:
"past_top"
},
{
"orig_name"
:
[
"^s
p
b$"
,
"^past_botm$"
],
"tl_name"
:
"past_botm"
},
{
"orig_name"
:
[
"^s
s
t$"
,
"^silk_top$"
],
"tl_name"
:
"silk_top"
},
{
"orig_name"
:
[
"^s
s
b$"
,
"^silk_bot$"
],
"tl_name"
:
"silk_bot"
},
{
"orig_name"
:
[
"^smt$"
,
"^sm_top$"
],
"tl_name"
:
"sm_top"
},
{
"orig_name"
:
[
"^smb$"
,
"^sm_botm$"
],
"tl_name"
:
"sm_botm"
},
{
"orig_name"
:
"^top$"
,
"tl_name"
:
"top"
},
...
...
@@ -405,8 +405,8 @@
"tl_name"
:
[
{
"orig_name"
:
[
"assytop.art"
,
"past_top"
],
"tl_name"
:
"past_top"
},
{
"orig_name"
:
[
"assybot.art"
,
"past_botm"
],
"tl_name"
:
"past_botm"
},
{
"orig_name"
:
[
"pleg.art"
,
"silk_top"
],
"tl_name"
:
"silk_top"
},
{
"orig_name"
:
[
"sleg.art"
,
"silk_bot"
],
"tl_name"
:
"silk_bot"
},
{
"orig_name"
:
[
"pleg.art"
,
"
^ss_top"
,
"
silk_top"
],
"tl_name"
:
"silk_top"
},
{
"orig_name"
:
[
"sleg.art"
,
"
^ss_bot"
,
"
silk_bot"
],
"tl_name"
:
"silk_bot"
},
{
"orig_name"
:
[
"ssm.art"
,
"sm_top"
],
"tl_name"
:
"sm_top"
},
{
"orig_name"
:
[
"psm.art"
,
"sm_bot"
],
"tl_name"
:
"sm_botm"
},
{
"orig_name"
:
[
"^top$"
,
"^top.art$"
],
"tl_name"
:
"top"
},
...
...
This diff is collapsed.
Click to expand it.
test/scott_test.js
0 → 100644
View file @
7daf8e0c
/*
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
This diff is collapsed.
Click to expand it.
test/test.js
View file @
7daf8e0c
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
);
This diff is collapsed.
Click to expand it.
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