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
e3a61df3
Commit
e3a61df3
authored
May 08, 2020
by
Scott Sun
Browse files
Options
Browse Files
Download
Plain Diff
s
parents
a56b5476
d5195a76
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
208 additions
and
673 deletions
+208
-673
ATS_AIM_customer_data_analysis.js
ats/analysis/ATS_AIM_customer_data_analysis.js
+22
-21
backup.js
ats/analysis/backup.js
+183
-649
scott_test.js
test/scott_test.js
+3
-3
No files found.
ats/analysis/ATS_AIM_customer_data_analysis.js
View file @
e3a61df3
...
@@ -100,7 +100,6 @@ try {
...
@@ -100,7 +100,6 @@ try {
}
}
var
matrix
=
UPLOAD_LAYER_MATRIX
({
job
:
job
})
// 分析matrix 获得分析后的matrix信息
var
matrix
=
UPLOAD_LAYER_MATRIX
({
job
:
job
})
// 分析matrix 获得分析后的matrix信息
GEN
.
openStep
({
job
:
job
,
name
:
pcs_step
})
GEN
.
openStep
({
job
:
job
,
name
:
pcs_step
})
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"
){
...
@@ -306,6 +305,8 @@ try {
...
@@ -306,6 +305,8 @@ try {
})
})
})
})
console
.
log
(
"=============================> 6 set smd bga"
)
console
.
log
(
"=============================> 6 set smd bga"
)
var
allStep
=
GEN
.
getStepList
({
job
:
job
})
var
allStep
=
GEN
.
getStepList
({
job
:
job
})
allStep
.
forEach
(
function
(
step
){
allStep
.
forEach
(
function
(
step
){
...
@@ -459,6 +460,7 @@ try {
...
@@ -459,6 +460,7 @@ try {
// signal层分析结果
// signal层分析结果
var
res
=
analysisChkAttr
({
layers
:
signalLayers
,
info
:
info
,
step
:
step
,
job
:
job
,
oChecklistName
:
oChecklistName
})
var
res
=
analysisChkAttr
({
layers
:
signalLayers
,
info
:
info
,
step
:
step
,
job
:
job
,
oChecklistName
:
oChecklistName
})
console
.
log
(
"==================================> Drill analysis"
)
// 钻孔
// 钻孔
var
drillToSignals
=
drillLayers
.
map
(
function
(
v
){
// 获取到钻孔层对应的顶层和底层
var
drillToSignals
=
drillLayers
.
map
(
function
(
v
){
// 获取到钻孔层对应的顶层和底层
var
simbols
=
GEN
.
getLayerSymsHist
({
job
:
job
,
step
:
step
,
layer
:
v
})
var
simbols
=
GEN
.
getLayerSymsHist
({
job
:
job
,
step
:
step
,
layer
:
v
})
...
@@ -469,24 +471,12 @@ try {
...
@@ -469,24 +471,12 @@ try {
}
}
return
a
return
a
},[])[
0
]
},[])[
0
]
return
{
layer
:
v
,
symbol
:
symbol
,
start
:
matrix
[
v
][
"drl_start"
],
end
:
matrix
[
v
][
"drl_end"
]}
return
{
layer
:
v
,
symbol
:
symbol
,
start
:
tmp_matrix
[
v
][
"drl_start"
],
end
:
tmp_
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
));
console
.
log
(
"=========== =====drillRes:"
+
_
.
toString
(
drillRes
));
throw
"tmp"
// 数据入库
Object
.
keys
(
res
).
forEach
(
function
(
key
){
var
val
=
res
[
key
]
save_layerinfo
({
jobid
:
JobId
,
layer
:
key
,
layerinfohash
:
val
})
})
drillRes
.
forEach
(
function
(
item
){
drillRes
.
forEach
(
function
(
item
){
save_layerinfo
({
save_layerinfo
({
jobid
:
JobId
,
jobid
:
JobId
,
...
@@ -497,6 +487,17 @@ try {
...
@@ -497,6 +487,17 @@ try {
}
}
})
})
})
})
throw
"tmp"
// 数据入库
Object
.
keys
(
res
).
forEach
(
function
(
key
){
var
val
=
res
[
key
]
save_layerinfo
({
jobid
:
JobId
,
layer
:
key
,
layerinfohash
:
val
})
})
// 铜面积
// 铜面积
console
.
log
(
"=============================> 13 save copper_percent"
)
console
.
log
(
"=============================> 13 save copper_percent"
)
var
copper_percent_pcs
=
signalLayers
.
map
(
function
(
v
){
var
copper_percent_pcs
=
signalLayers
.
map
(
function
(
v
){
...
@@ -1054,7 +1055,7 @@ function smdAnalysis(props){
...
@@ -1054,7 +1055,7 @@ function smdAnalysis(props){
var
layers
=
props
.
layers
var
layers
=
props
.
layers
var
res
=
{}
var
res
=
{}
steplist
.
forEach
(
function
(
step
){
steplist
.
forEach
(
function
(
step
){
GEN
.
openStep
({
job
:
job
,
step
:
step
})
GEN
.
openStep
({
job
:
job
,
name
:
step
})
layers
.
forEach
(
function
(
layer
){
layers
.
forEach
(
function
(
layer
){
// 计算开窗 数量
// 计算开窗 数量
if
(
layer
.
solderL
){
if
(
layer
.
solderL
){
...
@@ -1257,7 +1258,6 @@ function analysisChkAttr(par) {
...
@@ -1257,7 +1258,6 @@ function analysisChkAttr(par) {
job
:
job
,
job
:
job
,
step
:
par
.
step
,
step
:
par
.
step
,
checklist
:
oChecklistName
,
checklist
:
oChecklistName
,
units
:
"mm"
,
nact
:
1
,
nact
:
1
,
attr
:
v
+
"_min_"
+
type
attr
:
v
+
"_min_"
+
type
})
})
...
@@ -1279,12 +1279,13 @@ function analysisDrill(par, step){
...
@@ -1279,12 +1279,13 @@ function analysisDrill(par, step){
// {"layer":"d1-2","symbol":"r3.937","start":"top","end":"isl2"}
// {"layer":"d1-2","symbol":"r3.937","start":"top","end":"isl2"}
// {"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
()
GEN
.
affectedLayer
({
affected
:
'no'
,
mode
:
'all'
})
var
res
=
par
.
map
(
function
(
drill
){
var
res
=
par
.
map
(
function
(
drill
){
GEN
.
affectedLayer
({
affected
:
'no'
,
mode
:
'all'
})
GEN
.
workLayer
({
name
:
drill
.
layer
,
display_number
:
2
,
clear_before
:
'yes'
})
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
){
if
(
GEN
.
getSelectCount
()
>
0
){
console
.
log
(
"==========================>jinru 111111111"
)
// 拷贝到_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
})}
...
@@ -1336,7 +1337,7 @@ function bgaAnalysis(props){
...
@@ -1336,7 +1337,7 @@ function bgaAnalysis(props){
}
}
var
res
=
{}
var
res
=
{}
steplist
.
forEach
(
function
(
step
){
steplist
.
forEach
(
function
(
step
){
GEN
.
openStep
({
job
:
job
,
step
:
step
})
GEN
.
openStep
({
job
:
job
,
name
:
step
})
layers
.
forEach
(
function
(
layer
){
layers
.
forEach
(
function
(
layer
){
// 找出bga 拷贝到辅助层
// 找出bga 拷贝到辅助层
GEN
.
workLayer
({
name
:
layer
.
signalL
,
display_number
:
2
,
clear_before
:
'yes'
})
GEN
.
workLayer
({
name
:
layer
.
signalL
,
display_number
:
2
,
clear_before
:
'yes'
})
...
...
ats/analysis/backup.js
View file @
e3a61df3
...
@@ -100,8 +100,8 @@ try {
...
@@ -100,8 +100,8 @@ try {
}
}
var
matrix
=
UPLOAD_LAYER_MATRIX
({
job
:
job
})
// 分析matrix 获得分析后的matrix信息
var
matrix
=
UPLOAD_LAYER_MATRIX
({
job
:
job
})
// 分析matrix 获得分析后的matrix信息
GEN
.
openStep
({
job
:
job
,
name
:
pcs_step
})
GEN
.
openStep
({
job
:
job
,
name
:
pcs_step
})
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'
})
...
@@ -137,7 +137,7 @@ try {
...
@@ -137,7 +137,7 @@ try {
console
.
log
(
"===================>steplist:"
+
_
.
toString
(
step_list
))
console
.
log
(
"===================>steplist:"
+
_
.
toString
(
step_list
))
if
(
step_list
.
indexOf
(
pcs_step
)
<
0
){
throw
"can not find pcsstep"
}
if
(
step_list
.
indexOf
(
pcs_step
)
<
0
){
throw
"can not find pcsstep"
}
if
(
step_list
.
indexOf
(
array_step
)
<
0
){
array_step
=
false
}
if
(
step_list
.
indexOf
(
array_step
)
<
0
){
array_step
=
false
}
console
.
log
(
"===================================> 1matrix"
)
console
.
log
(
"===============
====================> 1matrix"
)
var
analysis_obj
=
analysis
({
job
:
job
,
jobId
:
JobId
,
pcs_step
:
pcs_step
,
array_step
:
array_step
,
matrix
:
matrix
})
var
analysis_obj
=
analysis
({
job
:
job
,
jobId
:
JobId
,
pcs_step
:
pcs_step
,
array_step
:
array_step
,
matrix
:
matrix
})
// 创建profile
// 创建profile
var
tmp_matrix
=
GEN
.
getMatrix
({
job
:
job
})
var
tmp_matrix
=
GEN
.
getMatrix
({
job
:
job
})
...
@@ -149,25 +149,15 @@ try {
...
@@ -149,25 +149,15 @@ try {
console
.
log
(
"profile:===============>"
+
now_profile
);
console
.
log
(
"profile:===============>"
+
now_profile
);
console
.
log
(
now_profile
.
match
(
/
\n
/ig
).
length
);
console
.
log
(
now_profile
.
match
(
/
\n
/ig
).
length
);
if
(
now_profile
.
match
(
/
\n
/ig
).
length
==
1
){
// 如果没有profile
if
(
now_profile
.
match
(
/
\n
/ig
).
length
==
1
){
// 如果没有profile
var
alllayers
=
Object
.
keys
(
matrix
)
createOutline
({
job
:
job
,
step
:
pcs_step
,
matrix
:
tmp_matrix
})
if
(
alllayers
.
indexOf
(
"outline"
)
>=
0
){
// 如果有outline层
}
else
{
GEN
.
affectedLayer
({
affected
:
'no'
,
mode
:
'all'
})
GEN
.
affectedLayer
({
affected
:
'yes'
,
layer
:
board_layer
,
clear_before
:
"yes"
})
GEN
.
clearLayers
()
GEN
.
selectByFilter
({
profile
:
"out"
})
GEN
.
workLayer
({
name
:
'outline'
,
display_number
:
2
,
clear_before
:
'yes'
})
if
(
GEN
.
getSelectCount
()
>
0
){
GEN
.
selectByFilter
({
feat_types
:
'line
\
;arc'
})
GEN
.
selDelete
()
var
count
=
GEN
.
getSelectCount
()
if
(
count
>
0
)
{
GEN
.
selCreateProfile
()
}
GEN
.
clearLayers
()
console
.
log
(
"create profile ok"
);
}
}
}
}
GEN
.
affectedLayer
({
affected
:
'yes'
,
layer
:
board_layer
,
clear_before
:
"yes"
})
GEN
.
selectByFilter
({
profile
:
"out"
})
if
(
GEN
.
getSelectCount
()
>
0
){
GEN
.
selDelete
()
}
GEN
.
closeStep
()
GEN
.
closeStep
()
var
config
=
{
var
config
=
{
jobInfo
:
{
jobInfo
:
{
...
@@ -203,7 +193,7 @@ try {
...
@@ -203,7 +193,7 @@ try {
max_spec_slot_drl_length
:
true
,
// todo 3.0mm 最大异形槽孔
max_spec_slot_drl_length
:
true
,
// todo 3.0mm 最大异形槽孔
}
}
}
}
console
.
log
(
"==================
===
=============> 2analysis_obj"
)
console
.
log
(
"===============================> 2analysis_obj"
)
// 分析料号info
// 分析料号info
var
jobInfo
=
{}
var
jobInfo
=
{}
...
@@ -316,22 +306,43 @@ try {
...
@@ -316,22 +306,43 @@ 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()
console
.
log
(
"============= ===============> 6 analysis smd"
)
console
.
log
(
"============= ===============> 6 analysis smd"
)
...
@@ -386,6 +397,10 @@ try {
...
@@ -386,6 +397,10 @@ try {
min_pad2pad
:
[
"p2p"
,
"smd2smd"
,
"smd2pad"
],
min_pad2pad
:
[
"p2p"
,
"smd2smd"
,
"smd2pad"
],
min_ar
:
[
"ar"
,
"pth_ar"
]
min_ar
:
[
"ar"
,
"pth_ar"
]
}
}
save_job_info
({
jobid
:
JobId
,
jobinfohash
:
{
ATS_surface_area_base_on
:
"Card"
}
})
stepList
.
forEach
(
function
(
step
){
stepList
.
forEach
(
function
(
step
){
GEN
.
openStep
({
job
:
job
,
name
:
step
})
GEN
.
openStep
({
job
:
job
,
name
:
step
})
// 曝光
// 曝光
...
@@ -394,13 +409,18 @@ try {
...
@@ -394,13 +409,18 @@ try {
var
tmp_info
=
GEN
.
exposedArea
({
layer1
:
item
.
signalL
,
mask1
:
item
.
solderL
})
var
tmp_info
=
GEN
.
exposedArea
({
layer1
:
item
.
signalL
,
mask1
:
item
.
solderL
})
// {"area":"0.73817","percent":"8.986"}
// {"area":"0.73817","percent":"8.986"}
var
tmp_area
=
tmp_info
.
area
var
tmp_area
=
tmp_info
.
area
var
tmp_percent
=
tmp_info
.
percent
+
"%"
var
tmp_percent
=
tmp_info
.
percent
;
var
tmp_data
=
/top/ig
.
test
(
item
.
signalL
)
?
{
carbon_Area_front
:
tmp_area
}
:
{
carbon_Area_back
:
tmp_area
}
save_job_info
({
jobid
:
JobId
,
jobinfohash
:
tmp_data
})
save_layerinfo
({
save_layerinfo
({
jobid
:
JobId
,
jobid
:
JobId
,
layer
:
item
.
signalL
,
layer
:
item
.
signalL
,
layerinfohash
:
{
layerinfohash
:
{
ref_layer
:
item
.
solderL
,
ref_layer
:
item
.
solderL
,
exposed_area
:
tmp_
area
exposed_area
:
tmp_
percent
}
}
})
})
}
}
...
@@ -435,7 +455,7 @@ try {
...
@@ -435,7 +455,7 @@ try {
layers
:
signalLayers
,
layers
:
signalLayers
,
items
:
[
tmpitem
]
items
:
[
tmpitem
]
})
})
console
.
log
(
"==================
=
================> 11 signals analysis"
)
console
.
log
(
"==================================> 11 signals analysis"
)
// signal层分析结果
// signal层分析结果
var
res
=
analysisChkAttr
({
layers
:
signalLayers
,
info
:
info
,
step
:
step
,
job
:
job
,
oChecklistName
:
oChecklistName
})
var
res
=
analysisChkAttr
({
layers
:
signalLayers
,
info
:
info
,
step
:
step
,
job
:
job
,
oChecklistName
:
oChecklistName
})
...
@@ -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
]
...
@@ -473,48 +498,24 @@ try {
...
@@ -473,48 +498,24 @@ try {
})
})
})
})
// 铜面积
// 铜面积
console
.
log
(
"=============================
======
> 13 save copper_percent"
)
console
.
log
(
"=============================> 13 save copper_percent"
)
// 创建profile
var
copper_percent_pcs
=
signalLayers
.
map
(
function
(
v
){
var
new_martix
=
GEN
.
getMatrix
({
job
:
job
})
var
tmp
=
{
layer
:
v
}
var
profileLayer
=
Object
.
keys
(
new_martix
).
filter
(
function
(
v
){
tmp
.
copper_percent
=
GEN
.
copperArea
({
layer1
:
v
}).
percent
+
"%"
return
new_martix
[
v
].
layer_type
==
"rout"
&&
new_martix
[
v
].
context
==
"board"
return
tmp
})
})
if
(
profileLayer
.
length
){
console
.
log
(
"================ ==signalLayers============"
+
_
.
toString
(
signalLayers
));
if
(
GEN
.
getProfile
({
job
:
job
,
step
:
pcs_step
}).
match
(
/
\n
/ig
).
length
==
1
){
// 如果没有profile
console
.
log
(
_
.
toString
(
copper_percent_pcs
));
var
tmp
=
profileLayer
[
0
]
GEN
.
closeStep
()
if
(
profileLayer
.
indexOf
(
"outline"
)
>=
0
){
tmp
=
"outline"
}
copper_percent_pcs
.
forEach
(
function
(
item
){
GEN
.
openStep
({
job
:
job
,
name
:
pcs_step
})
save_layerinfo
({
GEN
.
workLayer
({
name
:
tmp
,
display_number
:
2
,
clear_before
:
'yes'
})
jobid
:
JobId
,
GEN
.
selectByFilter
({
feat_types
:
'line
\
;arc'
})
layer
:
item
.
layer
,
var
count
=
GEN
.
getSelectCount
()
layerinfohash
:
{
if
(
count
>
0
){
copper_percent
:
item
.
copper_percent
GEN
.
selCreateProfile
()
GEN
.
selClearFeature
()
}
else
if
(
profileLayer
.
length
>
1
)
{
GEN
.
workLayer
({
name
:
"rout"
,
display_number
:
2
,
clear_before
:
'yes'
})
GEN
.
selectByFilter
({
feat_types
:
'line
\
;arc'
})
if
(
GEN
.
getSelectCount
()
>
0
){
GEN
.
selCreateProfile
()
GEN
.
selClearFeature
()
}
}
}
}
var
copper_percent_pcs
=
signalLayers
.
map
(
function
(
v
){
var
tmp
=
{
layer
:
v
}
tmp
.
copper_percent
=
GEN
.
copperArea
({
layer1
:
v
}).
percent
+
"%"
return
tmp
})
})
GEN
.
closeStep
()
})
copper_percent_pcs
.
forEach
(
function
(
item
){
save_layerinfo
({
jobid
:
JobId
,
layer
:
item
.
layer
,
layerinfohash
:
{
copper_percent
:
item
.
copper_percent
}
})
})
}
})
})
// 保存
// 保存
...
@@ -824,7 +825,10 @@ function analysis(props){
...
@@ -824,7 +825,10 @@ function analysis(props){
this
.
jobId
=
props
.
jobId
;
this
.
jobId
=
props
.
jobId
;
if
(
props
.
pcs_step
){
this
.
pcs_step
=
props
.
pcs_step
;
}
if
(
props
.
pcs_step
){
this
.
pcs_step
=
props
.
pcs_step
;
}
if
(
props
.
matrix
){
this
.
matrix
=
props
.
matrix
;
}
if
(
props
.
matrix
){
this
.
matrix
=
props
.
matrix
;
}
if
(
props
.
array_step
){
this
.
array_step
=
props
.
array_step
;
}
if
(
props
.
array_step
){
this
.
array_step
=
props
.
array_step
;
}
this
.
matrixInfo
=
getMatrixInfo
({
job
:
this
.
job
})
this
.
matrixInfo
=
getMatrixInfo
({
job
:
this
.
job
})
this
.
init
();
this
.
init
();
}
}
...
@@ -843,11 +847,11 @@ function analysis(props){
...
@@ -843,11 +847,11 @@ function analysis(props){
return
res
.
length
return
res
.
length
}
}
T_m_p
.
prototype
.
analysis_vc_card_size
=
function
(
props
){
// card短边尺寸 string
T_m_p
.
prototype
.
analysis_vc_card_size
=
function
(
props
){
// card短边尺寸 string
return
GEN
.
getProfileLimits
({
job
:
this
.
job
,
step
:
this
.
pcs_step
})[
props
].
toFixed
(
3
)
return
GEN
.
getProfileLimits
({
job
:
this
.
job
,
step
:
this
.
pcs_step
,
units
:
"mm"
})[
props
].
toFixed
(
2
)
}
}
T_m_p
.
prototype
.
analysis_vc_array_size
=
function
(
props
){
// array长边尺寸 string
T_m_p
.
prototype
.
analysis_vc_array_size
=
function
(
props
){
// array长边尺寸 string
if
(
!
this
.
array_step
){
return
"_error"
}
if
(
!
this
.
array_step
){
return
"_error"
}
return
GEN
.
getProfileLimits
({
job
:
this
.
job
,
step
:
this
.
array_step
})[
props
].
toFixed
(
3
)
return
GEN
.
getProfileLimits
({
job
:
this
.
job
,
step
:
this
.
array_step
,
units
:
"mm"
})[
props
].
toFixed
(
2
)
}
}
T_m_p
.
prototype
.
analysis_vc_pcs_count_on_panel
=
function
(
props
){
//
T_m_p
.
prototype
.
analysis_vc_pcs_count_on_panel
=
function
(
props
){
//
return
"_todo"
return
"_todo"
...
@@ -1085,7 +1089,7 @@ function smdAnalysis(props){
...
@@ -1085,7 +1089,7 @@ function smdAnalysis(props){
// 分析最小smd间距
// 分析最小smd间距
// 创建一个checklist并且分析
// 创建一个checklist并且分析
var
min_smd_pitch
=
smdPitch
({
job
:
job
,
step
:
step
,
layer
:
tmp_layer
})
// min_smd_pitch
var
min_smd_pitch
=
smdPitch
({
job
:
job
,
step
:
step
,
layer
:
tmp_layer
})
// min_smd_pitch
// console.log('========================min_smd_pitch:' + min_smd_pitch);
// console.log('=================
=======min_smd_pitch:' + min_smd_pitch);
res
[
layer
.
signalL
][
"min_smd_pitch"
]
=
min_smd_pitch
res
[
layer
.
signalL
][
"min_smd_pitch"
]
=
min_smd_pitch
// 分析开窗宽高
// 分析开窗宽高
...
@@ -1253,14 +1257,17 @@ function analysisChkAttr(par) {
...
@@ -1253,14 +1257,17 @@ function analysisChkAttr(par) {
job
:
job
,
job
:
job
,
step
:
par
.
step
,
step
:
par
.
step
,
checklist
:
oChecklistName
,
checklist
:
oChecklistName
,
units
:
"mm"
,
nact
:
1
,
nact
:
1
,
attr
:
v
+
"_min_"
+
type
attr
:
v
+
"_min_"
+
type
})
})
if
(
a
===
"N/A"
&&
/
\d
+/
.
test
(
tmp
))
{
if
(
a
===
"N/A"
&&
/
\d
+/
.
test
(
tmp
))
{
a
=
tmp
tmp
=
Number
(
tmp
)
a
=
tmp
.
toFixed
(
2
)
}
}
if
(
/
\d
+/
.
test
(
a
)
&&
/
\d
+/
.
test
(
tmp
)
&&
Number
(
tmp
)
<
Number
(
a
))
{
if
(
/
\d
+/
.
test
(
a
)
&&
/
\d
+/
.
test
(
tmp
)
&&
Number
(
tmp
)
<
Number
(
a
))
{
a
=
tmp
tmp
=
Number
(
tmp
)
a
=
tmp
.
toFixed
(
2
)
}
}
return
a
return
a
},
"N/A"
)
},
"N/A"
)
...
@@ -1273,49 +1280,43 @@ function analysisDrill(par, step){
...
@@ -1273,49 +1280,43 @@ 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
})
// 拷贝到_tmp
if
(
GEN
.
getSelectCount
()
>
0
){
var
tmplayer
=
drill
.
layer
+
"_tmp"
console
.
log
(
"==========================>jinru 111111111"
)
if
(
GEN
.
isLayerExists
({
job
:
job
,
layer
:
tmplayer
})){
GEN
.
deleteLayer
({
job
:
job
,
step
:
step
,
layer
:
tmplayer
})}
// 拷贝到_tmp
GEN
.
selCopyOther
({
dest
:
"layer_name"
,
target_layer
:
tmplayer
})
var
tmplayer
=
drill
.
layer
+
"_tmp"
GEN
.
affectedLayer
({
affected
:
"no"
,
mode
:
"all"
})
if
(
GEN
.
isLayerExists
({
job
:
job
,
layer
:
tmplayer
})){
GEN
.
deleteLayer
({
job
:
job
,
step
:
step
,
layer
:
tmplayer
})}
GEN
.
selClearFeature
();
GEN
.
selCopyOther
({
dest
:
"layer_name"
,
target_layer
:
tmplayer
})
[
drill
.
start
,
drill
.
end
].
forEach
(
function
(
item
,
i
){
GEN
.
affectedLayer
({
affected
:
"no"
,
mode
:
"all"
})
GEN
.
workLayer
({
name
:
item
,
display_number
:
1
,
clear_before
:
"yes"
})
GEN
.
selClearFeature
();
// GEN.selRefFeat({
[
drill
.
start
,
drill
.
end
].
forEach
(
function
(
item
,
i
){
// layers: tmplayer,
GEN
.
workLayer
({
name
:
item
,
display_number
:
1
,
clear_before
:
"yes"
})
// use: "filter",
GEN
.
COM
(
"sel_ref_feat"
,
// mode: "touch",
{
layers
:
tmplayer
,
use
:
"filter"
,
mode
:
"touch"
,
pads_as
:
"shape"
,
f_types
:
"pad"
,
polarity
:
"positive
\
;negative"
,
include_syms
:
drill
.
symbol
})
// f_types: "pad",
if
(
GEN
.
getSelectCount
()
>
0
){
// pads_as:"shape",
var
res
=
""
// polarity:"positive",
var
pads
=
GEN
.
getFeatures
({
job
:
job
,
step
:
step
,
layer
:
item
,
options
:
"select"
})
// include_syms:drill.symbol,
if
(
pads
&&
pads
.
length
)
{
// filter: {
pads
=
pads
.
filter
(
function
(
item
){
// feat_types:'pad'
return
/^r
\d
+/
.
test
(
item
.
symbol
)
// }
})
// })
pads
=
pads
.
sort
(
function
(
a
,
b
){
GEN
.
COM
(
"sel_ref_feat"
,
return
parseInt
(
a
.
symbol
)
-
parseInt
(
b
.
symbol
)
{
layers
:
tmplayer
,
use
:
"filter"
,
mode
:
"touch"
,
pads_as
:
"shape"
,
f_types
:
"pad"
,
polarity
:
"positive
\
;negative"
,
include_syms
:
drill
.
symbol
})
})
var
res
=
""
res
=
pads
[
0
].
symbol
.
slice
(
1
)
var
pads
=
GEN
.
getFeatures
({
job
:
job
,
step
:
step
,
layer
:
item
,
options
:
"select"
})
}
if
(
pads
&&
pads
.
length
)
{
if
(
i
==
0
)
{
pads
=
pads
.
filter
(
function
(
item
){
drill
.
drl_pad_top
=
res
return
/^r
\d
+/
.
test
(
item
.
symbol
)
}
else
if
(
i
==
1
){
})
drill
.
drl_pad_bot
=
res
pads
=
pads
.
sort
(
function
(
a
,
b
){
}
return
parseInt
(
a
.
symbol
)
-
parseInt
(
b
.
symbol
)
}
})
})
res
=
pads
[
0
].
symbol
.
slice
(
1
)
GEN
.
deleteLayer
({
job
:
job
,
step
:
step
,
layer
:
tmplayer
})
}
}
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
drill
})
})
return
res
return
res
...
@@ -1361,14 +1362,14 @@ function bgaAnalysis(props){
...
@@ -1361,14 +1362,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
=
min_symbols_info
[
"min_bga_size"
]
res
[
layer
.
signalL
].
min
1_bga_dia
=
myFixed
(
min_symbols_info
[
"min_bga_size"
],
2
)
res
[
layer
.
signalL
].
min
_bga_openging_size
=
min_symbols_info
[
"min_bga_openging_size"
]
res
[
layer
.
signalL
].
min
1_bga_sm_dia
=
myFixed
(
min_symbols_info
[
"min_bga_openging_size"
],
2
)
res
[
layer
.
signalL
].
min
_bga_pitch
=
min_symbols_info
[
"min_bga_pitch"
]
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
=
all_bga_min_pitch_info
[
"bga_min_pitch"
]
res
[
layer
.
signalL
].
min2_bga_grid
=
myFixed
(
all_bga_min_pitch_info
[
"bga_min_pitch"
],
2
)
res
[
layer
.
signalL
].
bga_min_pitch_pad_size
=
all_bga_min_pitch_info
[
"bga_min_pitch_pad_size"
]
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
=
all_bga_min_pitch_info
[
"bga_min_pitch_openging_size"
]
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
})
}
}
})
})
...
@@ -1625,527 +1626,60 @@ function hasAttr(props){ // 判断层 有没有部分属性
...
@@ -1625,527 +1626,60 @@ function hasAttr(props){ // 判断层 有没有部分属性
}
}
return
res
return
res
}
}
function
tmp
(){
function
myFixed
(
str
,
num
)
{
return
{
if
(
/^
[
1-9
][
0-9
]
*
([
.
][
0-9
]
+
)?
$/
.
test
(
str
)){
"sst"
:
{
return
Number
(
str
).
toFixed
(
num
)
"row"
:
"1"
,
"type"
:
"solder_paste"
,
"name"
:
"sp_fr"
,
"context"
:
"board"
,
"layer_type"
:
"solder_paste"
,
"polarity"
:
"positive"
,
"drl_start"
:
""
,
"drl_end"
:
""
,
"gdrl_start"
:
""
,
"gdrl_end"
:
""
,
}
else
{
"tl_num"
:
-
1000
,
"tl_name"
:
"sp_fr"
,
"tl_type"
:
"solder_paste"
,
"odb_name"
:
"sst"
,
"odb_context"
:
"board"
,
"odb_type"
:
"solder_paste"
,
"odb_polarity"
:
"positive"
,
"odb_side"
:
"top"
,
return
str
"row_num"
:
-
1000
,
"odb_row_num"
:
"1"
}
},
"spt"
:
{
"row"
:
"2"
,
"type"
:
"solder_paste"
,
"name"
:
"sp_fr(2)"
,
"context"
:
"board"
,
"layer_type"
:
"solder_paste"
,
"polarity"
:
"positive"
,
"drl_start"
:
""
,
"drl_end"
:
""
,
"gdrl_start"
:
""
,
"gdrl_end"
:
""
,
"tl_num"
:
-
999
,
"tl_name"
:
"sp_fr(2)"
,
"tl_type"
:
"solder_paste"
,
"odb_name"
:
"spt"
,
"odb_context"
:
"board"
,
"odb_type"
:
"solder_paste"
,
"odb_polarity"
:
"positive"
,
"odb_side"
:
"top"
,
"row_num"
:
-
999
,
"odb_row_num"
:
"2"
},
"smt"
:
{
"row"
:
"3"
,
"type"
:
"solder_mask"
,
"name"
:
"sm_fr"
,
"context"
:
"board"
,
"layer_type"
:
"solder_mask"
,
"polarity"
:
"positive"
,
"drl_start"
:
""
,
"drl_end"
:
""
,
"gdrl_start"
:
""
,
"gdrl_end"
:
""
,
"tl_num"
:
-
998
,
"tl_name"
:
"sm_fr"
,
"tl_type"
:
"solder_mask"
,
"odb_name"
:
"smt"
,
"odb_context"
:
"board"
,
"odb_type"
:
"solder_mask"
,
"odb_polarity"
:
"positive"
,
"odb_side"
:
"top"
,
"row_num"
:
-
998
,
"odb_row_num"
:
"3"
},
"top"
:
{
"row"
:
"4"
,
"type"
:
"outer"
,
"name"
:
"top"
,
"context"
:
"board"
,
"layer_type"
:
"signal"
,
"polarity"
:
"positive"
,
"drl_start"
:
""
,
"drl_end"
:
""
,
"gdrl_start"
:
""
,
"gdrl_end"
:
""
,
"tl_num"
:
1
,
"tl_name"
:
"top"
,
"tl_type"
:
"outer"
,
"odb_name"
:
"top"
,
"odb_context"
:
"board"
,
"odb_type"
:
"signal"
,
"odb_polarity"
:
"positive"
,
"odb_side"
:
"top"
,
"row_num"
:
1
,
"odb_row_num"
:
"4"
},
"isl2"
:
{
"row"
:
"5"
,
"type"
:
"inner"
,
"name"
:
"l2"
,
"context"
:
"board"
,
"layer_type"
:
"signal"
,
"polarity"
:
"positive"
,
"drl_start"
:
""
,
"drl_end"
:
""
,
"gdrl_start"
:
""
,
"gdrl_end"
:
""
,
"tl_num"
:
2
,
"tl_name"
:
"l2"
,
"tl_type"
:
"inner"
,
"odb_name"
:
"isl2"
,
"odb_context"
:
"board"
,
"odb_type"
:
"signal"
,
"odb_polarity"
:
"positive"
,
"odb_side"
:
"inner"
,
"row_num"
:
2
,
"odb_row_num"
:
"5"
},
"isl3"
:
{
"row"
:
"6"
,
"type"
:
"inner"
,
"name"
:
"l3"
,
"context"
:
"board"
,
"layer_type"
:
"signal"
,
"polarity"
:
"positive"
,
"drl_start"
:
""
,
"drl_end"
:
""
,
"gdrl_start"
:
""
,
"gdrl_end"
:
""
,
"tl_num"
:
3
,
"tl_name"
:
"l3"
,
"tl_type"
:
"inner"
,
"odb_name"
:
"isl3"
,
"odb_context"
:
"board"
,
"odb_type"
:
"signal"
,
"odb_polarity"
:
"positive"
,
"odb_side"
:
"inner"
,
"row_num"
:
3
,
"odb_row_num"
:
"6"
},
"isl4"
:
{
"row"
:
"7"
,
"type"
:
"inner"
,
"name"
:
"l4"
,
"context"
:
"board"
,
"layer_type"
:
"signal"
,
"polarity"
:
"positive"
,
"drl_start"
:
""
,
"drl_end"
:
""
,
"gdrl_start"
:
""
,
"gdrl_end"
:
""
,
"tl_num"
:
4
,
"tl_name"
:
"l4"
,
"tl_type"
:
"inner"
,
"odb_name"
:
"isl4"
,
"odb_context"
:
"board"
,
"odb_type"
:
"signal"
,
"odb_polarity"
:
"positive"
,
"odb_side"
:
"inner"
,
"row_num"
:
4
,
"odb_row_num"
:
"7"
},
"isl5"
:
{
"row"
:
"8"
,
"type"
:
"inner"
,
"name"
:
"l5"
,
"context"
:
"board"
,
"layer_type"
:
"signal"
,
"polarity"
:
"positive"
,
"drl_start"
:
""
,
"drl_end"
:
""
,
"gdrl_start"
:
""
,
"gdrl_end"
:
""
,
"tl_num"
:
5
,
"tl_name"
:
"l5"
,
"tl_type"
:
"inner"
,
"odb_name"
:
"isl5"
,
"odb_context"
:
"board"
,
"odb_type"
:
"signal"
,
"odb_polarity"
:
"positive"
,
"odb_side"
:
"inner"
,
"row_num"
:
5
,
"odb_row_num"
:
"8"
},
"isl6"
:
{
"row"
:
"9"
,
"type"
:
"inner"
,
"name"
:
"l6"
,
"context"
:
"board"
,
"layer_type"
:
"signal"
,
"polarity"
:
"positive"
,
"drl_start"
:
""
,
"drl_end"
:
""
,
"gdrl_start"
:
""
,
"gdrl_end"
:
""
,
"tl_num"
:
6
,
"tl_name"
:
"l6"
,
"tl_type"
:
"inner"
,
"odb_name"
:
"isl6"
,
"odb_context"
:
"board"
,
"odb_type"
:
"signal"
,
"odb_polarity"
:
"positive"
,
"odb_side"
:
"inner"
,
"row_num"
:
6
,
"odb_row_num"
:
"9"
},
"isl7"
:
{
"row"
:
"10"
,
"type"
:
"inner"
,
"name"
:
"l7"
,
"context"
:
"board"
,
"layer_type"
:
"signal"
,
"polarity"
:
"positive"
,
"drl_start"
:
""
,
"drl_end"
:
""
,
"gdrl_start"
:
""
,
"gdrl_end"
:
""
,
"tl_num"
:
7
,
"tl_name"
:
"l7"
,
"tl_type"
:
"inner"
,
"odb_name"
:
"isl7"
,
"odb_context"
:
"board"
,
"odb_type"
:
"signal"
,
"odb_polarity"
:
"positive"
,
"odb_side"
:
"inner"
,
"row_num"
:
7
,
"odb_row_num"
:
"10"
},
"isl8"
:
{
"row"
:
"11"
,
"type"
:
"inner"
,
"name"
:
"l8"
,
"context"
:
"board"
,
"layer_type"
:
"signal"
,
"polarity"
:
"positive"
,
"drl_start"
:
""
,
"drl_end"
:
""
,
"gdrl_start"
:
""
,
"gdrl_end"
:
""
,
"tl_num"
:
8
,
"tl_name"
:
"l8"
,
"tl_type"
:
"inner"
,
"odb_name"
:
"isl8"
,
"odb_context"
:
"board"
,
"odb_type"
:
"signal"
,
"odb_polarity"
:
"positive"
,
"odb_side"
:
"inner"
,
"row_num"
:
8
,
"odb_row_num"
:
"11"
},
"isl9"
:
{
"row"
:
"12"
,
"type"
:
"inner"
,
"name"
:
"l9"
,
"context"
:
"board"
,
"layer_type"
:
"signal"
,
"polarity"
:
"positive"
,
"drl_start"
:
""
,
"drl_end"
:
""
,
"gdrl_start"
:
""
,
"gdrl_end"
:
""
,
"tl_num"
:
9
,
"tl_name"
:
"l9"
,
"tl_type"
:
"inner"
,
"odb_name"
:
"isl9"
,
"odb_context"
:
"board"
,
"odb_type"
:
"signal"
,
"odb_polarity"
:
"positive"
,
"odb_side"
:
"inner"
,
"row_num"
:
9
,
"odb_row_num"
:
"12"
},
"bottom"
:
{
"row"
:
"13"
,
"type"
:
"outer"
,
"name"
:
"bottom"
,
"context"
:
"board"
,
"layer_type"
:
"signal"
,
"polarity"
:
"positive"
,
"drl_start"
:
""
,
"drl_end"
:
""
,
"gdrl_start"
:
""
,
"gdrl_end"
:
""
,
"tl_num"
:
10
,
"tl_name"
:
"bottom"
,
"tl_type"
:
"outer"
,
"odb_name"
:
"bottom"
,
"odb_context"
:
"board"
,
"odb_type"
:
"signal"
,
"odb_polarity"
:
"positive"
,
"odb_side"
:
"bottom"
,
"row_num"
:
10
,
"odb_row_num"
:
"13"
},
"smb"
:
{
"row"
:
"14"
,
"type"
:
"solder_mask"
,
"name"
:
"sm_ba"
,
"context"
:
"board"
,
"layer_type"
:
"solder_mask"
,
"polarity"
:
"positive"
,
"drl_start"
:
""
,
"drl_end"
:
""
,
"gdrl_start"
:
""
,
"gdrl_end"
:
""
,
"tl_num"
:
1013
,
"tl_name"
:
"sm_ba"
,
"tl_type"
:
"solder_mask"
,
"odb_name"
:
"smb"
,
"odb_context"
:
"board"
,
"odb_type"
:
"solder_mask"
,
"odb_polarity"
:
"positive"
,
"odb_side"
:
"bottom"
,
"row_num"
:
1013
,
"odb_row_num"
:
"14"
},
"spb"
:
{
"row"
:
"15"
,
"type"
:
"solder_paste"
,
"name"
:
"sp_ba"
,
"context"
:
"board"
,
"layer_type"
:
"solder_paste"
,
"polarity"
:
"positive"
,
"drl_start"
:
""
,
"drl_end"
:
""
,
"gdrl_start"
:
""
,
"gdrl_end"
:
""
,
"tl_num"
:
1014
,
"tl_name"
:
"sp_ba"
,
"tl_type"
:
"solder_paste"
,
"odb_name"
:
"spb"
,
"odb_context"
:
"board"
,
"odb_type"
:
"solder_paste"
,
"odb_polarity"
:
"positive"
,
"odb_side"
:
"bottom"
,
"row_num"
:
1014
,
"odb_row_num"
:
"15"
},
"ssb"
:
{
"row"
:
"16"
,
"type"
:
"solder_paste"
,
"name"
:
"sp_ba(2)"
,
"context"
:
"board"
,
"layer_type"
:
"solder_paste"
,
"polarity"
:
"positive"
,
"drl_start"
:
""
,
"drl_end"
:
""
,
"gdrl_start"
:
""
,
"gdrl_end"
:
""
,
"tl_num"
:
1015
,
"tl_name"
:
"sp_ba(2)"
,
"tl_type"
:
"solder_paste"
,
"odb_name"
:
"ssb"
,
"odb_context"
:
"board"
,
"odb_type"
:
"solder_paste"
,
"odb_polarity"
:
"positive"
,
"odb_side"
:
"bottom"
,
"row_num"
:
1015
,
"odb_row_num"
:
"16"
},
"d1-2"
:
{
"row"
:
"17"
,
"type"
:
"laser_drill"
,
"name"
:
"d1-2"
,
"context"
:
"board"
,
"layer_type"
:
"drill"
,
"polarity"
:
"positive"
,
"drl_start"
:
"top"
,
"drl_end"
:
"isl2"
,
"gdrl_start"
:
"top"
,
"gdrl_end"
:
"isl2"
,
"drl_start_num"
:
"1"
,
"drl_end_num"
:
"2"
,
"tl_name"
:
"drill1-2"
,
"tl_type"
:
"drill"
,
"tl_num"
:
10016
,
"odb_name"
:
"d1-2"
,
"odb_context"
:
"board"
,
"odb_type"
:
"drill"
,
"odb_polarity"
:
"positive"
,
"odb_side"
:
"none"
,
"row_num"
:
10016
,
"odb_row_num"
:
"17"
,
"drl_from_num"
:
"1"
,
"drl_to_num"
:
"2"
},
"d2-3"
:
{
"row"
:
"18"
,
"type"
:
"laser_drill"
,
"name"
:
"d2-3"
,
"context"
:
"board"
,
"layer_type"
:
"drill"
,
"polarity"
:
"positive"
,
"drl_start"
:
"isl2"
,
"drl_end"
:
"isl3"
,
"gdrl_start"
:
"isl2"
,
"gdrl_end"
:
"isl3"
,
"drl_start_num"
:
"2"
,
"drl_end_num"
:
"3"
,
"tl_name"
:
"drill2-3"
,
"tl_type"
:
"drill"
,
"tl_num"
:
10017
,
"odb_name"
:
"d2-3"
,
"odb_context"
:
"board"
,
"odb_type"
:
"drill"
,
"odb_polarity"
:
"positive"
,
"odb_side"
:
"none"
,
"row_num"
:
10017
,
"odb_row_num"
:
"18"
,
"drl_from_num"
:
"2"
,
"drl_to_num"
:
"3"
},
"d3-4"
:
{
"row"
:
"19"
,
"type"
:
"laser_drill"
,
"name"
:
"d3-4"
,
"context"
:
"board"
,
"layer_type"
:
"drill"
,
"polarity"
:
"positive"
,
"drl_start"
:
"isl3"
,
"drl_end"
:
"isl4"
,
"gdrl_start"
:
"isl3"
,
"gdrl_end"
:
"isl4"
,
"drl_start_num"
:
"3"
,
"drl_end_num"
:
"4"
,
"tl_name"
:
"drill3-4"
,
"tl_type"
:
"drill"
,
"tl_num"
:
10018
,
"odb_name"
:
"d3-4"
,
"odb_context"
:
"board"
,
"odb_type"
:
"drill"
,
"odb_polarity"
:
"positive"
,
"odb_side"
:
"none"
,
"row_num"
:
10018
,
"odb_row_num"
:
"19"
,
"drl_from_num"
:
"3"
,
"drl_to_num"
:
"4"
},
"d4-5"
:
{
"row"
:
"20"
,
"type"
:
"laser_drill"
,
"name"
:
"d4-5"
,
"context"
:
"board"
,
"layer_type"
:
"drill"
,
"polarity"
:
"positive"
,
"drl_start"
:
"isl4"
,
"drl_end"
:
"isl5"
,
"gdrl_start"
:
"isl4"
,
"gdrl_end"
:
"isl5"
,
"drl_start_num"
:
"4"
,
"drl_end_num"
:
"5"
,
"tl_name"
:
"drill4-5"
,
"tl_type"
:
"drill"
,
"tl_num"
:
10019
,
"odb_name"
:
"d4-5"
,
"odb_context"
:
"board"
,
"odb_type"
:
"drill"
,
"odb_polarity"
:
"positive"
,
"odb_side"
:
"none"
,
"row_num"
:
10019
,
"odb_row_num"
:
"20"
,
"drl_from_num"
:
"4"
,
"drl_to_num"
:
"5"
},
"d5-6"
:
{
"row"
:
"21"
,
"type"
:
"laser_drill"
,
"name"
:
"d5-6"
,
"context"
:
"board"
,
"layer_type"
:
"drill"
,
"polarity"
:
"positive"
,
"drl_start"
:
"isl5"
,
"drl_end"
:
"isl6"
,
"gdrl_start"
:
"isl5"
,
"gdrl_end"
:
"isl6"
,
"drl_start_num"
:
"5"
,
"drl_end_num"
:
"6"
,
"tl_name"
:
"drill5-6"
,
"tl_type"
:
"drill"
,
"tl_num"
:
10020
,
"odb_name"
:
"d5-6"
,
"odb_context"
:
"board"
,
"odb_type"
:
"drill"
,
"odb_polarity"
:
"positive"
,
"odb_side"
:
"none"
,
"row_num"
:
10020
,
"odb_row_num"
:
"21"
,
"drl_from_num"
:
"5"
,
"drl_to_num"
:
"6"
},
"d6-7"
:
{
"row"
:
"22"
,
"type"
:
"laser_drill"
,
"name"
:
"d6-7"
,
"context"
:
"board"
,
"layer_type"
:
"drill"
,
"polarity"
:
"positive"
,
"drl_start"
:
"isl6"
,
"drl_end"
:
"isl7"
,
"gdrl_start"
:
"isl6"
,
"gdrl_end"
:
"isl7"
,
"drl_start_num"
:
"6"
,
"drl_end_num"
:
"7"
,
"tl_name"
:
"drill6-7"
,
"tl_type"
:
"drill"
,
"tl_num"
:
10021
,
"odb_name"
:
"d6-7"
,
"odb_context"
:
"board"
,
"odb_type"
:
"drill"
,
"odb_polarity"
:
"positive"
,
"odb_side"
:
"none"
,
"row_num"
:
10021
,
"odb_row_num"
:
"22"
,
"drl_from_num"
:
"6"
,
"drl_to_num"
:
"7"
},
"d7-8"
:
{
"row"
:
"23"
,
"type"
:
"laser_drill"
,
"name"
:
"d7-8"
,
"context"
:
"board"
,
"layer_type"
:
"drill"
,
"polarity"
:
"positive"
,
"drl_start"
:
"isl7"
,
"drl_end"
:
"isl8"
,
"gdrl_start"
:
"isl7"
,
"gdrl_end"
:
"isl8"
,
"drl_start_num"
:
"7"
,
"drl_end_num"
:
"8"
,
"tl_name"
:
"drill7-8"
,
"tl_type"
:
"drill"
,
"tl_num"
:
10022
,
"odb_name"
:
"d7-8"
,
"odb_context"
:
"board"
,
"odb_type"
:
"drill"
,
"odb_polarity"
:
"positive"
,
"odb_side"
:
"none"
,
"row_num"
:
10022
,
"odb_row_num"
:
"23"
,
"drl_from_num"
:
"7"
,
"drl_to_num"
:
"8"
},
"d8-9"
:
{
"row"
:
"24"
,
"type"
:
"laser_drill"
,
"name"
:
"d8-9"
,
"context"
:
"board"
,
"layer_type"
:
"drill"
,
"polarity"
:
"positive"
,
"drl_start"
:
"isl8"
,
"drl_end"
:
"isl9"
,
"gdrl_start"
:
"isl8"
,
"gdrl_end"
:
"isl9"
,
"drl_start_num"
:
"8"
,
"drl_end_num"
:
"9"
,
"tl_name"
:
"drill8-9"
,
"tl_type"
:
"drill"
,
"tl_num"
:
10023
,
"odb_name"
:
"d8-9"
,
"odb_context"
:
"board"
,
"odb_type"
:
"drill"
,
"odb_polarity"
:
"positive"
,
"odb_side"
:
"none"
,
"row_num"
:
10023
,
"odb_row_num"
:
"24"
,
"drl_from_num"
:
"8"
,
"drl_to_num"
:
"9"
},
"d9-10"
:
{
"row"
:
"25"
,
"type"
:
"laser_drill"
,
"name"
:
"d9-10"
,
"context"
:
"board"
,
"layer_type"
:
"drill"
,
"polarity"
:
"positive"
,
"drl_start"
:
"isl9"
,
"drl_end"
:
"bottom"
,
"gdrl_start"
:
"isl9"
,
"gdrl_end"
:
"bottom"
,
"drl_start_num"
:
"9"
,
"drl_end_num"
:
"10"
,
"tl_name"
:
"drill9-10"
,
"tl_type"
:
"drill"
,
"tl_num"
:
10024
,
"odb_name"
:
"d9-10"
,
"odb_context"
:
"board"
,
"odb_type"
:
"drill"
,
"odb_polarity"
:
"positive"
,
"odb_side"
:
"none"
,
"row_num"
:
10024
,
"odb_row_num"
:
"25"
,
"drl_from_num"
:
"9"
,
"drl_to_num"
:
"10"
},
"drill"
:
{
"row"
:
"26"
,
"type"
:
"main_drill"
,
"name"
:
"drill"
,
"context"
:
"board"
,
"layer_type"
:
"drill"
,
"polarity"
:
"positive"
,
"drl_start"
:
"top"
,
"drl_end"
:
"bottom"
,
"gdrl_start"
:
"top"
,
"gdrl_end"
:
"bottom"
,
"drl_start_num"
:
1
,
"drl_end_num"
:
10
,
"tl_name"
:
"drill"
,
"tl_type"
:
"drill"
,
"tl_num"
:
10025
,
"odb_name"
:
"drill"
,
"odb_context"
:
"board"
,
"odb_type"
:
"drill"
,
"odb_polarity"
:
"positive"
,
"odb_side"
:
"none"
,
"row_num"
:
10025
,
"odb_row_num"
:
"26"
,
"drl_from_num"
:
1
,
"drl_to_num"
:
10
},
"rout"
:
{
"row"
:
"27"
,
"type"
:
"other"
,
"name"
:
"__rout__"
,
"context"
:
"board"
,
"layer_type"
:
"rout"
,
"polarity"
:
"positive"
,
"drl_start"
:
"top"
,
"drl_end"
:
"bottom"
,
"gdrl_start"
:
"top"
,
"gdrl_end"
:
"bottom"
,
"odb_name"
:
"rout"
,
"odb_context"
:
"board"
,
"odb_type"
:
"rout"
,
"odb_polarity"
:
"positive"
,
"odb_side"
:
"none"
,
"odb_row_num"
:
"27"
},
"nclegend-1-2"
:
{
"row"
:
"28"
,
"type"
:
"other"
,
"name"
:
"__nclegend-1-2__"
,
"context"
:
"misc"
,
"layer_type"
:
"document"
,
"polarity"
:
"positive"
,
"drl_start"
:
""
,
"drl_end"
:
""
,
"gdrl_start"
:
""
,
"gdrl_end"
:
""
,
"tl_num"
:
110027
,
"odb_name"
:
"nclegend-1-2"
,
"odb_context"
:
"misc"
,
"odb_type"
:
"document"
,
"odb_polarity"
:
"positive"
,
"odb_side"
:
"none"
,
"row_num"
:
110027
,
"odb_row_num"
:
"28"
},
"nclegend-2-3"
:
{
"row"
:
"29"
,
"type"
:
"other"
,
"name"
:
"__nclegend-2-3__"
,
"context"
:
"misc"
,
"layer_type"
:
"document"
,
"polarity"
:
"positive"
,
"drl_start"
:
""
,
"drl_end"
:
""
,
"gdrl_start"
:
""
,
"gdrl_end"
:
""
,
"tl_num"
:
110028
,
"odb_name"
:
"nclegend-2-3"
,
"odb_context"
:
"misc"
,
"odb_type"
:
"document"
,
"odb_polarity"
:
"positive"
,
"odb_side"
:
"none"
,
"row_num"
:
110028
,
"odb_row_num"
:
"29"
},
"nclegend-3-4"
:
{
"row"
:
"30"
,
"type"
:
"other"
,
"name"
:
"__nclegend-3-4__"
,
"context"
:
"misc"
,
"layer_type"
:
"document"
,
"polarity"
:
"positive"
,
"drl_start"
:
""
,
"drl_end"
:
""
,
"gdrl_start"
:
""
,
"gdrl_end"
:
""
,
"tl_num"
:
110029
,
"odb_name"
:
"nclegend-3-4"
,
"odb_context"
:
"misc"
,
"odb_type"
:
"document"
,
"odb_polarity"
:
"positive"
,
"odb_side"
:
"none"
,
"row_num"
:
110029
,
"odb_row_num"
:
"30"
},
"nclegend-4-5"
:
{
"row"
:
"31"
,
"type"
:
"other"
,
"name"
:
"__nclegend-4-5__"
,
"context"
:
"misc"
,
"layer_type"
:
"document"
,
"polarity"
:
"positive"
,
"drl_start"
:
""
,
"drl_end"
:
""
,
"gdrl_start"
:
""
,
"gdrl_end"
:
""
,
"tl_num"
:
110030
,
"odb_name"
:
"nclegend-4-5"
,
"odb_context"
:
"misc"
,
"odb_type"
:
"document"
,
"odb_polarity"
:
"positive"
,
"odb_side"
:
"none"
,
"row_num"
:
110030
,
"odb_row_num"
:
"31"
},
"nclegend-5-6"
:
{
"row"
:
"32"
,
"type"
:
"other"
,
"name"
:
"__nclegend-5-6__"
,
"context"
:
"misc"
,
"layer_type"
:
"document"
,
"polarity"
:
"positive"
,
"drl_start"
:
""
,
"drl_end"
:
""
,
"gdrl_start"
:
""
,
"gdrl_end"
:
""
,
"tl_num"
:
110031
,
"odb_name"
:
"nclegend-5-6"
,
"odb_context"
:
"misc"
,
"odb_type"
:
"document"
,
"odb_polarity"
:
"positive"
,
"odb_side"
:
"none"
,
"row_num"
:
110031
,
"odb_row_num"
:
"32"
},
"nclegend-6-7"
:
{
"row"
:
"33"
,
"type"
:
"other"
,
"name"
:
"__nclegend-6-7__"
,
"context"
:
"misc"
,
"layer_type"
:
"document"
,
"polarity"
:
"positive"
,
"drl_start"
:
""
,
"drl_end"
:
""
,
"gdrl_start"
:
""
,
"gdrl_end"
:
""
,
"tl_num"
:
110032
,
"odb_name"
:
"nclegend-6-7"
,
"odb_context"
:
"misc"
,
"odb_type"
:
"document"
,
"odb_polarity"
:
"positive"
,
"odb_side"
:
"none"
,
"row_num"
:
110032
,
"odb_row_num"
:
"33"
},
"nclegend-7-8"
:
{
"row"
:
"34"
,
"type"
:
"other"
,
"name"
:
"__nclegend-7-8__"
,
"context"
:
"misc"
,
"layer_type"
:
"document"
,
"polarity"
:
"positive"
,
"drl_start"
:
""
,
"drl_end"
:
""
,
"gdrl_start"
:
""
,
"gdrl_end"
:
""
,
"tl_num"
:
110033
,
"odb_name"
:
"nclegend-7-8"
,
"odb_context"
:
"misc"
,
"odb_type"
:
"document"
,
"odb_polarity"
:
"positive"
,
"odb_side"
:
"none"
,
"row_num"
:
110033
,
"odb_row_num"
:
"34"
},
"nclegend-8-9"
:
{
"row"
:
"35"
,
"type"
:
"other"
,
"name"
:
"__nclegend-8-9__"
,
"context"
:
"misc"
,
"layer_type"
:
"document"
,
"polarity"
:
"positive"
,
"drl_start"
:
""
,
"drl_end"
:
""
,
"gdrl_start"
:
""
,
"gdrl_end"
:
""
,
"tl_num"
:
110034
,
"odb_name"
:
"nclegend-8-9"
,
"odb_context"
:
"misc"
,
"odb_type"
:
"document"
,
"odb_polarity"
:
"positive"
,
"odb_side"
:
"none"
,
"row_num"
:
110034
,
"odb_row_num"
:
"35"
},
"nclegend-9-10"
:
{
"row"
:
"36"
,
"type"
:
"other"
,
"name"
:
"__nclegend-9-10__"
,
"context"
:
"misc"
,
"layer_type"
:
"document"
,
"polarity"
:
"positive"
,
"drl_start"
:
""
,
"drl_end"
:
""
,
"gdrl_start"
:
""
,
"gdrl_end"
:
""
,
"tl_num"
:
110035
,
"odb_name"
:
"nclegend-9-10"
,
"odb_context"
:
"misc"
,
"odb_type"
:
"document"
,
"odb_polarity"
:
"positive"
,
"odb_side"
:
"none"
,
"row_num"
:
110035
,
"odb_row_num"
:
"36"
},
"nclegend-1-10"
:
{
"row"
:
"37"
,
"type"
:
"other"
,
"name"
:
"__nclegend-1-10__"
,
"context"
:
"misc"
,
"layer_type"
:
"document"
,
"polarity"
:
"positive"
,
"drl_start"
:
""
,
"drl_end"
:
""
,
"gdrl_start"
:
""
,
"gdrl_end"
:
""
,
"tl_num"
:
110036
,
"odb_name"
:
"nclegend-1-10"
,
"odb_context"
:
"misc"
,
"odb_type"
:
"document"
,
"odb_polarity"
:
"positive"
,
"odb_side"
:
"none"
,
"row_num"
:
110036
,
"odb_row_num"
:
"37"
},
"outline"
:
{
"row"
:
"38"
,
"type"
:
"other"
,
"name"
:
"__outline__"
,
"context"
:
"misc"
,
"layer_type"
:
"document"
,
"polarity"
:
"positive"
,
"drl_start"
:
""
,
"drl_end"
:
""
,
"gdrl_start"
:
""
,
"gdrl_end"
:
""
,
"tl_num"
:
110037
,
"odb_name"
:
"outline"
,
"odb_context"
:
"misc"
,
"odb_type"
:
"document"
,
"odb_polarity"
:
"positive"
,
"odb_side"
:
"none"
,
"row_num"
:
110037
,
"odb_row_num"
:
"38"
},
"top_assem"
:
{
"row"
:
"39"
,
"type"
:
"other"
,
"name"
:
"__top_assem__"
,
"context"
:
"misc"
,
"layer_type"
:
"document"
,
"polarity"
:
"positive"
,
"drl_start"
:
""
,
"drl_end"
:
""
,
"gdrl_start"
:
""
,
"gdrl_end"
:
""
,
"tl_num"
:
110038
,
"odb_name"
:
"top_assem"
,
"odb_context"
:
"misc"
,
"odb_type"
:
"document"
,
"odb_polarity"
:
"positive"
,
"odb_side"
:
"none"
,
"row_num"
:
110038
,
"odb_row_num"
:
"39"
},
"bot_assem"
:
{
"row"
:
"40"
,
"type"
:
"other"
,
"name"
:
"__bot_assem__"
,
"context"
:
"misc"
,
"layer_type"
:
"document"
,
"polarity"
:
"positive"
,
"drl_start"
:
""
,
"drl_end"
:
""
,
"gdrl_start"
:
""
,
"gdrl_end"
:
""
,
"tl_num"
:
110039
,
"odb_name"
:
"bot_assem"
,
"odb_context"
:
"misc"
,
"odb_type"
:
"document"
,
"odb_polarity"
:
"positive"
,
"odb_side"
:
"none"
,
"row_num"
:
110039
,
"odb_row_num"
:
"40"
},
"top_testpoint"
:
{
"row"
:
"41"
,
"type"
:
"other"
,
"name"
:
"__top_testpoint__"
,
"context"
:
"misc"
,
"layer_type"
:
"document"
,
"polarity"
:
"positive"
,
"drl_start"
:
""
,
"drl_end"
:
""
,
"gdrl_start"
:
""
,
"gdrl_end"
:
""
,
"tl_num"
:
110040
,
"odb_name"
:
"top_testpoint"
,
"odb_context"
:
"misc"
,
"odb_type"
:
"document"
,
"odb_polarity"
:
"positive"
,
"odb_side"
:
"none"
,
"row_num"
:
110040
,
"odb_row_num"
:
"41"
},
"bot_testpoint"
:
{
"row"
:
"42"
,
"type"
:
"other"
,
"name"
:
"__bot_testpoint__"
,
"context"
:
"misc"
,
"layer_type"
:
"document"
,
"polarity"
:
"positive"
,
"drl_start"
:
""
,
"drl_end"
:
""
,
"gdrl_start"
:
""
,
"gdrl_end"
:
""
,
"tl_num"
:
110041
,
"odb_name"
:
"bot_testpoint"
,
"odb_context"
:
"misc"
,
"odb_type"
:
"document"
,
"odb_polarity"
:
"positive"
,
"odb_side"
:
"none"
,
"row_num"
:
110041
,
"odb_row_num"
:
"42"
},
"top_osp"
:
{
"row"
:
"43"
,
"type"
:
"other"
,
"name"
:
"__top_osp__"
,
"context"
:
"misc"
,
"layer_type"
:
"document"
,
"polarity"
:
"positive"
,
"drl_start"
:
""
,
"drl_end"
:
""
,
"gdrl_start"
:
""
,
"gdrl_end"
:
""
,
"tl_num"
:
110042
,
"odb_name"
:
"top_osp"
,
"odb_context"
:
"misc"
,
"odb_type"
:
"document"
,
"odb_polarity"
:
"positive"
,
"odb_side"
:
"none"
,
"row_num"
:
110042
,
"odb_row_num"
:
"43"
},
"bot_osp"
:
{
"row"
:
"44"
,
"type"
:
"other"
,
"name"
:
"__bot_osp__"
,
"context"
:
"misc"
,
"layer_type"
:
"document"
,
"polarity"
:
"positive"
,
"drl_start"
:
""
,
"drl_end"
:
""
,
"gdrl_start"
:
""
,
"gdrl_end"
:
""
,
"tl_num"
:
110043
,
"odb_name"
:
"bot_osp"
,
"odb_context"
:
"misc"
,
"odb_type"
:
"document"
,
"odb_polarity"
:
"positive"
,
"odb_side"
:
"none"
,
"row_num"
:
110043
,
"odb_row_num"
:
"44"
},
"top_enig"
:
{
"row"
:
"45"
,
"type"
:
"other"
,
"name"
:
"__top_enig__"
,
"context"
:
"misc"
,
"layer_type"
:
"document"
,
"polarity"
:
"positive"
,
"drl_start"
:
""
,
"drl_end"
:
""
,
"gdrl_start"
:
""
,
"gdrl_end"
:
""
,
"tl_num"
:
110044
,
"odb_name"
:
"top_enig"
,
"odb_context"
:
"misc"
,
"odb_type"
:
"document"
,
"odb_polarity"
:
"positive"
,
"odb_side"
:
"none"
,
"row_num"
:
110044
,
"odb_row_num"
:
"45"
},
"bot_enig"
:
{
"row"
:
"46"
,
"type"
:
"other"
,
"name"
:
"__bot_enig__"
,
"context"
:
"misc"
,
"layer_type"
:
"document"
,
"polarity"
:
"positive"
,
"drl_start"
:
""
,
"drl_end"
:
""
,
"gdrl_start"
:
""
,
"gdrl_end"
:
""
,
"tl_num"
:
110045
,
"odb_name"
:
"bot_enig"
,
"odb_context"
:
"misc"
,
"odb_type"
:
"document"
,
"odb_polarity"
:
"positive"
,
"odb_side"
:
"none"
,
"row_num"
:
110045
,
"odb_row_num"
:
"46"
},
"fab_page2"
:
{
"row"
:
"47"
,
"type"
:
"other"
,
"name"
:
"__fab_page2__"
,
"context"
:
"misc"
,
"layer_type"
:
"document"
,
"polarity"
:
"positive"
,
"drl_start"
:
""
,
"drl_end"
:
""
,
"gdrl_start"
:
""
,
"gdrl_end"
:
""
,
"tl_num"
:
110046
,
"odb_name"
:
"fab_page2"
,
"odb_context"
:
"misc"
,
"odb_type"
:
"document"
,
"odb_polarity"
:
"positive"
,
"odb_side"
:
"none"
,
"row_num"
:
110046
,
"odb_row_num"
:
"47"
},
"tmp_top_shorts"
:
{
"row"
:
"48"
,
"type"
:
"other"
,
"name"
:
"__tmp_top_shorts__"
,
"context"
:
"misc"
,
"layer_type"
:
"signal"
,
"polarity"
:
"positive"
,
"drl_start"
:
""
,
"drl_end"
:
""
,
"gdrl_start"
:
""
,
"gdrl_end"
:
""
,
"tl_num"
:
110047
,
"odb_name"
:
"tmp_top_shorts"
,
"odb_context"
:
"misc"
,
"odb_type"
:
"signal"
,
"odb_polarity"
:
"positive"
,
"odb_side"
:
"none"
,
"row_num"
:
110047
,
"odb_row_num"
:
"48"
},
"tmp_bot_shorts"
:
{
"row"
:
"49"
,
"type"
:
"other"
,
"name"
:
"__tmp_bot_shorts__"
,
"context"
:
"misc"
,
"layer_type"
:
"signal"
,
"polarity"
:
"positive"
,
"drl_start"
:
""
,
"drl_end"
:
""
,
"gdrl_start"
:
""
,
"gdrl_end"
:
""
,
"tl_num"
:
110048
,
"odb_name"
:
"tmp_bot_shorts"
,
"odb_context"
:
"misc"
,
"odb_type"
:
"signal"
,
"odb_polarity"
:
"positive"
,
"odb_side"
:
"none"
,
"row_num"
:
110048
,
"odb_row_num"
:
"49"
},
"bot_assy_mate"
:
{
"row"
:
"50"
,
"type"
:
"other"
,
"name"
:
"__bot_assy_mate__"
,
"context"
:
"misc"
,
"layer_type"
:
"signal"
,
"polarity"
:
"positive"
,
"drl_start"
:
""
,
"drl_end"
:
""
,
"gdrl_start"
:
""
,
"gdrl_end"
:
""
,
"tl_num"
:
110049
,
"odb_name"
:
"bot_assy_mate"
,
"odb_context"
:
"misc"
,
"odb_type"
:
"signal"
,
"odb_polarity"
:
"positive"
,
"odb_side"
:
"none"
,
"row_num"
:
110049
,
"odb_row_num"
:
"50"
},
"outline+1"
:
{
"row"
:
"51"
,
"type"
:
"other"
,
"name"
:
"__outline+1__"
,
"context"
:
"misc"
,
"layer_type"
:
"signal"
,
"polarity"
:
"positive"
,
"drl_start"
:
""
,
"drl_end"
:
""
,
"gdrl_start"
:
""
,
"gdrl_end"
:
""
,
"tl_num"
:
110050
,
"odb_name"
:
"outline+1"
,
"odb_context"
:
"misc"
,
"odb_type"
:
"signal"
,
"odb_polarity"
:
"positive"
,
"odb_side"
:
"none"
,
"row_num"
:
110050
,
"odb_row_num"
:
"51"
},
"top_assy_mate"
:
{
"row"
:
"52"
,
"type"
:
"other"
,
"name"
:
"__top_assy_mate__"
,
"context"
:
"misc"
,
"layer_type"
:
"signal"
,
"polarity"
:
"positive"
,
"drl_start"
:
""
,
"drl_end"
:
""
,
"gdrl_start"
:
""
,
"gdrl_end"
:
""
,
"tl_num"
:
110051
,
"odb_name"
:
"top_assy_mate"
,
"odb_context"
:
"misc"
,
"odb_type"
:
"signal"
,
"odb_polarity"
:
"positive"
,
"odb_side"
:
"none"
,
"row_num"
:
110051
,
"odb_row_num"
:
"52"
}
}
}
}
function
tmp_2
(){
function
createOutline
(
props
){
return
{
var
job
=
props
.
job
"cad"
:
{
var
step
=
props
.
step
"d1-2"
:
{
var
matrix
=
props
.
matrix
"1"
:
{
var
outlines
=
Object
.
keys
(
matrix
).
filter
(
function
(
v
){
return
/^outline$|^rout$/ig
.
test
(
v
)})
"count"
:
"06896"
,
var
drill_layer
=
Object
.
keys
(
matrix
).
filter
(
function
(
v
){
return
matrix
[
v
].
layer_type
==
"drill"
&&
matrix
[
v
].
context
==
"board"
})
"num"
:
"1"
,
var
tmp_outline
"type"
:
"via"
,
if
(
outlines
.
length
){
"min_tol"
:
"2.756"
,
if
(
outlines
.
length
>
1
&&
outlines
.
indexOf
(
"outline"
)
>=
0
){
"max_tol"
:
"0.984"
,
tmp_outline
=
"outline"
"finish_size"
:
"2.756"
,
if
(
cl
(
tmp_outline
))
{
"drill_size"
:
"2.756"
,
return
true
"slot_len"
:
"0"
,
}
else
{
"type2"
:
"laser"
,
return
cl
(
"rout"
)
"shape"
:
"hole"
,
"bit"
:
0
}
},
"d2-3"
:
{
"1"
:
{
"count"
:
"07430"
,
"num"
:
"1"
,
"type"
:
"via"
,
"min_tol"
:
"2.756"
,
"max_tol"
:
"0.984"
,
"finish_size"
:
"2.756"
,
"drill_size"
:
"2.756"
,
"slot_len"
:
"0"
,
"type2"
:
"laser"
,
"shape"
:
"hole"
,
"bit"
:
0
}
},
"d3-4"
:
{
"1"
:
{
"count"
:
"06866"
,
"num"
:
"1"
,
"type"
:
"via"
,
"min_tol"
:
"2.756"
,
"max_tol"
:
"0.984"
,
"finish_size"
:
"2.756"
,
"drill_size"
:
"2.756"
,
"slot_len"
:
"0"
,
"type2"
:
"laser"
,
"shape"
:
"hole"
,
"bit"
:
0
}
},
"d4-5"
:
{
"1"
:
{
"count"
:
"06413"
,
"num"
:
"1"
,
"type"
:
"via"
,
"min_tol"
:
"2.756"
,
"max_tol"
:
"0.984"
,
"finish_size"
:
"2.756"
,
"drill_size"
:
"2.756"
,
"slot_len"
:
"0"
,
"type2"
:
"laser"
,
"shape"
:
"hole"
,
"bit"
:
0
}
},
"d5-6"
:
{
"1"
:
{
"count"
:
"08938"
,
"num"
:
"1"
,
"type"
:
"via"
,
"min_tol"
:
"2.756"
,
"max_tol"
:
"0.984"
,
"finish_size"
:
"2.756"
,
"drill_size"
:
"2.756"
,
"slot_len"
:
"0"
,
"type2"
:
"laser"
,
"shape"
:
"hole"
,
"bit"
:
0
}
},
"d6-7"
:
{
"1"
:
{
"count"
:
"09057"
,
"num"
:
"1"
,
"type"
:
"via"
,
"min_tol"
:
"2.756"
,
"max_tol"
:
"0.984"
,
"finish_size"
:
"2.756"
,
"drill_size"
:
"2.756"
,
"slot_len"
:
"0"
,
"type2"
:
"laser"
,
"shape"
:
"hole"
,
"bit"
:
0
}
},
"d7-8"
:
{
"1"
:
{
"count"
:
"07818"
,
"num"
:
"1"
,
"type"
:
"via"
,
"min_tol"
:
"2.756"
,
"max_tol"
:
"0.984"
,
"finish_size"
:
"2.756"
,
"drill_size"
:
"2.756"
,
"slot_len"
:
"0"
,
"type2"
:
"laser"
,
"shape"
:
"hole"
,
"bit"
:
0
}
},
"d8-9"
:
{
"1"
:
{
"count"
:
"09126"
,
"num"
:
"1"
,
"type"
:
"via"
,
"min_tol"
:
"2.756"
,
"max_tol"
:
"0.984"
,
"finish_size"
:
"2.756"
,
"drill_size"
:
"2.756"
,
"slot_len"
:
"0"
,
"type2"
:
"laser"
,
"shape"
:
"hole"
,
"bit"
:
0
}
},
"d9-10"
:
{
"1"
:
{
"count"
:
"08498"
,
"num"
:
"1"
,
"type"
:
"via"
,
"min_tol"
:
"2.756"
,
"max_tol"
:
"0.984"
,
"finish_size"
:
"2.756"
,
"drill_size"
:
"2.756"
,
"slot_len"
:
"0"
,
"type2"
:
"laser"
,
"shape"
:
"hole"
,
"bit"
:
0
}
},
"drill"
:
{
"1"
:
{
"count"
:
"05"
,
"num"
:
"1"
,
"type"
:
"non_plated"
,
"min_tol"
:
"3.15"
,
"max_tol"
:
"3.15"
,
"finish_size"
:
"15.748"
,
"drill_size"
:
"15.748"
,
"slot_len"
:
"0"
,
"type2"
:
"standard"
,
"shape"
:
"hole"
,
"bit"
:
0
},
"2"
:
{
"count"
:
"01"
,
"num"
:
"2"
,
"type"
:
"non_plated"
,
"min_tol"
:
"0"
,
"max_tol"
:
"1.969"
,
"finish_size"
:
"35.039"
,
"drill_size"
:
"35.039"
,
"slot_len"
:
"0"
,
"type2"
:
"standard"
,
"shape"
:
"hole"
,
"bit"
:
0
},
"3"
:
{
"count"
:
"01"
,
"num"
:
"3"
,
"type"
:
"non_plated"
,
"min_tol"
:
"3.15"
,
"max_tol"
:
"3.15"
,
"finish_size"
:
"35.039"
,
"drill_size"
:
"35.039"
,
"slot_len"
:
"0"
,
"type2"
:
"standard"
,
"shape"
:
"hole"
,
"bit"
:
0
},
"4"
:
{
"count"
:
"01"
,
"num"
:
"4"
,
"type"
:
"non_plated"
,
"min_tol"
:
"1.969"
,
"max_tol"
:
"1.969"
,
"finish_size"
:
"47.244"
,
"drill_size"
:
"47.244"
,
"slot_len"
:
"0"
,
"type2"
:
"standard"
,
"shape"
:
"hole"
,
"bit"
:
0
},
"5"
:
{
"count"
:
"05"
,
"num"
:
"5"
,
"type"
:
"non_plated"
,
"min_tol"
:
"1.969"
,
"max_tol"
:
"1.969"
,
"finish_size"
:
"59.055"
,
"drill_size"
:
"59.055"
,
"slot_len"
:
"0"
,
"type2"
:
"standard"
,
"shape"
:
"hole"
,
"bit"
:
0
},
"6"
:
{
"count"
:
"01"
,
"num"
:
"6"
,
"type"
:
"non_plated"
,
"min_tol"
:
"1.969"
,
"max_tol"
:
"1.969"
,
"finish_size"
:
"70.866"
,
"drill_size"
:
"70.866"
,
"slot_len"
:
"0"
,
"type2"
:
"standard"
,
"shape"
:
"hole"
,
"bit"
:
0
},
"7"
:
{
"count"
:
"01"
,
"num"
:
"7"
,
"type"
:
"non_plated"
,
"min_tol"
:
"1.969"
,
"max_tol"
:
"1.969"
,
"finish_size"
:
"74.803"
,
"drill_size"
:
"74.803"
,
"slot_len"
:
"0"
,
"type2"
:
"standard"
,
"shape"
:
"hole"
,
"bit"
:
0
}
}
},
"stp"
:
{
"d1-2"
:
{},
"d2-3"
:
{},
"d3-4"
:
{},
"d4-5"
:
{},
"d5-6"
:
{},
"d6-7"
:
{},
"d7-8"
:
{},
"d8-9"
:
{},
"d9-10"
:
{},
"drill"
:
{
"1"
:
{
"count"
:
"08"
,
"num"
:
"1"
,
"type"
:
"non_plated"
,
"min_tol"
:
"0"
,
"max_tol"
:
"1.969"
,
"finish_size"
:
"118.11"
,
"drill_size"
:
"118.11"
,
"slot_len"
:
"0"
,
"type2"
:
"standard"
,
"shape"
:
"hole"
,
"bit"
:
0
}
}
}
}
else
{
return
cl
(
outlines
[
0
])
}
}
else
{
return
false
}
function
cl
(
l
){
GEN
.
openStep
({
job
:
job
,
name
:
step
})
GEN
.
affectedLayer
({
affected
:
'no'
,
mode
:
'all'
})
GEN
.
workLayer
({
name
:
l
,
display_number
:
2
,
clear_before
:
"yes"
})
GEN
.
selClearFeature
()
GEN
.
COM
(
"sel_cut_data,det_tol=1,con_tol=1,rad_tol=0.1,filter_overlaps=no,delete_doubles=no,use_order=yes,ignore_width=yes,ignore_holes=none,start_positive=yes,polarity_of_touching=same"
)
var
tmp_layer
=
l
+
"+++"
GEN
.
selRefFeat
({
layers
:
drill_layer
[
0
],
use
:
'filter'
,
mode
:
'touch'
})
if
(
GEN
.
getSelectCount
()
>
0
){
var
tmp_outline
=
l
+
"_tmp"
selCopyLayer
({
job
:
job
,
layer
:
tmp_outline
})
GEN
.
workLayer
({
name
:
l
,
display_number
:
2
,
clear_before
:
"yes"
})
GEN
.
selAllFeat
()
GEN
.
selDelete
()
GEN
.
workLayer
({
name
:
tmp_outline
,
display_number
:
2
,
clear_before
:
"yes"
})
GEN
.
COM
(
"sel_surf2outline,width=15"
)
GEN
.
selAllFeat
()
selCopyLayer
({
job
:
job
,
layer
:
l
})
GEN
.
workLayer
({
name
:
l
,
display_number
:
2
,
clear_before
:
"yes"
})
GEN
.
selClearFeature
()
GEN
.
selCreateProfile
()
GEN
.
deleteLayer
({
job
:
job
,
layer
:
tmp_layer
})
GEN
.
deleteLayer
({
job
:
job
,
layer
:
tmp_outline
})
return
true
}
}
GEN
.
deleteLayer
({
job
:
job
,
layer
:
tmp_layer
})
return
false
}
}
}
}
\ No newline at end of file
test/scott_test.js
View file @
e3a61df3
...
@@ -80,11 +80,11 @@ try {
...
@@ -80,11 +80,11 @@ 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
(
"===============================
===
>drillToSignals:"
+
_
.
toString
(
drillToSignals
))
console
.
log
(
"===============================>drillToSignals:"
+
_
.
toString
(
drillToSignals
))
var
drillRes
=
analysisDrill
(
drillToSignals
,
step
)
// 钻孔分析结果
//
var drillRes = analysisDrill(drillToSignals,step) // 钻孔分析结果
console
.
log
(
"==================================>drillRes:"
+
_
.
toString
(
drillRes
))
//
console.log("==================================>drillRes:"+_.toString(drillRes))
...
...
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