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
766b3724
Commit
766b3724
authored
5 years ago
by
Scott Sun
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' of
http://gitlab.topibd.net/scott.sun/scott
parents
e119b114
5352543e
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
695 additions
and
276 deletions
+695
-276
ATS_AIM_customer_data_analysis.js
ats/analysis/ATS_AIM_customer_data_analysis.js
+362
-85
backup.js
ats/analysis/backup.js
+231
-104
ATS_AIM_input_data.js
ats/input/ATS_AIM_input_data.js
+95
-44
ATS_AIM_data_format.js
ats/rename/ATS_AIM_data_format.js
+3
-2
config_ats.js
config_ats.js
+4
-5
scott_test.js
test/scott_test.js
+0
-36
No files found.
ats/analysis/ATS_AIM_customer_data_analysis.js
View file @
766b3724
...
@@ -74,6 +74,7 @@ var db = $.db;
...
@@ -74,6 +74,7 @@ var db = $.db;
var
Status
=
'ok'
;
var
Status
=
'ok'
;
var
resultData
=
[];
var
resultData
=
[];
var
PAR
=
{};
var
PAR
=
{};
var
ALL
=
{}
if
(
$
.
hasOwnProperty
(
'script_parameter'
)){
if
(
$
.
hasOwnProperty
(
'script_parameter'
)){
PAR
=
JSON
.
parse
(
$
.
script_parameter
);
PAR
=
JSON
.
parse
(
$
.
script_parameter
);
}
}
...
@@ -81,8 +82,6 @@ try {
...
@@ -81,8 +82,6 @@ try {
console
.
log
(
"=============================================>anaysis_start"
);
console
.
log
(
"=============================================>anaysis_start"
);
var
par
=
PAR
;
var
par
=
PAR
;
if
(
par
.
erf
==
""
){
delete
PAR
.
erf
}
if
(
par
.
erf
==
""
){
delete
PAR
.
erf
}
// if(par.erf == ""){par.erf = "GBM_0.50z"}
if
(
_
.
isEmpty
(
Job
))
throw
"没有传入料号名!"
;
if
(
_
.
isEmpty
(
Job
))
throw
"没有传入料号名!"
;
var
job
=
Job
.
toLowerCase
();
var
job
=
Job
.
toLowerCase
();
if
(
!
GEN
.
isJobExists
({
job
:
job
})){
throw
"job "
+
job
+
" is not exist"
}
if
(
!
GEN
.
isJobExists
({
job
:
job
})){
throw
"job "
+
job
+
" is not exist"
}
...
@@ -131,7 +130,113 @@ try {
...
@@ -131,7 +130,113 @@ try {
}
}
}
}
})
})
GEN
.
clearLayers
()
// * new 钻孔叠构
var
cam_drill_structure
=
[]
var
stack_drills
=
_
.
values
(
matrix
).
filter
(
function
(
item
){
return
item
.
layer_type
==
"drill"
&&
item
.
context
==
"board"
})
var
layerCount
=
GEN
.
getLayerCount
({
job
:
job
})
stack_drills
.
forEach
(
function
(
drill
){
GEN
.
clearLayers
()
GEN
.
selClearFeature
()
var
drill_info
=
{}
var
drl_start_num
=
drill
.
drl_start_num
-
0
var
drl_end_num
=
drill
.
drl_end_num
-
0
drill_info
.
drl_start_num
=
drl_start_num
drill_info
.
drl_end_num
=
drl_end_num
var
drl_side
=
"None"
if
(
layerCount
/
2
>=
drl_start_num
){
drl_side
=
"Top"
}
else
{
drl_side
=
"Bot"
}
drill_info
.
drl_side
=
drl_side
var
drl_filler
=
"None"
if
(
drill
.
type
==
"laser_drill"
){
drill_info
.
drl_type
=
"Laser"
drill_info
.
drl_name
=
"Laser"
+
drl_start_num
+
"-"
+
drl_end_num
drill_info
.
drl_tech
=
"LDD"
// 计算此层的理论 top bot
if
(
drl_side
==
"Top"
){
if
((
drl_start_num
-
1
)
==
0
){
drl_filler
=
"None"
}
else
{
var
top_l
=
"d"
+
(
drl_start_num
-
1
)
+
"-"
+
(
drl_end_num
-
1
)
if
(
GEN
.
isLayerExists
({
job
:
job
,
layer
:
top_l
})){
GEN
.
clearLayers
()
GEN
.
selClearFeature
()
GEN
.
workLayer
({
name
:
top_l
,
display_number
:
2
,
clear_before
:
'yes'
})
GEN
.
selRefFeat
({
layers
:
drill
.
name
,
use
:
'filter'
,
mode
:
'touch'
})
if
(
GEN
.
getSelectCount
()
>
0
){
GEN
.
selClearFeature
()
drl_filler
=
"Via Filling"
}
}
}
var
bot_l
=
"d"
+
(
drl_start_num
+
1
)
+
"-"
+
(
drl_end_num
+
1
)
if
(
GEN
.
isLayerExists
({
job
:
job
,
layer
:
bot_l
})){
GEN
.
clearLayers
()
GEN
.
selClearFeature
()
GEN
.
workLayer
({
name
:
drill
.
name
,
display_number
:
2
,
clear_before
:
'yes'
})
GEN
.
selRefFeat
({
layers
:
bot_l
,
use
:
'filter'
,
mode
:
'touch'
})
if
(
GEN
.
getSelectCount
()
>
0
){
GEN
.
selClearFeature
()
drill_info
.
drl_overlap
=
"Yes"
}
else
{
drill_info
.
drl_overlap
=
"No"
}
}
else
{
drill_info
.
drl_overlap
=
"No"
}
}
else
if
(
drl_side
==
"Bot"
){
if
((
drl_end_num
-
layerCount
)
==
0
){
drl_filler
=
"None"
}
else
{
var
top_l
=
"d"
+
(
drl_start_num
+
1
)
+
"-"
+
(
drl_end_num
+
1
)
if
(
GEN
.
isLayerExists
({
job
:
job
,
layer
:
top_l
})){
GEN
.
clearLayers
()
GEN
.
selClearFeature
()
GEN
.
workLayer
({
name
:
top_l
,
display_number
:
2
,
clear_before
:
'yes'
})
GEN
.
selRefFeat
({
layers
:
drill
.
name
,
use
:
'filter'
,
mode
:
'touch'
})
if
(
GEN
.
getSelectCount
()
>
0
){
GEN
.
selClearFeature
()
drl_filler
=
"Via Filling"
}
}
}
var
bot_l
=
"d"
+
(
drl_start_num
-
1
)
+
"-"
+
(
drl_end_num
-
1
)
if
(
GEN
.
isLayerExists
({
job
:
job
,
layer
:
bot_l
})){
GEN
.
clearLayers
()
GEN
.
selClearFeature
()
GEN
.
workLayer
({
name
:
drill
.
name
,
display_number
:
2
,
clear_before
:
'yes'
})
GEN
.
selRefFeat
({
layers
:
bot_l
,
use
:
'filter'
,
mode
:
'touch'
})
if
(
GEN
.
getSelectCount
()
>
0
){
GEN
.
selClearFeature
()
drill_info
.
drl_overlap
=
"Yes"
}
else
{
drill_info
.
drl_overlap
=
"No"
}
}
else
{
drill_info
.
drl_overlap
=
"No"
}
}
}
else
{
GEN
.
workLayer
({
name
:
drill
.
name
,
display_number
:
2
,
clear_before
:
'yes'
})
GEN
.
selectByFilter
({
attribute
:
'.drill'
,
option
:
'plated'
})
if
(
GEN
.
getSelectCount
()
>
0
){
GEN
.
selClearFeature
()
drill_info
.
drl_type
=
"PTH"
if
(
drl_end_num
-
drl_start_num
==
1
){
drl_filler
=
"Resin Plugin"
}
drill_info
.
drl_name
=
"PTH"
+
drl_start_num
+
"-"
+
drl_end_num
}
else
{
drill_info
.
drl_type
=
"NPTH"
drill_info
.
drl_name
=
"NPTH"
+
drl_start_num
+
"-"
+
drl_end_num
}
}
drill_info
.
drl_filler
=
drl_filler
drill_info
.
drl_zones
=
"{A}"
cam_drill_structure
.
push
(
drill_info
)
// save_stack_info({info:drill_info})
})
save_job_info
({
jobid
:
JobId
,
jobinfohash
:
{
cam_drill_structure
:
JSON
.
stringify
(
cam_drill_structure
)}
})
GEN
.
closeStep
()
GEN
.
closeStep
()
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"
}
...
@@ -157,15 +262,89 @@ try {
...
@@ -157,15 +262,89 @@ try {
}
}
}
}
// * profile 和 拼版
var
pandle_step
=
step_list
.
map
(
function
(
v
){
var
type
=
"unknow"
;
if
(
/^cad|^pcs/ig
.
test
(
v
)){
type
=
"pcs"
}
else
if
(
/^arr|^stp/ig
.
test
(
v
))
{
type
=
"array"
}
var
panel_info
=
{
job_id
:
JobId
,
step_name
:
v
,
step_type
:
type
}
GEN
.
openStep
({
job
:
job
,
name
:
v
})
GEN
.
clearLayers
()
GEN
.
selClearFeature
()
var
profileLimits
=
GEN
.
getProfileLimits
({
job
:
job
,
step
:
v
,
units
:
"mm"
})
if
(
profileLimits
){
panel_info
.
size_x
=
Number
(
profileLimits
.
xsize
).
toFixed
(
3
)
panel_info
.
size_y
=
Number
(
profileLimits
.
ysize
).
toFixed
(
3
)
}
panel_info
.
datum_x
=
0
panel_info
.
datum_y
=
0
panel_info
.
margin
=
{
"margin_top"
:
0
,
"margin_left"
:
0
,
"margin_right"
:
0
,
"margin_bottom"
:
0
,
"allow_margin_top"
:
0
,
"allow_margin_left"
:
0
,
"allow_margin_right"
:
0
,
"allow_margin_bottom"
:
0
}
var
profile
=
GEN
.
getProfile
({
job
:
job
,
step
:
v
,
units
:
"mm"
}).
split
(
"
\n
"
)
if
(
profile
.
length
>=
1
){
var
tmp
=
profile
.
slice
(
1
)
tmp
=
tmp
.
map
(
function
(
v
){
if
(
v
[
0
]
===
"#"
){
v
=
v
.
slice
(
1
)}
return
v
})
panel_info
.
profile
=
tmp
.
join
(
"
\n
"
)
}
else
{
profile
=
profile
.
map
(
function
(
v
){
if
(
v
[
0
]
===
"#"
){
v
=
v
.
slice
(
1
)}
return
v
})
panel_info
.
profile
=
profile
.
join
(
"
\n
"
)
}
for
(
var
key
in
profileLimits
){
profileLimits
[
key
]
=
Number
(
profileLimits
[
key
])
}
panel_info
.
profile_limits
=
profileLimits
panel_info
.
attr_data
=
{}
panel_info
.
extra_data
=
{}
var
repeat
=
GEN
.
getSR1
({
job
:
job
,
step
:
v
,
units
:
"mm"
})
var
step_repeat
=
{}
repeat
.
forEach
(
function
(
item
,
i
){
step_repeat
[
String
(
i
)]
=
{
x
:
item
.
xa
,
y
:
item
.
ya
,
dx
:
item
.
dx
,
dy
:
item
.
dy
,
nx
:
item
.
nx
,
ny
:
item
.
ny
,
// gapX:item.xsize,gapY:item.ysize,
step
:
item
.
step
,
angle
:
item
.
angle
,
mirror
:
item
.
mirror
==
"no"
?
0
:
1
,
step_name
:
item
.
step
,
step_type
:
/cad|pcs|card/ig
.
test
(
item
.
step
)?
"pcs"
:
"array"
,
}
})
panel_info
.
step_repeat
=
step_repeat
save_panel_info
({
info
:
panel_info
,
table
:
"pdm_job_panelizer_step"
})
GEN
.
closeStep
()
return
{
name
:
v
,
type
:
type
}})
// glod_finger
var
gold_fingers
=
Object
.
keys
(
tmp_matrix
).
filter
(
function
(
v
){
return
/^top_enig$|^bot_enig$/ig
.
test
(
v
)})
if
(
gold_fingers
.
length
){
gold_fingers
=
gold_fingers
.
map
(
function
(
v
){
var
type
=
(
v
==
"top_enig"
)
?
"top"
:
"bot"
return
{
name
:
v
,
type
:
type
}
})
}
ALL
.
gold_fingers
=
gold_fingers
GEN
.
closeStep
()
GEN
.
closeStep
()
var
config
=
{
var
config
=
{
jobInfo
:
{
jobInfo
:
{
layer_count
:
[
"signal"
,
"power_ground"
],
// Board属性的signal或者power_ground层
layer_count
:
[
"signal"
,
"power_ground"
],
// Board属性的signal或者power_ground层
vc_card_size_w
:
{
api
:
"vc_card_size"
,
props
:
"xsize"
},
// card短边尺寸 // ? 保留小数
pcs_size_x
:
{
api
:
"vc_card_size"
,
props
:
"xsize"
},
// card短边尺寸 // ? 保留小数
vc_card_size_l
:
{
api
:
"vc_card_size"
,
props
:
"ysize"
},
// card长边尺寸 // ? 保留小数
pcs_size_y
:
{
api
:
"vc_card_size"
,
props
:
"ysize"
},
// card长边尺寸 // ? 保留小数
vc_array_size_w
:
{
api
:
"vc_array_size"
,
props
:
"xsize"
},
// ! array短边尺寸 需要arr_step // ? 保留小数
array_size_x
:
{
api
:
"vc_array_size"
,
props
:
"xsize"
},
// ! array短边尺寸 需要arr_step // ? 保留小数
vc_array_size_l
:
{
api
:
"vc_array_size"
,
props
:
"ysize"
},
// ! array长边尺寸 需要arr_step // ? 保留小数
array_size_y
:
{
api
:
"vc_array_size"
,
props
:
"ysize"
},
// ! array长边尺寸 需要arr_step // ? 保留小数
vc_pcs_count_on_panel
:
true
,
// array中pcs的数量 ! 需要arr_step
vc_pcs_count_on_panel
:
true
,
// array中pcs的数量 ! 需要arr_step
pcs_count_on_array
:
true
,
stack_vias_number
:
true
,
// via孔连续叠加的层数
stack_vias_number
:
true
,
// via孔连续叠加的层数
stack_vias_more
:
{
only_value
:
true
},
// yes|no : 14层板以上时,Stack Vias >=12时,存yes // ! 需要分析完via连续叠加层数
stack_vias_more
:
{
only_value
:
true
},
// yes|no : 14层板以上时,Stack Vias >=12时,存yes // ! 需要分析完via连续叠加层数
depth_drilling
:
{
api
:
"layer_exist"
,
props
:
"depth_drill"
},
// yes|no :存在 depth_drill 层时 ,存yes
depth_drilling
:
{
api
:
"layer_exist"
,
props
:
"depth_drill"
},
// yes|no :存在 depth_drill 层时 ,存yes
...
@@ -173,14 +352,14 @@ try {
...
@@ -173,14 +352,14 @@ try {
laser_via_on_buried_hole
:
true
,
// via孔在埋孔上时,存yes
laser_via_on_buried_hole
:
true
,
// via孔在埋孔上时,存yes
milling_bit_size
:
true
,
// todo 检查array中pcs的最小间距值
milling_bit_size
:
true
,
// todo 检查array中pcs的最小间距值
milling_length
:
true
,
// todo 检查array中铣切长度
milling_length
:
true
,
// todo 检查array中铣切长度
vc_src_01005_pad_result
:
{
api
:
"board_has_attr"
,
props
:
"01005_pad"
},
vc_src_01005_pad_result
:
{
api
:
"board_has_attr"
,
props
:
".pth_pad"
},
// 本地使用 .pth_pad
vc_src_EDGE_PLATING
:
{
api
:
"layer_exist2"
,
props
:[
"fab_page2"
]},
// fab_page2
ATS_technology_25dc
:
{
api
:
"layer_exist"
,
props
:[
"bend"
,
"top_coverlay"
]},
// yes|no:存在cavity层别时存yes
ATS_technology_25dc
:
{
api
:
"layer_exist"
,
props
:[
"bend"
,
"top_coverlay"
]},
// yes|no:存在cavity层别时存yes
ATS_technology_25dr
:
{
api
:
"layer_exist"
,
props
:
"nclegend-1-2"
},
// yes|no:存在cavity层别时存yes
ATS_technology_25dr
:
{
api
:
"layer_exist"
,
props
:
"nclegend-1-2"
},
// yes|no:存在cavity层别时存yes
vc_src_EDGE_PLATING
:
true
,
// yes|no:检查线路外形是否存在物件,存在则存yes // !料号需要有rout层
// vc_src_EDGE_PLATING: true, // yes|no:检查线路外形是否存在物件,存在则存yes // !料号需要有rout层
vc_src_EDGE_PLATING
:
{
api
:
"layer_exist2"
,
props
:[
"fab_page2"
]},
// fab_page2
edge_plating_length
:
true
,
// todo 检查线路外形处物件的长度
edge_plating_length
:
true
,
// todo 检查线路外形处物件的长度
g
lod_finger
:
true
,
// todo yes|no:暂无逻辑
g
old_finger
:
true
,
//
glod_finger_area
:
true
,
//
todo 暂无逻辑
glod_finger_area
:
true
,
//
ATS_sm_side
:
true
,
// top|bot|both:检查防焊层所在面次 ATS_sm_side
ATS_sm_side
:
true
,
// top|bot|both:检查防焊层所在面次 ATS_sm_side
vc_id_print_side
:
true
,
// top|bot|both:检查文字层所在面次 vc_id_print_side
vc_id_print_side
:
true
,
// top|bot|both:检查文字层所在面次 vc_id_print_side
min_drl_size
:
true
,
// todo 0.5mm 最小圆孔
min_drl_size
:
true
,
// todo 0.5mm 最小圆孔
...
@@ -245,7 +424,7 @@ try {
...
@@ -245,7 +424,7 @@ try {
GEN
.
COM
(
'sredit_reduce_nesting,mode=one_highest'
)
GEN
.
COM
(
'sredit_reduce_nesting,mode=one_highest'
)
drill_info
[
step
]
=
drill_info
[
step
]
||
{};
drill_info
[
step
]
=
drill_info
[
step
]
||
{};
drillLayers
.
forEach
(
function
(
layer
){
drillLayers
.
forEach
(
function
(
layer
){
var
layer_tool_manager
=
GEN
.
getTool
({
job
:
job
,
step
:
step
,
layer
:
layer
.
name
})
var
layer_tool_manager
=
GEN
.
getTool
({
job
:
job
,
step
:
step
,
layer
:
layer
.
name
,
units
:
"mm"
})
drill_info
[
step
][
layer
.
name
]
=
layer_tool_manager
drill_info
[
step
][
layer
.
name
]
=
layer_tool_manager
})
})
GEN
.
closeStep
()
GEN
.
closeStep
()
...
@@ -259,27 +438,36 @@ try {
...
@@ -259,27 +438,36 @@ try {
var
tool
=
pcs_tool_manager
[
layer
][
key
];
var
tool
=
pcs_tool_manager
[
layer
][
key
];
var
array_count
;
var
array_count
;
if
(
array_tool_manager
&&
array_tool_manager
[
layer
]
&&
array_tool_manager
[
layer
][
key
]){
array_count
=
array_tool_manager
[
layer
][
key
].
count
}
if
(
array_tool_manager
&&
array_tool_manager
[
layer
]
&&
array_tool_manager
[
layer
][
key
]){
array_count
=
array_tool_manager
[
layer
][
key
].
count
}
var
layer_name
=
layer
var
drill_type
=
tool
.
type
var
finish_size
=
tool
.
finish_size
-
0
if
(
matrix
[
layer
].
type
==
"laser_drill"
){
drill_type
=
"laser"
layer_name
=
layer_name
.
replace
(
"d"
,
"l"
)
}
if
(
matrix
[
layer
].
type
==
"bury_drill"
){
drill_type
=
"via"
}
var
data
=
{
var
data
=
{
job_id
:
JobId
,
job_id
:
JobId
,
layer_name
:
layer
,
layer_name
:
layer
_name
,
tool_num
:
key
,
tool_num
:
key
,
tool_flag
:
key
,
tool_flag
:
key
,
tool_type
:
tool
.
shape
,
tool_type
:
tool
.
shape
,
drill_type
:
tool
.
type
,
drill_type
:
drill_
type
,
drill_size
:
tool
.
drill_size
,
//
drill_size : tool.drill_size,
drill_slot_length
:
tool
.
slot_len
,
//
drill_slot_length: tool.slot_len,
finish_size
:
tool
.
finish_size
,
finish_size
:
finish_size
.
toFixed
(
3
)
,
finish_slot_length
:
tool
.
slot_len
,
finish_slot_length
:
tool
.
slot_len
,
size_tol_lower
:
tool
.
min_tol
,
//
size_tol_lower: tool.min_tol,
size_tol_upper
:
tool
.
max_tol
,
//
size_tol_upper: tool.max_tol,
pcs_count
:
tool
.
count
,
pcs_count
:
tool
.
count
,
array_count
:
array_count
,
// todo
array_count
:
array_count
,
attr_data
:
{}
// {"allowance": 2, "org_layer_name": "hhhh"}
attr_data
:
{
"org_layer_name"
:
layer
}
// {"allowance": 2, "org_layer_name": "hhhh"}
}
}
if
(
!
array_count
){
delete
data
.
array_count
}
if
(
!
array_count
){
delete
data
.
array_count
}
var
id
=
db
.
query
(
""
,
function
(
q
){
var
id
=
db
.
query
(
""
,
function
(
q
){
return
q
.
selectValue
({
return
q
.
selectValue
({
table
:
'pdm_job_cam_drill'
,
table
:
'pdm_job_cam_drill'
,
field
:
"id"
,
field
:
"id"
,
where
:{
job_id
:
JobId
,
layer_name
:
layer
,
tool_num
:
key
}
where
:{
job_id
:
JobId
,
layer_name
:
layer
,
tool_num
:
key
}
})
})
...
@@ -306,29 +494,27 @@ try {
...
@@ -306,29 +494,27 @@ try {
})
})
})
})
// console.log("=============================> 6 set smd bga")
// var allStep = GEN.getStepList({job:job})
console
.
log
(
"=============================> 6 set smd bga"
)
// allStep.forEach(function(step){
var
allStep
=
GEN
.
getStepList
({
job
:
job
})
// GEN.openStep({job:job,name:step})
allStep
.
forEach
(
function
(
step
){
// GEN.COM("chklist_single,show=yes,action=valor_cleanup_set_smd")
GEN
.
openStep
({
job
:
job
,
name
:
step
})
// 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_single,show=yes,action=valor_cleanup_set_smd"
)
// GEN.COM("get_user_name")
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("get_job_path,job="+job)
GEN
.
COM
(
"get_user_name"
)
// GEN.COM("disp_on")
GEN
.
COM
(
"get_job_path,job="
+
job
)
// GEN.COM("origin_on")
GEN
.
COM
(
"disp_on"
)
// GEN.COM("chklist_cnf_act,chklist=valor_cleanup_set_smd,nact=1,cnf=no")
GEN
.
COM
(
"origin_on"
)
// GEN.COM("chklist_run,chklist=valor_cleanup_set_smd,nact=1,area=profile")
GEN
.
COM
(
"chklist_cnf_act,chklist=valor_cleanup_set_smd,nact=1,cnf=no"
)
// GEN.COM("skip_next_pre_hook")
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
(
"skip_next_pre_hook"
)
// GEN.COM("get_user_name")
GEN
.
COM
(
"chklist_run,chklist=valor_cleanup_set_smd,nact=1,area=profile"
)
// GEN.COM("skip_current_command")
GEN
.
COM
(
"get_user_name"
)
// GEN.COM("disp_on")
GEN
.
COM
(
"skip_current_command"
)
// GEN.COM("origin_on")
GEN
.
COM
(
"disp_on"
)
// GEN.COM("show_tab,tab=Checklists,show=no")
GEN
.
COM
(
"origin_on"
)
// GEN.closeStep()
GEN
.
COM
(
"show_tab,tab=Checklists,show=no"
)
// })
GEN
.
closeStep
()
})
// GEN.createChklist()
// GEN.createChklist()
...
@@ -426,8 +612,30 @@ try {
...
@@ -426,8 +612,30 @@ try {
})
})
stepList
.
forEach
(
function
(
step
){
stepList
.
forEach
(
function
(
step
){
GEN
.
openStep
({
job
:
job
,
name
:
step
})
GEN
.
openStep
({
job
:
job
,
name
:
step
})
// 曝光
// 曝光
analysis_obj
.
matrixInfo
.
mOuters
.
forEach
(
function
(
item
){
analysis_obj
.
matrixInfo
.
mOuters
.
forEach
(
function
(
item
){
if
(
ALL
.
gold_fingers
.
length
>
0
){
var
tmp_gold_info
=
{}
ALL
.
gold_fingers
.
forEach
(
function
(
item2
){
tmp_gold_info
[
item2
.
type
]
=
item2
.
name
})
var
layer_gold_type
=
/top/ig
.
test
(
item
.
signalL
)
?
"top"
:
"bot"
if
(
tmp_gold_info
[
layer_gold_type
]){
var
tmp_info
=
GEN
.
exposedArea
({
layer1
:
item
.
signalL
,
mask1
:
tmp_gold_info
[
layer_gold_type
]})
// console.log(_.toString({
// ref_layer: tmp_gold_info[item.type],
// exposed_area: tmp_info
// }));
save_layerinfo
({
jobid
:
JobId
,
layer
:
item
.
signalL
,
layerinfohash
:
{
sf_area_gold_area
:
tmp_info
.
percent
}
})
}
}
if
(
item
.
solderL
){
if
(
item
.
solderL
){
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"}
...
@@ -450,6 +658,36 @@ try {
...
@@ -450,6 +658,36 @@ try {
})
})
GEN
.
clearLayers
()
GEN
.
clearLayers
()
GEN
.
affectedLayer
({
affected
:
'no'
,
mode
:
'all'
})
GEN
.
affectedLayer
({
affected
:
'no'
,
mode
:
'all'
})
console
.
log
(
"==================================> Drill analysis"
)
// 钻孔
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
:
tmp_matrix
[
v
][
"drl_start"
],
end
:
tmp_matrix
[
v
][
"drl_end"
]}
})
console
.
log
(
"==================================> 12 Drill analysis"
)
var
drillRes
=
analysisDrill
(
drillToSignals
,
step
)
// 钻孔分析结果
console
.
log
(
"===============drillRes:"
+
_
.
toString
(
drillRes
));
drillRes
.
forEach
(
function
(
item
){
save_layerinfo
({
jobid
:
JobId
,
layer
:
item
.
layer
,
layerinfohash
:
{
drl_pad_top
:
item
.
drl_pad_top
,
drl_pad_bot
:
item
.
drl_pad_bot
,
}
})
})
// 创建chklist并运行 如果chklist存在先删除
// 创建chklist并运行 如果chklist存在先删除
if
(
GEN
.
isChklistExists
({
job
:
job
,
step
:
step
,
chklist
:
oChecklistName
}))
{
if
(
GEN
.
isChklistExists
({
job
:
job
,
step
:
step
,
chklist
:
oChecklistName
}))
{
GEN
.
COM
(
"chklist_delete"
,
{
chklist
:
oChecklistName
})
GEN
.
COM
(
"chklist_delete"
,
{
chklist
:
oChecklistName
})
...
@@ -481,34 +719,6 @@ try {
...
@@ -481,34 +719,6 @@ try {
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
})
console
.
log
(
"==================================> Drill analysis"
)
// 钻孔
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
:
tmp_matrix
[
v
][
"drl_start"
],
end
:
tmp_matrix
[
v
][
"drl_end"
]}
})
console
.
log
(
"==================================> 12 Drill analysis"
)
var
drillRes
=
analysisDrill
(
drillToSignals
,
step
)
// 钻孔分析结果
console
.
log
(
"===============drillRes:"
+
_
.
toString
(
drillRes
));
drillRes
.
forEach
(
function
(
item
){
save_layerinfo
({
jobid
:
JobId
,
layer
:
item
.
layer
,
layerinfohash
:
{
drl_pad_top
:
item
.
drl_pad_top
,
drl_pad_bot
:
item
.
drl_pad_bot
,
}
})
})
// 数据入库
// 数据入库
Object
.
keys
(
res
).
forEach
(
function
(
key
){
Object
.
keys
(
res
).
forEach
(
function
(
key
){
var
val
=
res
[
key
]
var
val
=
res
[
key
]
...
@@ -519,7 +729,6 @@ try {
...
@@ -519,7 +729,6 @@ try {
})
})
})
})
GEN
.
closeStep
()
GEN
.
closeStep
()
})
})
...
@@ -820,6 +1029,45 @@ function save_layerinfo(props){ // 保存层信息
...
@@ -820,6 +1029,45 @@ function save_layerinfo(props){ // 保存层信息
}
}
})
})
}
}
function
save_stack_info
(
props
){
var
info
=
props
.
info
var
table
=
"pdm_job_stack_drills"
info
.
job_id
=
JobId
var
drl_name
=
info
.
drl_name
db
.
query
(
""
,
function
(
q
){
return
q
.
deleteRow
({
table
:
table
,
where
:{
job_id
:
JobId
,
drl_name
:
drl_name
}
})
});
console
.
log
(
_
.
toString
(
info
))
var
Re
=
db
.
query
(
""
,
function
(
q
){
return
q
.
insertRow
({
table
:
table
,
data
:
info
,
return_field
:
'job_id'
,
})
});
}
function
save_panel_info
(
props
){
var
info
=
props
.
info
var
table
=
props
.
table
info
.
job_id
=
JobId
var
job_id
=
info
.
job_id
||
JobId
var
step_name
=
info
.
step_name
db
.
query
(
""
,
function
(
q
){
return
q
.
deleteRow
({
table
:
table
,
where
:{
job_id
:
job_id
,
step_name
:
step_name
}
})
});
db
.
query
(
""
,
function
(
q
){
return
q
.
insertRow
({
table
:
table
,
data
:
info
})
});
}
function
analysis
(
props
){
function
analysis
(
props
){
var
job
=
props
.
job
||
Job
;
var
job
=
props
.
job
||
Job
;
var
jobId
=
props
.
jobId
||
JobId
;
var
jobId
=
props
.
jobId
||
JobId
;
...
@@ -870,6 +1118,16 @@ function analysis(props){
...
@@ -870,6 +1118,16 @@ function analysis(props){
}
}
return
"_todo"
return
"_todo"
}
}
T_m_p
.
prototype
.
analysis_pcs_count_on_array
=
function
(
props
){
//
if
(
!
this
.
array_step
){
return
"_error"
}
var
has_step
=
has_steps
({
job
:
this
.
job
,
pcs_step
:
this
.
pcs_step
,
array_step
:
this
.
array_step
})
// 有无拼版关系
if
(
has_step
){
// arr 中 pcs数量
var
tmp
=
GEN
.
getRepeat
({
job
:
job
,
step
:
array_step
})
return
tmp
.
length
}
return
"_todo"
}
T_m_p
.
prototype
.
analysis_stack_vias_number
=
function
(
props
){
// via孔连续叠加的层数
T_m_p
.
prototype
.
analysis_stack_vias_number
=
function
(
props
){
// via孔连续叠加的层数
var
t
=
this
;
var
t
=
this
;
var
res
;
var
res
;
...
@@ -948,9 +1206,9 @@ function analysis(props){
...
@@ -948,9 +1206,9 @@ function analysis(props){
T_m_p
.
prototype
.
analysis_layer_exist2
=
function
(
props
){
// 存在某某层? string
T_m_p
.
prototype
.
analysis_layer_exist2
=
function
(
props
){
// 存在某某层? string
var
layers
=
Object
.
keys
(
this
.
matrixInfo
.
matrix
)
var
layers
=
Object
.
keys
(
this
.
matrixInfo
.
matrix
)
if
(
/string/ig
.
test
(
typeof
(
props
))){
if
(
/string/ig
.
test
(
typeof
(
props
))){
return
layers
.
indexOf
(
props
)
>=
0
?
"yes"
:
"
unknow
"
return
layers
.
indexOf
(
props
)
>=
0
?
"yes"
:
"
no
"
}
else
{
}
else
{
var
res
=
"
unknow
"
var
res
=
"
no
"
props
.
forEach
(
function
(
v
){
props
.
forEach
(
function
(
v
){
if
(
layers
.
indexOf
(
v
)
>=
0
){
if
(
layers
.
indexOf
(
v
)
>=
0
){
res
=
"yes"
res
=
"yes"
...
@@ -1054,10 +1312,28 @@ function analysis(props){
...
@@ -1054,10 +1312,28 @@ function analysis(props){
T_m_p
.
prototype
.
analysis_edge_plating_length
=
function
(){
// todo
T_m_p
.
prototype
.
analysis_edge_plating_length
=
function
(){
// todo
return
"_todo"
return
"_todo"
}
}
T_m_p
.
prototype
.
analysis_glod_finger
=
function
(){
// todo
T_m_p
.
prototype
.
analysis_gold_finger
=
function
(){
//
return
"_todo"
if
(
!
ALL
.
gold_fingers
){
return
"no"
}
return
ALL
.
gold_fingers
.
length
>
0
?
"yes"
:
"no"
}
}
T_m_p
.
prototype
.
analysis_glod_finger_area
=
function
(){
// todo
T_m_p
.
prototype
.
analysis_glod_finger_area
=
function
(){
//
if
(
ALL
.
gold_fingers
.
length
>
0
){
GEN
.
openStep
({
job
:
this
.
job
,
name
:
this
.
pcs_step
})
var
gold_finger_area
=
{}
var
res
=
0
;
ALL
.
gold_fingers
.
forEach
(
function
(
item
){
var
tmp
=
GEN
.
copperArea
({
layer1
:
item
.
name
}).
percent
res
+=
Number
(
tmp
)
// var tmp = GEN.copperArea({layer1:item.name}).percent + "%"
// var key = item.type == "top" ? "sf_area_gold_area_front" : "sf_area_gold_area_back"
// gold_finger_area[key] = tmp
})
GEN
.
closeStep
()
if
(
res
){
return
String
(
res
.
toFixed
(
4
))
+
"%"
}
}
return
"_todo"
return
"_todo"
}
}
T_m_p
.
prototype
.
analysis_ATS_sm_side
=
function
(){
// 检查防焊层所在面次
T_m_p
.
prototype
.
analysis_ATS_sm_side
=
function
(){
// 检查防焊层所在面次
...
@@ -1161,7 +1437,7 @@ function smdAnalysis(props){
...
@@ -1161,7 +1437,7 @@ function smdAnalysis(props){
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_
c2c
"
]
=
min_smd_pitch
// 分析开窗宽高
// 分析开窗宽高
if
(
layer
.
solderL
){
if
(
layer
.
solderL
){
GEN
.
workLayer
({
name
:
layer
.
solderL
,
display_number
:
2
,
clear_before
:
'yes'
})
GEN
.
workLayer
({
name
:
layer
.
solderL
,
display_number
:
2
,
clear_before
:
'yes'
})
...
@@ -1174,8 +1450,8 @@ function smdAnalysis(props){
...
@@ -1174,8 +1450,8 @@ function smdAnalysis(props){
GEN
.
workLayer
({
name
:
solderL_tmp
,
display_number
:
2
,
clear_before
:
"yes"
})
GEN
.
workLayer
({
name
:
solderL_tmp
,
display_number
:
2
,
clear_before
:
"yes"
})
var
symbols_solder
=
GEN
.
getLayerSymsHist
({
job
:
job
,
layer
:
solderL_tmp
,
step
:
step
})
var
symbols_solder
=
GEN
.
getLayerSymsHist
({
job
:
job
,
layer
:
solderL_tmp
,
step
:
step
})
var
symbolInfo_solder
=
symbolAnalysis
({
symbols
:
symbols_solder
,
filterReg
:
/^rect/
})
var
symbolInfo_solder
=
symbolAnalysis
({
symbols
:
symbols_solder
,
filterReg
:
/^rect/
})
if
(
symbolInfo_solder
[
"min_width"
]){
res
[
layer
.
signalL
].
min_smd_
opening
_width
=
symbolInfo_solder
[
"min_width"
]}
if
(
symbolInfo_solder
[
"min_width"
]){
res
[
layer
.
signalL
].
min_smd_
sm
_width
=
symbolInfo_solder
[
"min_width"
]}
if
(
symbolInfo_solder
[
"min_length"
]){
res
[
layer
.
signalL
].
min_smd_
opening
_length
=
symbolInfo_solder
[
"min_length"
]}
if
(
symbolInfo_solder
[
"min_length"
]){
res
[
layer
.
signalL
].
min_smd_
sm
_length
=
symbolInfo_solder
[
"min_length"
]}
GEN
.
deleteLayer
({
job
:
job
,
layer
:
solderL_tmp
})
GEN
.
deleteLayer
({
job
:
job
,
layer
:
solderL_tmp
})
}
}
GEN
.
deleteLayer
({
job
:
job
,
layer
:
tmp_layer
})
GEN
.
deleteLayer
({
job
:
job
,
layer
:
tmp_layer
})
...
@@ -1759,4 +2035,5 @@ function has_steps(props){
...
@@ -1759,4 +2035,5 @@ function has_steps(props){
var
array_step
=
props
.
array_step
var
array_step
=
props
.
array_step
var
res
=
GEN
.
getSubSteps
({
job
:
job
,
step
:
array_step
})
var
res
=
GEN
.
getSubSteps
({
job
:
job
,
step
:
array_step
})
return
res
.
indexOf
(
pcs_step
)
>=
0
return
res
.
indexOf
(
pcs_step
)
>=
0
}
}
\ No newline at end of file
This diff is collapsed.
Click to expand it.
ats/analysis/backup.js
View file @
766b3724
...
@@ -74,6 +74,7 @@ var db = $.db;
...
@@ -74,6 +74,7 @@ var db = $.db;
var
Status
=
'ok'
;
var
Status
=
'ok'
;
var
resultData
=
[];
var
resultData
=
[];
var
PAR
=
{};
var
PAR
=
{};
var
ALL
=
{}
if
(
$
.
hasOwnProperty
(
'script_parameter'
)){
if
(
$
.
hasOwnProperty
(
'script_parameter'
)){
PAR
=
JSON
.
parse
(
$
.
script_parameter
);
PAR
=
JSON
.
parse
(
$
.
script_parameter
);
}
}
...
@@ -100,7 +101,6 @@ try {
...
@@ -100,7 +101,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"
){
...
@@ -158,6 +158,15 @@ try {
...
@@ -158,6 +158,15 @@ try {
}
}
}
}
// glod_finger
var
gold_fingers
=
Object
.
keys
(
tmp_matrix
).
filter
(
function
(
v
){
return
/^top_enig$|^bot_enig$/ig
.
test
(
v
)})
if
(
gold_fingers
.
length
){
gold_fingers
=
gold_fingers
.
map
(
function
(
v
){
var
type
=
(
v
==
"top_enig"
)
?
"top"
:
"bot"
return
{
name
:
v
,
type
:
type
}
})
}
ALL
.
gold_fingers
=
gold_fingers
GEN
.
closeStep
()
GEN
.
closeStep
()
var
config
=
{
var
config
=
{
jobInfo
:
{
jobInfo
:
{
...
@@ -166,23 +175,24 @@ try {
...
@@ -166,23 +175,24 @@ try {
vc_card_size_l
:
{
api
:
"vc_card_size"
,
props
:
"ysize"
},
// card长边尺寸 // ? 保留小数
vc_card_size_l
:
{
api
:
"vc_card_size"
,
props
:
"ysize"
},
// card长边尺寸 // ? 保留小数
vc_array_size_w
:
{
api
:
"vc_array_size"
,
props
:
"xsize"
},
// ! array短边尺寸 需要arr_step // ? 保留小数
vc_array_size_w
:
{
api
:
"vc_array_size"
,
props
:
"xsize"
},
// ! array短边尺寸 需要arr_step // ? 保留小数
vc_array_size_l
:
{
api
:
"vc_array_size"
,
props
:
"ysize"
},
// ! array长边尺寸 需要arr_step // ? 保留小数
vc_array_size_l
:
{
api
:
"vc_array_size"
,
props
:
"ysize"
},
// ! array长边尺寸 需要arr_step // ? 保留小数
vc_pcs_count_on_panel
:
true
,
//
todo
array中pcs的数量 ! 需要arr_step
vc_pcs_count_on_panel
:
true
,
// array中pcs的数量 ! 需要arr_step
stack_vias_number
:
true
,
// via孔连续叠加的层数
stack_vias_number
:
true
,
// via孔连续叠加的层数
stack_vias_more
:
{
only_value
:
true
},
// yes|no : 14层板以上时,Stack Vias >=12时,存yes // ! 需要分析完via连续叠加层数
stack_vias_more
:
{
only_value
:
true
},
// yes|no : 14层板以上时,Stack Vias >=12时,存yes // ! 需要分析完via连续叠加层数
depth_drilling
:
{
api
:
"layer_exist"
,
props
:
"depth_drill"
},
// yes|no :存在depth_drill 层时 ,存yes
depth_drilling
:
{
api
:
"layer_exist"
,
props
:
"depth_drill"
},
// yes|no :存在
depth_drill 层时 ,存yes
depth_routing
:
{
api
:
"layer_exist"
,
props
:
"depth_routing"
},
// tmp yes|no :存在depth_routing 层时,,存yes
depth_routing
:
{
api
:
"layer_exist"
,
props
:
"depth_routing"
},
// tmp yes|no :存在
depth_routing 层时,,存yes
laser_via_on_buried_hole
:
true
,
//
todo
via孔在埋孔上时,存yes
laser_via_on_buried_hole
:
true
,
// via孔在埋孔上时,存yes
milling_bit_size
:
true
,
// todo 检查array中pcs的最小间距值
milling_bit_size
:
true
,
// todo 检查array中pcs的最小间距值
milling_length
:
true
,
// todo 检查array中铣切长度
milling_length
:
true
,
// todo 检查array中铣切长度
vc_src_01005_pad_result
:
{
api
:
"board_has_attr"
,
props
:
"01005_pad"
},
// * yes|no:board 层中检查存在01005属性物件时,存yes 这里先拿.smd代替了
vc_src_01005_pad_result
:
{
api
:
"board_has_attr"
,
props
:
"01005_pad"
},
ATS_technology_25dc
:
{
api
:
"layer_exist"
,
props
:
"cavity"
},
// yes|no:存在cavity层别时存yes
ATS_technology_25dc
:
{
api
:
"layer_exist"
,
props
:[
"bend"
,
"top_coverlay"
]},
// yes|no:存在cavity层别时存yes
ATS_technology_25dr
:
{
api
:
"layer_exist"
,
props
:
"cavity"
},
// yes|no:存在cavity层别时存yes
ATS_technology_25dr
:
{
api
:
"layer_exist"
,
props
:
"nclegend-1-2"
},
// yes|no:存在cavity层别时存yes
vc_src_EDGE_PLATING
:
true
,
// yes|no:检查线路外形是否存在物件,存在则存yes // !料号需要有rout层
// vc_src_EDGE_PLATING: true, // yes|no:检查线路外形是否存在物件,存在则存yes // !料号需要有rout层
vc_src_EDGE_PLATING
:
{
api
:
"layer_exist2"
,
props
:[
"fab_page2"
]},
// fab_page2
edge_plating_length
:
true
,
// todo 检查线路外形处物件的长度
edge_plating_length
:
true
,
// todo 检查线路外形处物件的长度
g
lod_finger
:
true
,
// todo yes|no:暂无逻辑
g
old_finger
:
true
,
//
glod_finger_area
:
true
,
//
todo 暂无逻辑
glod_finger_area
:
true
,
//
solder_mask_side
:
true
,
// top|bot|both:检查防焊层所在面次 solder_mask
_side
ATS_sm_side
:
true
,
// top|bot|both:检查防焊层所在面次 ATS_sm
_side
silk_screen_side
:
true
,
// top|bot|both:检查文字层所在面次
vc_id_print_side
:
true
,
// top|bot|both:检查文字层所在面次 vc_id_print_side
min_drl_size
:
true
,
// todo 0.5mm 最小圆孔
min_drl_size
:
true
,
// todo 0.5mm 最小圆孔
max_pth_drl_size
:
true
,
// todo 3.5mm 最大pth圆孔
max_pth_drl_size
:
true
,
// todo 3.5mm 最大pth圆孔
max_npth_drl_size
:
true
,
// todo 6.0mm 最大npth圆孔
max_npth_drl_size
:
true
,
// todo 6.0mm 最大npth圆孔
...
@@ -306,39 +316,26 @@ try {
...
@@ -306,39 +316,26 @@ 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
){
GEN
.
openStep
({
job
:
job
,
name
:
step
})
GEN
.
openStep
({
job
:
job
,
name
:
step
})
console
.
log
(
3
)
GEN
.
COM
(
"chklist_single,show=yes,action=valor_cleanup_set_smd"
)
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"
)
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"
)
GEN
.
COM
(
"get_user_name"
)
console
.
log
(
6
)
GEN
.
COM
(
"get_job_path,job="
+
job
)
GEN
.
COM
(
"get_job_path,job="
+
job
)
console
.
log
(
7
)
GEN
.
COM
(
"disp_on"
)
GEN
.
COM
(
"disp_on"
)
console
.
log
(
8
)
GEN
.
COM
(
"origin_on"
)
GEN
.
COM
(
"origin_on"
)
console
.
log
(
9
)
GEN
.
COM
(
"chklist_cnf_act,chklist=valor_cleanup_set_smd,nact=1,cnf=no"
)
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"
)
console
.
log
(
11
)
GEN
.
COM
(
"skip_next_pre_hook"
)
GEN
.
COM
(
"skip_next_pre_hook"
)
console
.
log
(
12
)
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"
)
console
.
log
(
13
)
GEN
.
COM
(
"get_user_name"
)
GEN
.
COM
(
"get_user_name"
)
console
.
log
(
14
)
GEN
.
COM
(
"skip_current_command"
)
GEN
.
COM
(
"skip_current_command"
)
console
.
log
(
15
)
GEN
.
COM
(
"disp_on"
)
GEN
.
COM
(
"disp_on"
)
console
.
log
(
16
)
GEN
.
COM
(
"origin_on"
)
GEN
.
COM
(
"origin_on"
)
console
.
log
(
17
)
GEN
.
COM
(
"show_tab,tab=Checklists,show=no"
)
GEN
.
COM
(
"show_tab,tab=Checklists,show=no"
)
GEN
.
closeStep
()
GEN
.
closeStep
()
})
})
...
@@ -390,6 +387,42 @@ try {
...
@@ -390,6 +387,42 @@ try {
var
oChecklistName
=
"mychecklist"
var
oChecklistName
=
"mychecklist"
var
signalLayers
=
analysis_obj
.
matrixInfo
.
mSignals
.
map
(
function
(
v
){
return
v
.
name
})
var
signalLayers
=
analysis_obj
.
matrixInfo
.
mSignals
.
map
(
function
(
v
){
return
v
.
name
})
var
drillLayers
=
analysis_obj
.
matrixInfo
.
mDrills
.
map
(
function
(
v
){
return
v
.
name
})
var
drillLayers
=
analysis_obj
.
matrixInfo
.
mDrills
.
map
(
function
(
v
){
return
v
.
name
})
console
.
log
(
"=============================> 13 save card_copper_distribution"
)
var
copper_distribution_steplist
=
[
pcs_step
,
array_step
];
copper_distribution_steplist
.
forEach
(
function
(
step
){
if
(
step
){
GEN
.
openStep
({
job
:
job
,
name
:
step
})
// 铜面积 分step
var
copper_percent_tmp
=
signalLayers
.
map
(
function
(
v
){
var
tmp
=
{
layer
:
v
}
tmp
.
copper_percent
=
GEN
.
copperArea
({
layer1
:
v
}).
percent
+
"%"
return
tmp
})
console
.
log
(
"================ ==signalLayers============"
+
_
.
toString
(
signalLayers
));
console
.
log
(
_
.
toString
(
copper_percent_tmp
));
copper_percent_tmp
.
forEach
(
function
(
item
){
var
save_info
=
{
jobid
:
JobId
,
layer
:
item
.
layer
,
}
if
(
/^cad/ig
.
test
(
step
)){
save_info
.
layerinfohash
=
{
card_copper_distribution
:
item
.
copper_percent
}
}
else
if
(
/^stp/ig
.
test
(
step
)){
save_info
.
layerinfohash
=
{
array_copper_distribution
:
item
.
copper_percent
}
}
save_layerinfo
(
save_info
)
})
GEN
.
closeStep
()
}
})
var
info
=
{
var
info
=
{
min_line_width
:
[
"line"
,
"user_nor_line"
],
min_line_width
:
[
"line"
,
"user_nor_line"
],
min_line_spacing
:
[
"l2l"
],
min_line_spacing
:
[
"l2l"
],
...
@@ -403,8 +436,30 @@ try {
...
@@ -403,8 +436,30 @@ try {
})
})
stepList
.
forEach
(
function
(
step
){
stepList
.
forEach
(
function
(
step
){
GEN
.
openStep
({
job
:
job
,
name
:
step
})
GEN
.
openStep
({
job
:
job
,
name
:
step
})
// 曝光
// 曝光
analysis_obj
.
matrixInfo
.
mOuters
.
forEach
(
function
(
item
){
analysis_obj
.
matrixInfo
.
mOuters
.
forEach
(
function
(
item
){
if
(
ALL
.
gold_fingers
.
length
>
0
){
var
tmp_gold_info
=
{}
ALL
.
gold_fingers
.
forEach
(
function
(
item2
){
tmp_gold_info
[
item2
.
type
]
=
item2
.
name
})
var
layer_gold_type
=
/top/ig
.
test
(
item
.
signalL
)
?
"top"
:
"bot"
if
(
tmp_gold_info
[
layer_gold_type
]){
var
tmp_info
=
GEN
.
exposedArea
({
layer1
:
item
.
signalL
,
mask1
:
tmp_gold_info
[
layer_gold_type
]})
// console.log(_.toString({
// ref_layer: tmp_gold_info[item.type],
// exposed_area: tmp_info
// }));
save_layerinfo
({
jobid
:
JobId
,
layer
:
item
.
signalL
,
layerinfohash
:
{
sf_area_gold_area
:
tmp_info
.
percent
}
})
}
}
if
(
item
.
solderL
){
if
(
item
.
solderL
){
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"}
...
@@ -459,6 +514,7 @@ try {
...
@@ -459,6 +514,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
})
...
@@ -467,26 +523,14 @@ try {
...
@@ -467,26 +523,14 @@ try {
if
(
b
.
pad
!=
"0"
){
if
(
b
.
pad
!=
"0"
){
a
.
push
(
b
.
symbol
)
a
.
push
(
b
.
symbol
)
}
}
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,25 +541,18 @@ try {
...
@@ -497,25 +541,18 @@ try {
}
}
})
})
})
})
// 铜面积
// 数据入库
console
.
log
(
"=============================> 13 save copper_percent"
)
Object
.
keys
(
res
).
forEach
(
function
(
key
){
var
copper_percent_pcs
=
signalLayers
.
map
(
function
(
v
){
var
val
=
res
[
key
]
var
tmp
=
{
layer
:
v
}
tmp
.
copper_percent
=
GEN
.
copperArea
({
layer1
:
v
}).
percent
+
"%"
return
tmp
})
console
.
log
(
"================ ==signalLayers============"
+
_
.
toString
(
signalLayers
));
console
.
log
(
_
.
toString
(
copper_percent_pcs
));
GEN
.
closeStep
()
copper_percent_pcs
.
forEach
(
function
(
item
){
save_layerinfo
({
save_layerinfo
({
jobid
:
JobId
,
jobid
:
JobId
,
layer
:
item
.
layer
,
layer
:
key
,
layerinfohash
:
{
layerinfohash
:
val
copper_percent
:
item
.
copper_percent
}
})
})
})
})
GEN
.
closeStep
()
})
})
// 保存
// 保存
...
@@ -784,32 +821,34 @@ function save_layerinfo(props){ // 保存层信息
...
@@ -784,32 +821,34 @@ function save_layerinfo(props){ // 保存层信息
var
layerinfohash
=
props
.
layerinfohash
;
var
layerinfohash
=
props
.
layerinfohash
;
Object
.
keys
(
layerinfohash
).
forEach
(
function
(
key
){
Object
.
keys
(
layerinfohash
).
forEach
(
function
(
key
){
var
val
=
layerinfohash
[
key
];
var
val
=
layerinfohash
[
key
];
var
value
=
db
.
query
(
""
,
function
(
q
){
if
(
val
&&
val
!=
""
){
return
q
.
selectValue
({
var
value
=
db
.
query
(
""
,
function
(
q
){
table
:
'pdm_job_layerattr'
,
return
q
.
selectValue
({
field
:
"value"
,
table
:
'pdm_job_layerattr'
,
where
:{
job_id
:
jobid
,
attr_name
:
key
,
layer
:
layer
}
field
:
"value"
,
})
where
:{
job_id
:
jobid
,
attr_name
:
key
,
layer
:
layer
}
});
console
.
log
(
"+==========dblayervalue:"
+
value
)
if
(
/done/ig
.
test
(
value
)
||
!
value
){
db
.
query
(
""
,
function
(
q
){
console
.
log
(
"+==========insertRowlayervalue:layer:"
+
layer
+
";attrname:"
+
key
+
";value:"
+
val
)
return
q
.
insertRow
({
table
:
'pdm_job_layerattr'
,
// todo
data
:{
job_id
:
jobid
,
attr_name
:
key
,
value
:
val
,
layer
:
layer
},
// todo
return_field
:
'job_id'
,
})
});
}
else
if
(
value
!==
val
)
{
db
.
query
(
""
,
function
(
q
){
console
.
log
(
"+==========updateRowlayer:layer:"
+
layer
+
";attrname:"
+
key
+
";value:"
+
val
)
return
q
.
updateRow
({
table
:
'pdm_job_layerattr'
,
where
:{
job_id
:
jobid
,
attr_name
:
key
},
data
:{
value
:
val
},
})
})
});
});
console
.
log
(
"+==========dblayervalue:"
+
value
)
if
(
/done/ig
.
test
(
value
)
||
!
value
){
db
.
query
(
""
,
function
(
q
){
console
.
log
(
"+==========insertRowlayervalue:layer:"
+
layer
+
";attrname:"
+
key
+
";value:"
+
val
)
return
q
.
insertRow
({
table
:
'pdm_job_layerattr'
,
// todo
data
:{
job_id
:
jobid
,
attr_name
:
key
,
value
:
val
,
layer
:
layer
},
// todo
return_field
:
'job_id'
,
})
});
}
else
if
(
value
!==
val
)
{
db
.
query
(
""
,
function
(
q
){
console
.
log
(
"+==========updateRowlayer:layer:"
+
layer
+
";attrname:"
+
key
+
";value:"
+
val
)
return
q
.
updateRow
({
table
:
'pdm_job_layerattr'
,
where
:{
job_id
:
jobid
,
attr_name
:
key
},
data
:{
value
:
val
},
})
});
}
}
}
})
})
}
}
...
@@ -854,6 +893,13 @@ function analysis(props){
...
@@ -854,6 +893,13 @@ function analysis(props){
return
GEN
.
getProfileLimits
({
job
:
this
.
job
,
step
:
this
.
array_step
,
units
:
"mm"
})[
props
].
toFixed
(
2
)
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
){
//
if
(
!
this
.
array_step
){
return
"_error"
}
var
has_step
=
has_steps
({
job
:
this
.
job
,
pcs_step
:
this
.
pcs_step
,
array_step
:
this
.
array_step
})
// 有无拼版关系
if
(
has_step
){
// arr 中 pcs数量
var
tmp
=
GEN
.
getRepeat
({
job
:
job
,
step
:
array_step
})
return
tmp
.
length
}
return
"_todo"
return
"_todo"
}
}
T_m_p
.
prototype
.
analysis_stack_vias_number
=
function
(
props
){
// via孔连续叠加的层数
T_m_p
.
prototype
.
analysis_stack_vias_number
=
function
(
props
){
// via孔连续叠加的层数
...
@@ -931,11 +977,67 @@ function analysis(props){
...
@@ -931,11 +977,67 @@ function analysis(props){
t
.
jobInfo
.
laser_info
=
laser_info
;
t
.
jobInfo
.
laser_info
=
laser_info
;
return
res
return
res
}
}
T_m_p
.
prototype
.
analysis_layer_exist2
=
function
(
props
){
// 存在某某层? string
var
layers
=
Object
.
keys
(
this
.
matrixInfo
.
matrix
)
if
(
/string/ig
.
test
(
typeof
(
props
))){
return
layers
.
indexOf
(
props
)
>=
0
?
"yes"
:
"no"
}
else
{
var
res
=
"no"
props
.
forEach
(
function
(
v
){
if
(
layers
.
indexOf
(
v
)
>=
0
){
res
=
"yes"
}
})
return
res
}
}
T_m_p
.
prototype
.
analysis_layer_exist
=
function
(
props
){
// 存在某某层? string
T_m_p
.
prototype
.
analysis_layer_exist
=
function
(
props
){
// 存在某某层? string
return
this
.
matrixInfo
.
matrix
.
hasOwnProperty
(
props
)
?
"yes"
:
"no"
var
layers
=
Object
.
keys
(
this
.
matrixInfo
.
matrix
)
if
(
/string/ig
.
test
(
typeof
(
props
))){
return
layers
.
indexOf
(
props
)
>=
0
?
"yes"
:
"no"
}
else
{
var
res
=
"no"
props
.
forEach
(
function
(
v
){
if
(
layers
.
indexOf
(
v
)
>=
0
){
res
=
"yes"
}
})
return
res
}
}
}
T_m_p
.
prototype
.
analysis_laser_via_on_buried_hole
=
function
(){
// todo
T_m_p
.
prototype
.
analysis_laser_via_on_buried_hole
=
function
(){
// via孔在埋孔上
return
"_todo"
var
t
=
this
// 找出 镭射孔 机械孔
var
laser_layers
=
[]
var
buried_hole
=
[]
for
(
var
key
in
t
.
matrix
)
{
var
val
=
t
.
matrix
[
key
]
if
(
val
.
type
==
"laser_drill"
){
laser_layers
.
push
(
val
)
}
else
if
(
val
.
type
==
"blind_drill"
||
val
.
type
==
"bury_drill"
){
buried_hole
.
push
(
val
)
}
}
var
res
=
"no"
if
(
buried_hole
.
length
>
0
&&
laser_layers
.
length
){
// 有机械孔 和镭射
GEN
.
openStep
({
job
:
t
.
job
,
name
:
t
.
pcs_step
})
GEN
.
affectedLayer
({
affected
:
'no'
,
mode
:
'all'
})
try
{
laser_layers
.
forEach
(
function
(
laser
){
GEN
.
workLayer
({
name
:
laser
,
display_number
:
2
,
clear_before
:
'yes'
})
GEN
.
selClearFeature
()
buried_hole
.
forEach
(
function
(
buried
){
GEN
.
selRefFeat
({
layers
:
buried
,
use
:
'filter'
,
mode
:
'touch'
})
if
(
GEN
.
getSelectCount
()
>
0
){
res
=
"yes"
throw
"yes"
}
})
})
}
catch
(
msg
)
{
}
GEN
.
closeStep
()
}
return
res
}
}
T_m_p
.
prototype
.
analysis_milling_bit_size
=
function
(){
// todo
T_m_p
.
prototype
.
analysis_milling_bit_size
=
function
(){
// todo
return
"_todo"
return
"_todo"
...
@@ -984,41 +1086,59 @@ function analysis(props){
...
@@ -984,41 +1086,59 @@ function analysis(props){
T_m_p
.
prototype
.
analysis_edge_plating_length
=
function
(){
// todo
T_m_p
.
prototype
.
analysis_edge_plating_length
=
function
(){
// todo
return
"_todo"
return
"_todo"
}
}
T_m_p
.
prototype
.
analysis_glod_finger
=
function
(){
// todo
T_m_p
.
prototype
.
analysis_gold_finger
=
function
(){
//
return
"_todo"
if
(
!
ALL
.
gold_fingers
){
return
"no"
}
return
ALL
.
gold_fingers
.
length
>
0
?
"yes"
:
"no"
}
}
T_m_p
.
prototype
.
analysis_glod_finger_area
=
function
(){
// todo
T_m_p
.
prototype
.
analysis_glod_finger_area
=
function
(){
//
if
(
ALL
.
gold_fingers
.
length
>
0
){
GEN
.
openStep
({
job
:
this
.
job
,
name
:
this
.
pcs_step
})
var
gold_finger_area
=
{}
var
res
=
0
;
ALL
.
gold_fingers
.
forEach
(
function
(
item
){
var
tmp
=
GEN
.
copperArea
({
layer1
:
item
.
name
}).
percent
res
+=
Number
(
tmp
)
// var tmp = GEN.copperArea({layer1:item.name}).percent + "%"
// var key = item.type == "top" ? "sf_area_gold_area_front" : "sf_area_gold_area_back"
// gold_finger_area[key] = tmp
})
GEN
.
closeStep
()
if
(
res
){
return
String
(
res
.
toFixed
(
4
))
+
"%"
}
}
return
"_todo"
return
"_todo"
}
}
T_m_p
.
prototype
.
analysis_
solder_mask
_side
=
function
(){
// 检查防焊层所在面次
T_m_p
.
prototype
.
analysis_
ATS_sm
_side
=
function
(){
// 检查防焊层所在面次
var
solder_paste_layers
=
this
.
matrixInfo
.
matrixVal
.
filter
(
function
(
v
){
return
v
.
layer_type
==
"solder_mask"
})
var
solder_paste_layers
=
this
.
matrixInfo
.
matrixVal
.
filter
(
function
(
v
){
return
v
.
layer_type
==
"solder_mask"
})
var
solder_paste_info
=
solder_paste_layers
.
map
(
function
(
v
){
return
v
.
side
}).
reduce
(
function
(
a
,
b
){
var
solder_paste_info
=
solder_paste_layers
.
map
(
function
(
v
){
return
v
.
side
}).
reduce
(
function
(
a
,
b
){
if
(
a
.
indexOf
(
b
)
<
0
){
a
.
push
(
b
)
}
if
(
a
.
indexOf
(
b
)
<
0
){
a
.
push
(
b
)
}
return
a
return
a
},[])
},[])
var
res
=
"
none
"
var
res
=
"
NONE
"
if
(
solder_paste_info
.
length
==
0
){
if
(
solder_paste_info
.
length
==
0
){
res
=
"
none
"
res
=
"
NONE
"
}
else
if
(
solder_paste_info
.
length
==
1
)
{
}
else
if
(
solder_paste_info
.
length
==
1
)
{
res
=
/top/ig
.
test
(
solder_paste_info
[
0
])
?
"
top"
:
"bot
"
res
=
/top/ig
.
test
(
solder_paste_info
[
0
])
?
"
FRONT1"
:
"BACK1
"
}
else
{
}
else
{
res
=
"
both
"
res
=
"
FRONT1_BACK1
"
}
}
return
res
return
res
}
}
T_m_p
.
prototype
.
analysis_
silk_screen
_side
=
function
(){
// 检查文字层所在面次
T_m_p
.
prototype
.
analysis_
vc_id_print
_side
=
function
(){
// 检查文字层所在面次
var
solder_mask_layers
=
this
.
matrixInfo
.
matrixVal
.
filter
(
function
(
v
){
return
v
.
layer_type
==
"solder_paste"
})
var
solder_mask_layers
=
this
.
matrixInfo
.
matrixVal
.
filter
(
function
(
v
){
return
v
.
layer_type
==
"solder_paste"
})
var
solder_mask_info
=
solder_mask_layers
.
map
(
function
(
v
){
return
v
.
side
}).
reduce
(
function
(
a
,
b
){
var
solder_mask_info
=
solder_mask_layers
.
map
(
function
(
v
){
return
v
.
side
}).
reduce
(
function
(
a
,
b
){
if
(
a
.
indexOf
(
b
)
<
0
){
a
.
push
(
b
)
}
if
(
a
.
indexOf
(
b
)
<
0
){
a
.
push
(
b
)
}
return
a
return
a
},[])
},[])
var
res
=
"
none
"
var
res
=
"
NA
"
if
(
solder_mask_info
.
length
==
0
){
if
(
solder_mask_info
.
length
==
0
){
res
=
"
none
"
res
=
"
NA
"
}
else
if
(
solder_mask_info
.
length
==
1
)
{
}
else
if
(
solder_mask_info
.
length
==
1
)
{
res
=
/top/ig
.
test
(
solder_mask_info
[
0
])
?
"
top"
:
"bot
"
res
=
/top/ig
.
test
(
solder_mask_info
[
0
])
?
"
FRONT"
:
"BACK
"
}
else
{
}
else
{
res
=
"
both
"
res
=
"
FRONT / BACK
"
}
}
return
res
return
res
}
}
...
@@ -1054,7 +1174,7 @@ function smdAnalysis(props){
...
@@ -1054,7 +1174,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 +1377,6 @@ function analysisChkAttr(par) {
...
@@ -1257,7 +1377,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,11 +1398,11 @@ function analysisDrill(par, step){
...
@@ -1279,11 +1398,11 @@ 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"
)
console
.
log
(
"==========================>jinru 111111111"
)
// 拷贝到_tmp
// 拷贝到_tmp
...
@@ -1337,7 +1456,7 @@ function bgaAnalysis(props){
...
@@ -1337,7 +1456,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'
})
...
@@ -1682,4 +1801,12 @@ function createOutline(props){
...
@@ -1682,4 +1801,12 @@ function createOutline(props){
return
false
return
false
}
}
}
function
has_steps
(
props
){
var
job
=
props
.
job
var
pcs_step
=
props
.
pcs_step
var
array_step
=
props
.
array_step
var
res
=
GEN
.
getSubSteps
({
job
:
job
,
step
:
array_step
})
return
res
.
indexOf
(
pcs_step
)
>=
0
}
}
\ No newline at end of file
This diff is collapsed.
Click to expand it.
ats/input/ATS_AIM_input_data.js
View file @
766b3724
...
@@ -9,21 +9,14 @@ PARAMETER:
...
@@ -9,21 +9,14 @@ PARAMETER:
name : 'path',
name : 'path',
title : '资料路径',
title : '资料路径',
type : 'LineEdit',
type : 'LineEdit',
property : {tool_tip : '
存放所有料号的文件夹路径,不需要进入到料号文件夹内
'},
property : {tool_tip : '
资料路径,必填
'},
},
},
{
{
name : 'customer',
name : 'db',
title : '客户配置',
title : '料号db',
type : 'RadioBox',
type : 'LineEdit',
property : {
property : {tool_tip : '料号db,默认是genesis'},
item_list:[
},
{name:'customer_1',text:'customer_1'},
{name:'customer_2',text:'customer_2'},
{name:'new_data',text:'new_data'},
],
tool_tip:'客户代码'
}
},
{
{
name : 'config_path',
name : 'config_path',
title : '配置地址',
title : '配置地址',
...
@@ -33,7 +26,7 @@ PARAMETER:
...
@@ -33,7 +26,7 @@ PARAMETER:
]
]
VERSION_HISTORY:
VERSION_HISTORY:
V1.00 2020-04-
15
Scott Sun
V1.00 2020-04-
20
Scott Sun
1.新版本
1.新版本
HELP:
HELP:
...
@@ -54,6 +47,8 @@ PARAMETER:
...
@@ -54,6 +47,8 @@ PARAMETER:
// 引入模块 包
// 引入模块 包
console
.
log
(
"=============================================>input_start"
);
console
.
log
(
"=============================================>input_start"
);
console
.
log
(
"=============================================>input_start"
);
console
.
log
(
"=============================================>input_start"
);
console
.
log
(
"=============================================>input_start"
);
console
.
log
(
"=============================================>input_start"
);
var
$
=
require
(
'topcam.scriptfunc'
).
argv
();
var
$
=
require
(
'topcam.scriptfunc'
).
argv
();
var
fs
=
require
(
'fs'
);
var
fs
=
require
(
'fs'
);
var
_
=
require
(
'lodash'
);
var
_
=
require
(
'lodash'
);
...
@@ -71,6 +66,7 @@ if ($.conf.product_type == "aimdfm") {
...
@@ -71,6 +66,7 @@ if ($.conf.product_type == "aimdfm") {
}
}
var
GEN
=
$
.
gen
;
var
GEN
=
$
.
gen
;
var
Job
=
$
.
job_name
;
var
Job
=
$
.
job_name
;
var
JobId
=
$
.
job_id
;
var
db
=
$
.
db
;
var
db
=
$
.
db
;
var
Status
=
'ok'
;
var
Status
=
'ok'
;
var
resultData
=
[];
var
resultData
=
[];
...
@@ -78,12 +74,36 @@ var PAR = {};
...
@@ -78,12 +74,36 @@ 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
;
if
(
!
par
.
hasOwnProperty
(
"customer"
)){
throw
"未填写配置"
};
// var db_path = db.query("",function(q){
if
(
!
par
.
hasOwnProperty
(
"config_path"
)){
par
.
config_path
=
"cam/input_data"
};
// return q.selectValue({
// table:'pub_conf',
// field:'text_data',
// where:{path : "quote-data-upload"}
// })
// });
// if(_.isEmpty(db_path)){throw "quote-data-upload error"}
if
(
!
par
.
path
||
par
.
path
==
""
)
{
throw
"path error"
}
if
(
!
par
.
hasOwnProperty
(
"config_path"
)
||
par
.
config_path
==
""
){
console
.
log
(
"========================cfg"
);
par
.
config_path
=
"cam/input_data"
};
if
(
!
par
.
hasOwnProperty
(
"db"
)
||
par
.
db
==
""
){
console
.
log
(
"========================db"
);
par
.
db
=
"genesis"
};
var
db_customer
=
db
.
query
(
""
,
function
(
q
){
return
q
.
selectValue
({
table
:
'pdm_job'
,
field
:
'customer_code'
,
where
:{
id
:
JobId
}
})
});
if
(
_
.
isEmpty
(
db_customer
)){
throw
"customer error"
}
if
(
db_customer
&&
!
(
/^done$/ig
.
test
(
db_customer
))
&&
db_customer
!=
""
){
par
.
customer
=
db_customer
}
par
.
customer
=
par
.
customer
[
0
].
toUpperCase
()
+
par
.
customer
.
slice
(
1
).
toLowerCase
()
par
.
customer
=
par
.
customer
[
0
].
toUpperCase
()
+
par
.
customer
.
slice
(
1
).
toLowerCase
()
var
cfg
=
db
.
query
(
""
,
function
(
q
){
var
cfg
=
db
.
query
(
""
,
function
(
q
){
return
q
.
selectValue
({
return
q
.
selectValue
({
...
@@ -92,9 +112,7 @@ try {
...
@@ -92,9 +112,7 @@ try {
where
:{
path
:
par
.
config_path
}
where
:{
path
:
par
.
config_path
}
})
})
});
});
if
(
!
cfg
||
cfg
==
""
){
throw
"cfg can not find"
}
if
(
!
cfg
||
cfg
==
""
){
throw
"cfg can not find"
}
var
config
=
eval
(
cfg
);
var
config
=
eval
(
cfg
);
if
(
!
config
.
hasOwnProperty
(
"customer"
)){
throw
"config error"
}
if
(
!
config
.
hasOwnProperty
(
"customer"
)){
throw
"config error"
}
var
job
=
Job
;
var
job
=
Job
;
...
@@ -103,13 +121,27 @@ try {
...
@@ -103,13 +121,27 @@ try {
// 如果genesis已经存在这个料号
// 如果genesis已经存在这个料号
err
=
delSameJob
({
job
:
job
,
delSame
:
config
.
delSameJob
});
if
(
err
){
throw
err
};
err
=
delSameJob
({
job
:
job
,
delSame
:
config
.
delSameJob
});
if
(
err
){
throw
err
};
var
custCfg
=
config
.
customer
[
par
.
customer
]
var
custCfg
=
config
.
customer
[
par
.
customer
]
if
(
!
custCfg
){
throw
"config error"
}
if
(
!
custCfg
){
throw
"customer config error:"
+
par
.
customer
}
custCfg
.
db
=
par
.
db
||
custCfg
.
db
var
step
=
custCfg
.
step
.
toLowerCase
()
var
step
=
custCfg
.
step
.
toLowerCase
()
// 获取路径下文件信息
// 获取路径下文件信息
var
path
=
par
.
path
||
custCfg
.
path
var
path
=
par
.
path
var
pathInfo
=
fs
.
listDir
(
path
,
1
)
console
.
log
(
"========= ====>path:"
+
path
)
if
(
!
fs
.
exists
(
path
)){
throw
"path error"
}
var
pathInfo
=
fs
.
listDir
(
path
+
"/"
+
db_customer
.
toLowerCase
(),
1
)
// 判断存不存在料号文件
// 判断存不存在料号文件
var
jobFile
=
pathInfo
.
filter
(
function
(
v
){
return
v
.
baseName
.
toLowerCase
()
==
job
})
var
vc_position
=
db
.
query
(
""
,
function
(
q
){
return
q
.
selectValue
({
table
:
'pdm_job'
,
field
:
'version'
,
where
:{
id
:
JobId
}
})
});
var
job_file_baseName
=
job
if
(
vc_position
&&
vc_position
!=
""
&&
!
(
/null/ig
.
test
(
vc_position
))){
job_file_baseName
=
job_file_baseName
+
"_"
+
vc_position
}
var
jobFile
=
pathInfo
.
filter
(
function
(
v
){
return
v
.
baseName
.
toLowerCase
()
==
job_file_baseName
})
if
(
jobFile
.
length
==
0
){
throw
"job file is not exist"
}
if
(
jobFile
.
length
==
0
){
throw
"job file is not exist"
}
var
jobFiles
=
[]
// 记录要分析的文件
var
jobFiles
=
[]
// 记录要分析的文件
if
(
!
jobFile
[
0
].
isDir
)
{
if
(
!
jobFile
[
0
].
isDir
)
{
...
@@ -126,27 +158,36 @@ try {
...
@@ -126,27 +158,36 @@ 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文件 说明需要合并
var
mergeFiles
=
jobInfo
.
data
.
filter
(
function
(
item
){
console
.
log
(
"==========合并的情况"
);
var
err
=
importJob
({
name
:
item
.
file
.
baseName
,
db
:
custCfg
.
db
,
path
:
item
.
file
.
path
},
config
.
delSameJob
)
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
}
if
(
err
){
throw
err
}
return
/yes/ig
.
test
(
item
.
format
.
isMerge
)
return
job
+
"_tmp_"
+
i
})
// 分析arr_job 和 pcs_job
jobs
=
jobs
.
map
(
function
(
jobname
){
GEN
.
openJob
({
job
:
jobname
});
var
step_tmp
=
GEN
.
getStepList
({
job
:
jobname
})[
0
]
var
type
=
getStepType
(
step_tmp
)
return
{
jobname
:
jobname
,
stepname
:
step_tmp
,
type
:
type
}
})
})
var
arr_job
=
mergeFiles
[
0
]
var
arr_step
;
var
pcs_job
=
jobs
.
filter
(
function
(
v
){
return
v
.
type
==
"pcs"
})[
0
]
var
steplist
=
GEN
.
getStepList
({
job
:
arr_job
.
file
.
baseName
})
var
arr_job
=
jobs
.
filter
(
function
(
v
){
return
v
.
type
==
"arr"
})[
0
]
if
(
steplist
.
indexOf
(
arr_job
.
format
.
arrStep
)
<
0
){
arr_step
=
steplist
[
0
]
}
else
{
arr_step
=
arr_job
.
format
.
arrStep
}
GEN
.
openJob
({
job
:
job
});
GEN
.
openJob
({
job
:
arr_job
.
file
.
baseName
});
GEN
.
copyStep
({
// 合并
GEN
.
copyStep
({
// 合并
source_job
:
arr_job
.
file
.
baseN
ame
,
source_job
:
arr_job
.
jobn
ame
,
source_name
:
arr_
step
,
source_name
:
arr_
job
.
stepname
,
dest_job
:
job
,
dest_job
:
pcs_job
.
jobname
,
dest_name
:
arr_
step
,
dest_name
:
arr_
job
.
stepname
,
});
});
GEN
.
closeJob
({
job
:
arr_job
.
file
.
baseName
});
GEN
.
closeJob
({
job
:
arr_job
.
jobname
});
GEN
.
deleteJob
({
job
:
arr_job
.
file
.
baseName
});
// 合并后 删除array的料号
GEN
.
deleteJob
({
job
:
arr_job
.
jobname
});
// 合并后 删除array的料号
// 修改pcs料号名称
GEN
.
COM
(
"rename_entity,job=,is_fw=no,type=job,fw_type=form,name="
+
pcs_job
.
jobname
+
",new_name="
+
job
)
}
}
importOk
=
true
importOk
=
true
}
}
...
@@ -175,7 +216,7 @@ try {
...
@@ -175,7 +216,7 @@ try {
if
(
!
importOk
){
throw
"import error"
}
if
(
!
importOk
){
throw
"import error"
}
// 导入结束
// 导入结束
var
matrix
=
GEN
.
getMatrix
({
job
:
job
});
var
matrix
=
GEN
.
getMatrix
({
job
:
job
});
comp
=
Object
.
keys
(
matrix
).
filter
(
function
(
v
){
// 如果有comp层 删除
comp
=
Object
.
keys
(
matrix
).
filter
(
function
(
v
){
// 如果有comp层 删除
return
/^comp_
\+
_/ig
.
test
(
v
)
return
/^comp_
\+
_/ig
.
test
(
v
)
})
})
...
@@ -224,7 +265,9 @@ catch (e) {
...
@@ -224,7 +265,9 @@ catch (e) {
function
delSameJob
(
props
){
function
delSameJob
(
props
){
var
job
=
props
.
job
var
job
=
props
.
job
var
delSame
=
props
.
delSame
var
delSame
=
props
.
delSame
console
.
log
(
"======================>delsame:"
+
delSame
);
if
(
GEN
.
isJobExists
({
job
:
job
})){
if
(
GEN
.
isJobExists
({
job
:
job
})){
if
(
/^yes$/ig
.
test
(
delSame
)){
if
(
/^yes$/ig
.
test
(
delSame
)){
if
(
GEN
.
isJobOpen
({
job
:
job
})){
GEN
.
closeJob
({
job
:
job
})
}
if
(
GEN
.
isJobOpen
({
job
:
job
})){
GEN
.
closeJob
({
job
:
job
})
}
...
@@ -302,4 +345,12 @@ function importJob(props,delSameJob){
...
@@ -302,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
}
This diff is collapsed.
Click to expand it.
ats/rename/ATS_AIM_data_format.js
View file @
766b3724
...
@@ -62,7 +62,7 @@ try {
...
@@ -62,7 +62,7 @@ try {
var
mode
=
"use"
// develop
var
mode
=
"use"
// develop
var
par
=
PAR
;
var
par
=
PAR
;
if
(
!
par
.
hasOwnProperty
(
"config_path"
)
||
par
.
config_path
==
""
){
if
(
!
par
.
hasOwnProperty
(
"config_path"
)
||
par
.
config_path
==
""
){
console
.
log
(
"==============
==========
cfg"
);
console
.
log
(
"==============cfg"
);
par
.
config_path
=
"cam/input_data"
par
.
config_path
=
"cam/input_data"
};
};
var
db_customer
=
db
.
query
(
""
,
function
(
q
){
var
db_customer
=
db
.
query
(
""
,
function
(
q
){
...
@@ -92,7 +92,6 @@ try {
...
@@ -92,7 +92,6 @@ try {
var
custCfg
=
config
.
customer
[
par
.
customer
]
// 获取客户配置
var
custCfg
=
config
.
customer
[
par
.
customer
]
// 获取客户配置
if
(
!
custCfg
){
throw
"config error"
}
if
(
!
custCfg
){
throw
"config error"
}
var
step
=
custCfg
.
step
.
toLowerCase
()
// 获取pcs_step
// 料号验证
// 料号验证
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
})}
...
@@ -292,10 +291,12 @@ function setDrill(props){ // 设置钻孔
...
@@ -292,10 +291,12 @@ function setDrill(props){ // 设置钻孔
return v.attr.type == "
signal
" && v.attr.context == "
board
"
return v.attr.type == "
signal
" && v.attr.context == "
board
"
})
})
console.log("
=================>
setdrill
:
drillLayer
:
" + _.toString(drillLayer));
console.log("
=================>
setdrill
:
drillLayer
:
" + _.toString(drillLayer));
console.log("
=================>
setdrill
:
signalLayer
:
" + _.toString(signalLayer));
var layerCount = GEN.getLayerCount({job:job})
var layerCount = GEN.getLayerCount({job:job})
// findSignal 根据传入的数字找到对应的signal层 如 1 => top ; 2 => layer_2
// findSignal 根据传入的数字找到对应的signal层 如 1 => top ; 2 => layer_2
function findSignal(num){
function findSignal(num){
console.log(num)
return signalLayer[Number(num-1)].name
return signalLayer[Number(num-1)].name
}
}
function doDrill(drills){ // 分析钻孔层
function doDrill(drills){ // 分析钻孔层
...
...
This diff is collapsed.
Click to expand it.
config_ats.js
View file @
766b3724
...
@@ -419,9 +419,8 @@
...
@@ -419,9 +419,8 @@
{
"orig_name"
:
"fab.art"
,
"tl_name"
:
"fab.art"
},
{
"orig_name"
:
"fab.art"
,
"tl_name"
:
"fab.art"
},
{
"orig_name"
:
[
"multipack.art"
,
"^array$"
],
"tl_name"
:
"array"
},
{
"orig_name"
:
[
"multipack.art"
,
"^array$"
],
"tl_name"
:
"array"
},
{
"orig_name"
:
[
"^outline"
],
"tl_name"
:
"outline"
},
{
"orig_name"
:
[
"^outline"
],
"tl_name"
:
"outline"
},
{
"orig_name"
:
"top-enig"
,
"tl_name"
:
"top-enig"
},
{
"orig_name"
:
[
"top-enig"
,
"top_enig"
],
"tl_name"
:
"top_enig"
},
{
"orig_name"
:
"bot-enig"
,
"tl_name"
:
"bot-enig"
},
{
"orig_name"
:
[
"bot-enig"
,
"bot_enig"
],
"tl_name"
:
"bot_enig"
},
{
"orig_name"
:
"fab_page2"
,
"tl_name"
:
"fab_page2"
},
]
]
},
},
"New_data"
:
{
"New_data"
:
{
...
@@ -549,7 +548,7 @@
...
@@ -549,7 +548,7 @@
}
}
},
},
"data_format"
:
[
"data_format"
:
[
{
"tl_name"
:
"top_enig"
,
"new_name"
:
"top_enig"
,
"attr"
:{
"context"
:
"board"
,
"type"
:
"
mixed
"
}},
{
"tl_name"
:
"top_enig"
,
"new_name"
:
"top_enig"
,
"attr"
:{
"context"
:
"board"
,
"type"
:
"
document
"
}},
{
"tl_name"
:
"past_top"
,
"new_name"
:
"past_top"
,
"attr"
:{
"context"
:
"board"
,
"type"
:
"solder_paste"
}},
{
"tl_name"
:
"past_top"
,
"new_name"
:
"past_top"
,
"attr"
:{
"context"
:
"board"
,
"type"
:
"solder_paste"
}},
{
"tl_name"
:
"silk_top"
,
"new_name"
:
"silk_top"
,
"attr"
:{
"context"
:
"board"
,
"type"
:
"silk_screen"
}},
{
"tl_name"
:
"silk_top"
,
"new_name"
:
"silk_top"
,
"attr"
:{
"context"
:
"board"
,
"type"
:
"silk_screen"
}},
{
"tl_name"
:
"sm_top"
,
"new_name"
:
"sm_top"
,
"attr"
:{
"context"
:
"board"
,
"type"
:
"solder_mask"
}},
{
"tl_name"
:
"sm_top"
,
"new_name"
:
"sm_top"
,
"attr"
:{
"context"
:
"board"
,
"type"
:
"solder_mask"
}},
...
@@ -559,7 +558,7 @@
...
@@ -559,7 +558,7 @@
{
"tl_name"
:
"sm_botm"
,
"new_name"
:
"sm_botm"
,
"attr"
:{
"context"
:
"board"
,
"type"
:
"solder_mask"
}},
{
"tl_name"
:
"sm_botm"
,
"new_name"
:
"sm_botm"
,
"attr"
:{
"context"
:
"board"
,
"type"
:
"solder_mask"
}},
{
"tl_name"
:
"silk_bot"
,
"new_name"
:
"silk_bot"
,
"attr"
:{
"context"
:
"board"
,
"type"
:
"silk_screen"
}},
{
"tl_name"
:
"silk_bot"
,
"new_name"
:
"silk_bot"
,
"attr"
:{
"context"
:
"board"
,
"type"
:
"silk_screen"
}},
{
"tl_name"
:
"past_botm"
,
"new_name"
:
"past_botm"
,
"attr"
:{
"context"
:
"board"
,
"type"
:
"solder_paste"
}},
{
"tl_name"
:
"past_botm"
,
"new_name"
:
"past_botm"
,
"attr"
:{
"context"
:
"board"
,
"type"
:
"solder_paste"
}},
{
"tl_name"
:
"bot_enig"
,
"new_name"
:
"bot_enig"
,
"attr"
:{
"context"
:
"board"
,
"type"
:
"
mixed
"
}},
{
"tl_name"
:
"bot_enig"
,
"new_name"
:
"bot_enig"
,
"attr"
:{
"context"
:
"board"
,
"type"
:
"
document
"
}},
{
"tl_name"
:
"d_(
\\
d+)-(
\\
d+)"
,
"new_name"
:
"d($1)-($2)"
,
"attr"
:{
"context"
:
"board"
,
"type"
:
"drill"
}},
{
"tl_name"
:
"d_(
\\
d+)-(
\\
d+)"
,
"new_name"
:
"d($1)-($2)"
,
"attr"
:{
"context"
:
"board"
,
"type"
:
"drill"
}},
{
"tl_name"
:
"drill"
,
"new_name"
:
"drill"
,
"attr"
:{
"context"
:
"board"
,
"type"
:
"drill"
}},
{
"tl_name"
:
"drill"
,
"new_name"
:
"drill"
,
"attr"
:{
"context"
:
"board"
,
"type"
:
"drill"
}},
{
"tl_name"
:
"rout"
,
"new_name"
:
"rout"
,
"attr"
:{
"context"
:
"board"
,
"type"
:
"rout"
}},
{
"tl_name"
:
"rout"
,
"new_name"
:
"rout"
,
"attr"
:{
"context"
:
"board"
,
"type"
:
"rout"
}},
...
...
This diff is collapsed.
Click to expand it.
test/scott_test.js
View file @
766b3724
...
@@ -54,43 +54,7 @@ if ($.hasOwnProperty('script_parameter')){
...
@@ -54,43 +54,7 @@ if ($.hasOwnProperty('script_parameter')){
}
}
try
{
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
signalLayers
=
Object
.
keys
(
matrix
).
filter
(
function
(
v
){
var
val
=
matrix
[
v
]
return
val
.
layer_type
==
"signal"
&&
val
.
context
==
"board"
})
var
step
=
"cad"
GEN
.
openStep
({
job
:
job
,
name
:
step
})
var
copper_percent_pcs
=
signalLayers
.
map
(
function
(
v
){
var
tmp
=
{
layer
:
v
}
tmp
.
card_copper_distribution
=
GEN
.
copperArea
({
layer1
:
v
}).
percent
+
"%"
return
tmp
})
console
.
log
(
"==================================>card copper_percent_pcs:"
+
_
.
toString
(
copper_percent_pcs
))
var
arr_step
=
"stp"
GEN
.
openStep
({
job
:
job
,
name
:
arr_step
})
var
copper_percent_stp
=
signalLayers
.
map
(
function
(
v
){
var
tmp
=
{
layer
:
v
}
tmp
.
array_copper_distribution
=
GEN
.
copperArea
({
layer1
:
v
}).
percent
+
"%"
return
tmp
})
console
.
log
(
"==================================>card copper_percent_stp:"
+
_
.
toString
(
copper_percent_stp
))
QDfm
.
updateRow
({
QDfm
.
updateRow
({
table
:
"pdm_aimdfm_task"
,
table
:
"pdm_aimdfm_task"
,
data
:
{
data
:
{
...
...
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