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
c52da11a
Commit
c52da11a
authored
Jan 15, 2021
by
Scott Sun
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
s
parent
0b956001
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
225 additions
and
417 deletions
+225
-417
ATS_AIM_customer_data_analysis.js
ats/topcam/ATS_AIM_customer_data_analysis.js
+86
-17
ATS_AIM_data_format.js
ats/topcam/ATS_AIM_data_format.js
+14
-6
ATS_AIM_data_input.js
ats/topcam/ATS_AIM_data_input.js
+8
-3
config_ats.js
ats/topcam/config_ats.js
+1
-1
scotttest.js
public_script/scotttest.js
+88
-365
template.js
template.js
+28
-22
mytest.js
test/mytest.js
+0
-3
No files found.
ats/topcam/ATS_AIM_customer_data_analysis.js
View file @
c52da11a
...
@@ -206,6 +206,7 @@ try {
...
@@ -206,6 +206,7 @@ try {
if
(
GEN
.
checkInout
({
job
:
job
,
mode
:
"test"
})
!=
0
&&
mode
==
"aimdfm"
){
throw
"the job check"
}
if
(
GEN
.
checkInout
({
job
:
job
,
mode
:
"test"
})
!=
0
&&
mode
==
"aimdfm"
){
throw
"the job check"
}
GEN
.
checkInout
({
job
:
job
,
mode
:
"out"
});
GEN
.
checkInout
({
job
:
job
,
mode
:
"out"
});
script_info
({
msg
:
"Data Analysis"
,
result_severity
:
"info"
})
script_info
({
msg
:
"Data Analysis"
,
result_severity
:
"info"
})
global
.
_ERRORMAG
=
"Failed to Data Analysis"
;
script_info
({
progress
:
65
})
script_info
({
progress
:
65
})
var
pcs_step
=
par
.
pcs_step
==
""
?
"cad"
:
par
.
pcs_step
;
var
pcs_step
=
par
.
pcs_step
==
""
?
"cad"
:
par
.
pcs_step
;
var
array_step
=
par
.
array_step
==
""
?
"stp"
:
par
.
array_step
;
var
array_step
=
par
.
array_step
==
""
?
"stp"
:
par
.
array_step
;
...
@@ -217,7 +218,9 @@ try {
...
@@ -217,7 +218,9 @@ try {
pcs_step
=
step_list
[
0
]
pcs_step
=
step_list
[
0
]
}
}
script_info
({
msg
:
"Error-Upload matrix"
,
result_severity
:
"info"
})
script_info
({
msg
:
"Upload matrix"
,
result_severity
:
"info"
})
global
.
_ERRORMAG
=
"Error-Upload matrix"
;
script_info
({
progress
:
65
})
script_info
({
progress
:
65
})
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
})
...
@@ -273,7 +276,9 @@ try {
...
@@ -273,7 +276,9 @@ try {
})
})
GEN
.
clearLayers
()
GEN
.
clearLayers
()
script_info
({
msg
:
"Error-Drill Stackup analysis"
})
script_info
({
msg
:
"Drill Stackup analysis"
})
global
.
_ERRORMAG
=
"Error-Drill Stackup analysis"
;
script_info
({
progress
:
70
})
script_info
({
progress
:
70
})
// * new 钻孔叠构
// * new 钻孔叠构
var
cam_drill_structure
=
[]
var
cam_drill_structure
=
[]
...
@@ -397,7 +402,9 @@ try {
...
@@ -397,7 +402,9 @@ try {
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
})
script_info
({
msg
:
"Error-Profile analysis"
})
script_info
({
msg
:
"Profile analysis"
})
global
.
_ERRORMAG
=
"Error-Profile analysis"
;
script_info
({
progress
:
70
})
script_info
({
progress
:
70
})
// * profile 和 拼版
// * profile 和 拼版
var
pandle_step
=
step_list
.
map
(
function
(
v
){
var
pandle_step
=
step_list
.
map
(
function
(
v
){
...
@@ -471,7 +478,9 @@ try {
...
@@ -471,7 +478,9 @@ try {
}
}
ALL
.
gold_fingers
=
gold_fingers
ALL
.
gold_fingers
=
gold_fingers
GEN
.
closeStep
()
GEN
.
closeStep
()
script_info
({
msg
:
"Error-PN analysis"
})
script_info
({
msg
:
"PN analysis"
})
global
.
_ERRORMAG
=
"Error-PN analysis"
;
var
config
=
{
var
config
=
{
jobInfo
:
{
jobInfo
:
{
layer_count
:
[
"signal"
,
"power_ground"
],
// Board属性的signal或者power_ground层
layer_count
:
[
"signal"
,
"power_ground"
],
// Board属性的signal或者power_ground层
...
@@ -541,7 +550,12 @@ try {
...
@@ -541,7 +550,12 @@ try {
}
}
}
}
console
.
log
(
"=================================> 4 save job info"
)
console
.
log
(
"=================================> 4 save job info"
)
if
(
db_customer
==
"1352"
){
jobInfo
.
array_size_x
=
jobInfo
.
pcs_size_x
jobInfo
.
array_size_y
=
jobInfo
.
pcs_size_y
delete
jobInfo
.
pcs_size_x
delete
jobInfo
.
pcs_size_y
}
save_job_info
({
save_job_info
({
jobid
:
JobId
,
jobid
:
JobId
,
jobinfohash
:
jobInfo
jobinfohash
:
jobInfo
...
@@ -549,7 +563,9 @@ try {
...
@@ -549,7 +563,9 @@ try {
console
.
log
(
"=================================> 5 save drill info"
)
console
.
log
(
"=================================> 5 save drill info"
)
script_info
({
msg
:
"Error-Drill layer analysis"
})
script_info
({
msg
:
"Drill layer analysis"
})
global
.
_ERRORMAG
=
"Error-Drill layer analysis"
;
script_info
({
progress
:
75
})
script_info
({
progress
:
75
})
// * 获取pcs_step 和 array_step的钻孔信息
// * 获取pcs_step 和 array_step的钻孔信息
var
drill_tool_info
=
{};
var
drill_tool_info
=
{};
...
@@ -569,10 +585,11 @@ try {
...
@@ -569,10 +585,11 @@ try {
var
type
=
item
.
type
;
var
type
=
item
.
type
;
var
step
=
item
.
name
;
var
step
=
item
.
name
;
if
(
GEN
.
isStepExists
({
job
:
job
,
step
:
step
})){
if
(
GEN
.
isStepExists
({
job
:
job
,
step
:
step
})){
GEN
.
openStep
({
job
:
job
,
name
:
step
})
drillLayers
.
forEach
(
function
(
layer
){
drillLayers
.
forEach
(
function
(
layer
){
var
layer
=
layer
.
name
;
var
layer
=
layer
.
name
;
if
(
!
GEN
.
isLayerEmpty
({
job
:
job
,
step
:
step
,
layer
:
layer
})){
if
(
!
GEN
.
isLayerEmpty
({
job
:
job
,
step
:
step
,
layer
:
layer
})){
//
GEN.COM("tools_set,layer="+layer+",slots=by_length")
GEN
.
COM
(
"tools_set,layer="
+
layer
+
",slots=by_length"
)
var
tool
=
GEN
.
getTool
({
job
:
job
,
step
:
step
,
layer
:
layer
,
units
:
"mm"
});
// {"1":{"count":"01156","num":"1","type":"plated","min_tol":"0","max_tol":"0","finish_size":"100.31","drill_size":"100.31","slot_len":"0","type2":"standard","shape":"hole","bit":0}}
var
tool
=
GEN
.
getTool
({
job
:
job
,
step
:
step
,
layer
:
layer
,
units
:
"mm"
});
// {"1":{"count":"01156","num":"1","type":"plated","min_tol":"0","max_tol":"0","finish_size":"100.31","drill_size":"100.31","slot_len":"0","type2":"standard","shape":"hole","bit":0}}
if
(
!
drill_tool_info
[
layer
]){
if
(
!
drill_tool_info
[
layer
]){
drill_tool_info
[
layer
]
=
tool
;
drill_tool_info
[
layer
]
=
tool
;
...
@@ -605,6 +622,7 @@ try {
...
@@ -605,6 +622,7 @@ try {
}
}
}
}
})
})
GEN
.
closeStep
()
}
}
})
})
...
@@ -674,7 +692,9 @@ try {
...
@@ -674,7 +692,9 @@ try {
})
})
console
.
log
(
"=============================> 6 set smd bga"
)
console
.
log
(
"=============================> 6 set smd bga"
)
script_info
({
msg
:
"Error-SMD&BGA analysis"
})
script_info
({
msg
:
"SMD&BGA analysis"
})
global
.
_ERRORMAG
=
"Error-SMD&BGA analysis"
;
script_info
({
progress
:
80
});
script_info
({
progress
:
80
});
step_list
.
forEach
(
function
(
step
){
step_list
.
forEach
(
function
(
step
){
GEN
.
openStep
({
job
:
job
,
name
:
step
})
GEN
.
openStep
({
job
:
job
,
name
:
step
})
...
@@ -734,7 +754,9 @@ try {
...
@@ -734,7 +754,9 @@ try {
if
(
oping_layer
){
if
(
oping_layer
){
GEN
.
COM
(
"filter_atr_set,filter_name=popup,condition=yes,attribute=.smd"
)
GEN
.
COM
(
"filter_atr_set,filter_name=popup,condition=yes,attribute=.smd"
)
GEN
.
COM
(
"sel_ref_feat,layers="
+
oping_layer
+
",use=filter,mode=disjoint,pads_as=shape,f_types=line
\
;pad
\
;surface
\
;arc
\
;text,polarity=positive
\
;negative,include_syms=,exclude_syms="
)
GEN
.
COM
(
"sel_ref_feat,layers="
+
oping_layer
+
",use=filter,mode=disjoint,pads_as=shape,f_types=line
\
;pad
\
;surface
\
;arc
\
;text,polarity=positive
\
;negative,include_syms=,exclude_syms="
)
GEN
.
COM
(
"COM filter_reset,filter_name=popup"
)
if
(
GEN
.
getSelectCount
()
>
0
){
GEN
.
COM
(
"sel_delete_atr,attributes=.smd"
)
}
}
}
})
})
GEN
.
closeStep
()
GEN
.
closeStep
()
...
@@ -775,7 +797,6 @@ try {
...
@@ -775,7 +797,6 @@ try {
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 copperArea copper_distribution"
)
console
.
log
(
"=============================> 13 save copperArea copper_distribution"
)
var
copper_distribution_steplist
=
[
pcs_step
,
array_step
];
var
copper_distribution_steplist
=
[
pcs_step
,
array_step
];
copper_distribution_steplist
.
forEach
(
function
(
step
){
copper_distribution_steplist
.
forEach
(
function
(
step
){
...
@@ -838,7 +859,9 @@ try {
...
@@ -838,7 +859,9 @@ try {
// jobpath = "/home/local_db/server_db/jobs/"+job
// jobpath = "/home/local_db/server_db/jobs/"+job
// }
// }
// mkPath(jobpath,["user","opcam","steps"])
// mkPath(jobpath,["user","opcam","steps"])
script_info
({
msg
:
"Error-Signal layer analysis"
})
script_info
({
msg
:
"Signal layer analysis"
})
global
.
_ERRORMAG
=
"Error-Signal layer analysis"
;
script_info
({
progress
:
85
})
script_info
({
progress
:
85
})
stepList
.
forEach
(
function
(
step
){
stepList
.
forEach
(
function
(
step
){
GEN
.
openStep
({
job
:
job
,
name
:
step
})
GEN
.
openStep
({
job
:
job
,
name
:
step
})
...
@@ -996,7 +1019,9 @@ try {
...
@@ -996,7 +1019,9 @@ try {
// layers: signalLayers,
// layers: signalLayers,
// items: [tmpitem]
// items: [tmpitem]
// })
// })
script_info
({
msg
:
"Error-Run Checklist"
,
result_severity
:
"ok"
})
script_info
({
msg
:
"Run Checklist"
,
result_severity
:
"ok"
})
global
.
_ERRORMAG
=
"Error-Run Checklist"
;
// 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 })
// }
// }
...
@@ -1044,6 +1069,7 @@ try {
...
@@ -1044,6 +1069,7 @@ try {
GEN
.
closeStep
()
GEN
.
closeStep
()
})
})
// mvOutProfile({job:job, step:pcs_step})
// mvOutProfile({job:job, step:pcs_step})
global
.
_ERRORMAG
=
false
;
// 保存
// 保存
if
(
/yes/ig
.
test
(
par
.
auto_save
)){
if
(
/yes/ig
.
test
(
par
.
auto_save
)){
...
@@ -1093,10 +1119,10 @@ try {
...
@@ -1093,10 +1119,10 @@ try {
// }
// }
// 邮件触发
// 邮件触发
//
sendEmail({
sendEmail
({
//
subject:db_customer + ' / '+job+' reading is ready!',
subject
:
db_customer
+
' / '
+
job
+
' reading is ready!'
,
//
content: db_customer + ' / '+job+' reading is ready!'
content
:
db_customer
+
' / '
+
job
+
' reading is ready!'
//
})
})
if
(
mode
===
"aimdfm"
)
{
if
(
mode
===
"aimdfm"
)
{
$
.
QDfm
.
updateRow
({
$
.
QDfm
.
updateRow
({
...
@@ -1506,12 +1532,55 @@ function analysis(props){
...
@@ -1506,12 +1532,55 @@ 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
if
(
db_customer
==
"1352"
){
var
signals
=
this
.
matrixInfo
.
mSignals
.
map
(
function
(
v
){
return
v
.
name
})
GEN
.
openStep
({
job
:
this
.
job
,
name
:
this
.
pcs_step
})
GEN
.
selClearFeature
()
GEN
.
affectedLayer
({
affected
:
'yes'
,
layer
:
signals
,
clear_before
:
'yes'
})
GEN
.
selectByFilter
({
profile
:
"in"
});
if
(
GEN
.
getSelectCount
()
>
0
){
if
(
GEN
.
isLayerExists
({
job
:
this
.
job
,
layer
:
"_signals"
})){
GEN
.
deleteLayer
({
job
:
this
.
job
,
layer
:[
"_signals"
]})}
GEN
.
selCopyOther
({
dest
:
'layer_name'
,
target_layer
:
'_signals'
,
invert
:
'no'
,
dx
:
0
,
dy
:
0
,
size
:
0
})
var
tmp
=
GEN
.
getLayerLimits
({
job
:
this
.
job
,
step
:
this
.
pcs_step
,
layer
:
'_signals'
,
units
:
'mm'
})
var
size1
=
Number
(
tmp
.
xsize
);
var
size2
=
Number
(
tmp
.
ysize
);
if
(
size1
>
size2
){
var
tmpsize
=
size2
size2
=
size1
size1
=
tmpsize
}
var
tmp_width
=
0
;
// 获取边线宽度
if
(
GEN
.
isLayerExists
({
job
:
this
.
job
,
layer
:
"tmp2"
})){
GEN
.
deleteLayer
({
job
:
this
.
job
,
layer
:[
"tmp2"
]})}
GEN
.
COM
(
"profile_to_rout,layer=tmp2,width=1"
)
// 看_signals是否有跟tmp2碰到
GEN
.
workLayer
({
name
:
"_signals"
,
display_number
:
2
,
clear_before
:
'yes'
})
GEN
.
COM
(
"filter_reset,filter_name=popup"
)
GEN
.
COM
(
"filter_set,filter_name=popup,update_popup=no,feat_types=line"
)
GEN
.
COM
(
"sel_ref_feat,layers=tmp2,use=filter,mode=touch,pads_as=shape,f_types=line
\
;pad
\
;surface
\
;arc
\
;text,polarity=positive
\
;negative,include_syms=,exclude_syms="
)
if
(
GEN
.
getSelectCount
()
>
0
)
{
// 获取选择东西的 symbol
var
feats
=
GEN
.
getFeatures
({
job
:
this
.
job
,
step
:
this
.
pcs_step
,
layer
:
"_signals"
,
options
:
"select"
,
units
:
"mm"
});
GEN
.
selClearFeature
()
var
minSyms
=
feats
.
map
(
function
(
v
){
return
(
v
.
symbol
.
slice
(
1
)
-
0
)})
minSyms
.
sort
();
tmp_width
=
minSyms
[
0
]
/
1000
}
if
(
props
==
"xsize"
){
return
(
size1
-
tmp_width
).
toFixed
(
2
)
//
}
if
(
props
==
"ysize"
){
return
(
size2
-
tmp_width
).
toFixed
(
2
)
//
}
}
GEN
.
closeStep
()
}
return
GEN
.
getProfileLimits
({
job
:
this
.
job
,
step
:
this
.
pcs_step
,
units
:
"mm"
})[
props
].
toFixed
(
2
)
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"
}
var
tmp
=
GEN
.
getProfileLimits
({
job
:
this
.
job
,
step
:
this
.
array_step
,
units
:
"mm"
})
var
tmp
=
GEN
.
getProfileLimits
({
job
:
this
.
job
,
step
:
this
.
array_step
,
units
:
"mm"
})
var
size1
=
Number
(
tmp
.
xsize
)
var
size1
=
Number
(
tmp
.
xsize
)
var
size2
=
Number
(
tmp
.
ysize
)
var
size2
=
Number
(
tmp
.
ysize
)
if
(
size1
>
size2
){
if
(
size1
>
size2
){
var
tmpsize
=
size2
var
tmpsize
=
size2
...
...
ats/topcam/ATS_AIM_data_format.js
View file @
c52da11a
...
@@ -103,6 +103,7 @@ try {
...
@@ -103,6 +103,7 @@ try {
throw
cam_workflow_info
throw
cam_workflow_info
}
}
script_info
({
msg
:
"Data formatting"
,
result_severity
:
"info"
})
script_info
({
msg
:
"Data formatting"
,
result_severity
:
"info"
})
global
.
_ERRORMAG
=
"Failed to data format"
;
script_info
({
progress
:
35
})
script_info
({
progress
:
35
})
var
par
=
PAR
;
var
par
=
PAR
;
if
(
!
par
.
hasOwnProperty
(
"config_path"
)
||
par
.
config_path
==
""
){
if
(
!
par
.
hasOwnProperty
(
"config_path"
)
||
par
.
config_path
==
""
){
...
@@ -132,17 +133,19 @@ try {
...
@@ -132,17 +133,19 @@ try {
var
config
=
eval
(
cfg
)
var
config
=
eval
(
cfg
)
var
job
=
Job
;
var
job
=
Job
;
if
(
_
.
isEmpty
(
job
))
throw
"没有传入料号名!"
;
if
(
_
.
isEmpty
(
job
))
throw
"没有传入料号名!"
;
job
=
job
.
toLowerCase
()
job
=
job
.
toLowerCase
()
;
var
custCfg
=
config
.
customer
[
par
.
customer
]
// 获取客户配置
var
custCfg
=
config
.
customer
[
par
.
customer
]
;
// 获取客户配置
if
(
!
custCfg
){
throw
"config error"
}
if
(
!
custCfg
){
throw
"config error"
}
// 料号验证
// 料号验证
if
(
!
GEN
.
isJobExists
({
job
:
job
})){
if
(
!
GEN
.
isJobExists
({
job
:
job
})){
script_info
({
msg
:
"No PN was found in system"
,
result_severity
:
"error"
})
script_info
({
msg
:
"Find PN in system"
,
result_severity
:
"error"
})
global
.
_ERRORMAG
=
"No PN was found in system"
;
throw
"job "
+
job
+
" is not exist"
}
throw
"job "
+
job
+
" is not exist"
}
if
(
!
GEN
.
isJobOpen
({
job
:
job
})){
GEN
.
openJob
({
job
:
job
})}
if
(
!
GEN
.
isJobOpen
({
job
:
job
})){
GEN
.
openJob
({
job
:
job
})}
if
(
GEN
.
checkInout
({
job
:
job
,
mode
:
"test"
})
!=
0
&&
mode
==
"aimdfm"
){
if
(
GEN
.
checkInout
({
job
:
job
,
mode
:
"test"
})
!=
0
&&
mode
==
"aimdfm"
){
script_info
({
msg
:
"PN is not checkin"
,
result_severity
:
"error"
})
script_info
({
msg
:
"PN Checkin"
,
result_severity
:
"error"
})
global
.
_ERRORMAG
=
"PN is not checkin"
;
throw
"the job check"
}
throw
"the job check"
}
console
.
log
(
"Checkout====== ========================>"
)
console
.
log
(
"Checkout====== ========================>"
)
GEN
.
checkInout
({
job
:
job
,
mode
:
"out"
});
GEN
.
checkInout
({
job
:
job
,
mode
:
"out"
});
...
@@ -264,7 +267,8 @@ try {
...
@@ -264,7 +267,8 @@ try {
var
after_sort_matrix
=
ret
.
sortNames
var
after_sort_matrix
=
ret
.
sortNames
// 改名
// 改名
script_info
({
msg
:
"Failed to change name(Name clashes)"
,
result_severity
:
"info"
})
script_info
({
msg
:
"Change the name"
,
result_severity
:
"info"
})
global
.
_ERRORMAG
=
"Failed to change name"
;
script_info
({
progress
:
50
})
script_info
({
progress
:
50
})
err
=
reName
({
job
:
job
,
matrix
:
after_sort_matrix
,
cfg
:
format_cfg
})
err
=
reName
({
job
:
job
,
matrix
:
after_sort_matrix
,
cfg
:
format_cfg
})
if
(
err
){
throw
err
}
if
(
err
){
throw
err
}
...
@@ -392,6 +396,8 @@ try {
...
@@ -392,6 +396,8 @@ try {
GEN
.
COM
(
"open_job,job="
+
job
);
GEN
.
COM
(
"open_job,job="
+
job
);
script_info
({
msg
:
"Creating Profile"
,
result_severity
:
"info"
})
script_info
({
msg
:
"Creating Profile"
,
result_severity
:
"info"
})
global
.
_ERRORMAG
=
"Failed to create profile"
;
script_info
({
progress
:
55
})
script_info
({
progress
:
55
})
var
all_layer
=
Object
.
keys
(
tmp_matrix
);
var
all_layer
=
Object
.
keys
(
tmp_matrix
);
// 没有outline层
// 没有outline层
...
@@ -523,6 +529,8 @@ try {
...
@@ -523,6 +529,8 @@ try {
var
hasProfile
=
GEN
.
getProfile
({
job
:
job
,
step
:
tmp_step
})
var
hasProfile
=
GEN
.
getProfile
({
job
:
job
,
step
:
tmp_step
})
if
(
hasProfile
.
match
(
/
\n
/ig
).
length
==
1
){
if
(
hasProfile
.
match
(
/
\n
/ig
).
length
==
1
){
script_info
({
msg
:
"Failed to create profile"
,
result_severity
:
"warn"
})
script_info
({
msg
:
"Failed to create profile"
,
result_severity
:
"warn"
})
global
.
_ERRORMAG
=
"Failed to create profile"
;
job_attrs
.
readin_result
=
"Failed to create profile"
job_attrs
.
readin_result
=
"Failed to create profile"
db
.
query
(
""
,
function
(
q
){
db
.
query
(
""
,
function
(
q
){
return
q
.
updateRow
({
return
q
.
updateRow
({
...
@@ -538,6 +546,7 @@ try {
...
@@ -538,6 +546,7 @@ try {
script_info
({
msg
:
"Data format is done"
,
result_severity
:
"warn"
})
script_info
({
msg
:
"Data format is done"
,
result_severity
:
"warn"
})
global
.
_ERRORMAG
=
false
;
db
.
query
(
""
,
function
(
q
){
db
.
query
(
""
,
function
(
q
){
return
q
.
updateRow
({
return
q
.
updateRow
({
...
@@ -553,7 +562,6 @@ try {
...
@@ -553,7 +562,6 @@ try {
GEN
.
saveJob
({
job
:
job
});
GEN
.
saveJob
({
job
:
job
});
GEN
.
checkInout
({
job
:
job
,
mode
:
"in"
})
GEN
.
checkInout
({
job
:
job
,
mode
:
"in"
})
GEN
.
closeJob
({
job
:
job
})
GEN
.
closeJob
({
job
:
job
})
if
(
mode
===
"aimdfm"
)
{
if
(
mode
===
"aimdfm"
)
{
$
.
QDfm
.
updateRow
({
$
.
QDfm
.
updateRow
({
...
...
ats/topcam/ATS_AIM_data_input.js
View file @
c52da11a
...
@@ -229,6 +229,8 @@ try {
...
@@ -229,6 +229,8 @@ try {
script_info
({
progress
:
10
})
script_info
({
progress
:
10
})
if
(
/odb/ig
.
test
(
jobInfo
.
type
)){
// odb导入
if
(
/odb/ig
.
test
(
jobInfo
.
type
)){
// odb导入
script_info
({
msg
:
"Import odb++"
,
result_severity
:
"error"
});
global
.
_ERRORMAG
=
"Fail to import odb++"
;
if
(
jobInfo
.
data
.
length
==
1
){
// 只分析到一个tgz文件 直接导入
if
(
jobInfo
.
data
.
length
==
1
){
// 只分析到一个tgz文件 直接导入
IKM
.
msg
(
"只分析到一个tgz文件 直接导入"
)
IKM
.
msg
(
"只分析到一个tgz文件 直接导入"
)
import_info
.
push
({
name
:
jobInfo
.
data
[
0
].
file
.
name
,
type
:
"odb++"
,
date
:
now
(),
user
:
$
.
user_name
})
import_info
.
push
({
name
:
jobInfo
.
data
[
0
].
file
.
name
,
type
:
"odb++"
,
date
:
now
(),
user
:
$
.
user_name
})
...
@@ -301,6 +303,8 @@ try {
...
@@ -301,6 +303,8 @@ try {
}
}
if
(
/gerber/ig
.
test
(
jobInfo
.
type
)){
// gerber导入
if
(
/gerber/ig
.
test
(
jobInfo
.
type
)){
// gerber导入
script_info
({
msg
:
"Import gerber"
,
result_severity
:
"error"
});
global
.
_ERRORMAG
=
"Fail to import gerber"
;
GEN
.
createJob
({
name
:
job
,
db
:
custCfg
.
db
})
GEN
.
createJob
({
name
:
job
,
db
:
custCfg
.
db
})
GEN
.
createStep
({
job
:
job
,
name
:
step
})
GEN
.
createStep
({
job
:
job
,
name
:
step
})
var
gerberInfo
=
jobInfo
.
data
.
map
(
function
(
item
){
var
gerberInfo
=
jobInfo
.
data
.
map
(
function
(
item
){
...
@@ -338,6 +342,7 @@ try {
...
@@ -338,6 +342,7 @@ try {
}
}
if
(
!
importOk
){
throw
"import error"
}
if
(
!
importOk
){
throw
"import error"
}
script_info
({
progress
:
20
})
script_info
({
progress
:
20
})
global
.
_ERRORMAG
=
null
;
reNameStep
(
job
)
reNameStep
(
job
)
if
(
/2171/
.
test
(
par
.
customer
)){
if
(
/2171/
.
test
(
par
.
customer
)){
// var matrix = GEN.getMatrix({job:job});
// var matrix = GEN.getMatrix({job:job});
...
@@ -607,7 +612,7 @@ function decompression(path, zips) {
...
@@ -607,7 +612,7 @@ function decompression(path, zips) {
function
changePath
(
path
)
{
function
changePath
(
path
)
{
return
path
.
replace
(
/
[^/]
+
\/
/ig
,
function
(
v
){
return
path
.
replace
(
/
[^/]
+
\/
/ig
,
function
(
v
){
if
(
v
.
length
>=
10
&&
/
\s
/ig
.
test
(
v
))
{
if
(
v
.
length
>=
10
&&
/
\s
/ig
.
test
(
v
))
{
v
=
v
.
replace
(
" "
,
""
)
v
=
v
.
replace
(
" "
,
"
\\
"
)
return
v
.
slice
(
0
,
6
)
+
"~1/"
return
v
.
slice
(
0
,
6
)
+
"~1/"
}
else
{
}
else
{
return
v
return
v
...
@@ -618,9 +623,9 @@ function changePath(path) {
...
@@ -618,9 +623,9 @@ function changePath(path) {
function
autoUn
(
path
,
dirname
)
{
function
autoUn
(
path
,
dirname
)
{
if
(
/
\.
rar$/
.
test
(
path
)){
if
(
/
\.
rar$/
.
test
(
path
)){
fs
.
mkdir
(
dirname
)
fs
.
mkdir
(
dirname
)
process
.
exec
(
'unrar'
,
[
'x'
,
path
,
dirname
,
"-o+"
])
process
.
exec
(
'
/opt/rar/
unrar'
,
[
'x'
,
path
,
dirname
,
"-o+"
])
}
else
{
}
else
{
process
.
exec
(
'7za'
,
[
'x'
,
path
,
"-o"
+
dirname
,
"-aoa"
])
process
.
exec
(
'
/usr/local/lib/p7zip/
7za'
,
[
'x'
,
path
,
"-o"
+
dirname
,
"-aoa"
])
}
}
}
}
...
...
ats/topcam/config_ats.js
View file @
c52da11a
...
@@ -608,7 +608,7 @@
...
@@ -608,7 +608,7 @@
{
"orig_name"
:
[
"^(?:(?!assy|enig|pm|past|ss|silk|sm|soldermask).)+_top
\
.art$"
,
"^top$"
,
"^top.art$"
],
"tl_name"
:
"top"
},
{
"orig_name"
:
[
"^(?:(?!assy|enig|pm|past|ss|silk|sm|soldermask).)+_top
\
.art$"
,
"^top$"
,
"^top.art$"
],
"tl_name"
:
"top"
},
{
"orig_name"
:
[
"^(?:(?!assy|enig|pm|past|ss|silk|sm|soldermask).)+_bottom
\
.art$"
,
"^bot
\\
.art$"
,
"^bottom$"
,
"^bottom
\\
.art$"
],
"tl_name"
:
"bottom"
},
{
"orig_name"
:
[
"^(?:(?!assy|enig|pm|past|ss|silk|sm|soldermask).)+_bottom
\
.art$"
,
"^bot
\\
.art$"
,
"^bottom$"
,
"^bottom
\\
.art$"
],
"tl_name"
:
"bottom"
},
{
"orig_name"
:
[
"int(
\\
d+)
\\
.art"
],
"tl_name"
:
"l_($1+1)"
},
{
"orig_name"
:
[
"int(
\\
d+)
\\
.art"
],
"tl_name"
:
"l_($1+1)"
},
{
"orig_name"
:
[
"l(
\\
d+).*
\\
.gbr$"
,
"^0?(
\\
d+)[
\\
D].*
\\
.art$"
,
"
\\
.p(
\\
d+)p?$"
,
"
\\
.l(
\\
d+)$"
,
"^l(
\\
d+).*
\\
.art$"
,
"^l(
\\
d+)
\\
.art$"
,
"^0(
\\
d+).*ccp_ms"
,
"^s(
\\
d+)
\\
.art"
,
"laye?r?(
\\
d+)"
,
"layer_(
\\
d+)"
],
"tl_name"
:
"l_($1)"
},
{
"orig_name"
:
[
"
^lay(
\\
d+)
\\
.art$|
l(
\\
d+).*
\\
.gbr$"
,
"^0?(
\\
d+)[
\\
D].*
\\
.art$"
,
"
\\
.p(
\\
d+)p?$"
,
"
\\
.l(
\\
d+)$"
,
"^l(
\\
d+).*
\\
.art$"
,
"^l(
\\
d+)
\\
.art$"
,
"^0(
\\
d+).*ccp_ms"
,
"^s(
\\
d+)
\\
.art"
,
"laye?r?(
\\
d+)"
,
"layer_(
\\
d+)"
],
"tl_name"
:
"l_($1)"
},
{
"orig_name"
:
[
"(
\\
d+)-(
\\
d+)-((?:(?!laser)[a-zA-Z])+)
\\
.drl$"
,
"
\\
.d(
\\
d+)-(
\\
d+)((?:(?!laser)[a-zA-Z])+)$"
],
"tl_name"
:
"d($1)-($2)-($3)"
},
{
"orig_name"
:
[
"(
\\
d+)-(
\\
d+)-((?:(?!laser)[a-zA-Z])+)
\\
.drl$"
,
"
\\
.d(
\\
d+)-(
\\
d+)((?:(?!laser)[a-zA-Z])+)$"
],
"tl_name"
:
"d($1)-($2)-($3)"
},
{
"orig_name"
:
[
"
\\
.ncd(
\\
d)-(
\\
d)$"
,
"
\\
.d(
\\
d+)-(
\\
d+)$"
,
"-(
\\
d+)-(
\\
d+)
\\
.drl$"
,
"(
\\
d+)-(
\\
d+)-laser
\\
.drl$"
,
"d(
\\
d+)-(
\\
d+)"
],
"tl_name"
:
"d_($1)-($2)"
},
{
"orig_name"
:
[
"
\\
.ncd(
\\
d)-(
\\
d)$"
,
"
\\
.d(
\\
d+)-(
\\
d+)$"
,
"-(
\\
d+)-(
\\
d+)
\\
.drl$"
,
"(
\\
d+)-(
\\
d+)-laser
\\
.drl$"
,
"d(
\\
d+)-(
\\
d+)"
],
"tl_name"
:
"d_($1)-($2)"
},
{
"orig_name"
:
[
"
\\
.ncdthru$"
],
"tl_name"
:
"drill"
},
{
"orig_name"
:
[
"
\\
.ncdthru$"
],
"tl_name"
:
"drill"
},
...
...
public_script/scotttest.js
View file @
c52da11a
/*
/*
NAME:
NAME:
DESCRIPTION:
锣带输出
;
DESCRIPTION:
检查外层是否有异常
;
PARAMETER:
PARAMETER:
[
[
{
name : 'step',
title : 'step',
type : 'LineEdit',
property : {tool_tip : '目标step,默认是orig'},
},
{
{
name : 'auto_save',
name : 'auto_save',
title : '自动保存',
title : '自动保存',
...
@@ -24,7 +30,7 @@ PARAMETER:
...
@@ -24,7 +30,7 @@ PARAMETER:
HELP:
HELP:
<html><body bgcolor="#DDECFE">
<html><body bgcolor="#DDECFE">
<font size="3" color="#003DB2"><p>功能简介</p></font>
<font size="3" color="#003DB2"><p>功能简介</p></font>
<p>
锣带输出
</p>
<p>
检查外层是否有异常
</p>
<br>
<br>
<font size="3" color="#003DB2"><p>参数配置</p></font>
<font size="3" color="#003DB2"><p>参数配置</p></font>
<p> step信息 </p>
<p> step信息 </p>
...
@@ -50,397 +56,114 @@ var Job = $.job || $.job_name;
...
@@ -50,397 +56,114 @@ var Job = $.job || $.job_name;
var
JobId
=
$
.
job_id
;
var
JobId
=
$
.
job_id
;
var
db
=
$
.
db
||
IKM
.
db
var
db
=
$
.
db
||
IKM
.
db
var
PAR
=
{}
var
PAR
=
{}
if
(
$
.
par
)
{
PAR
=
$
.
par
}
else
if
(
$
.
hasOwnProperty
(
'script_parameter'
)){
PAR
=
JSON
.
parse
(
$
.
script_parameter
);
}
if
(
$
.
par
)
{
PAR
=
$
.
par
}
else
if
(
$
.
hasOwnProperty
(
'script_parameter'
)){
PAR
=
JSON
.
parse
(
$
.
script_parameter
);
}
if
(
mode
===
"aimdfm"
)
{
if
(
mode
===
"aimdfm"
)
{
var
database
=
require
(
"topsin.database"
);
var
database
=
require
(
"topsin.database"
);
database
.
addConnection
(
$
.
conf
.
database_conf
,
"DFM"
);
database
.
addConnection
(
$
.
conf
.
database_conf
,
"DFM"
);
var
QDfm
=
database
.
query
(
"DFM"
);
var
QDfm
=
database
.
query
(
"DFM"
);
$
.
QDfm
=
QDfm
;
$
.
QDfm
=
QDfm
;
if
(
$
.
conf
.
product_type
==
"aimdfm"
)
{
if
(
$
.
conf
.
product_type
==
"aimdfm"
)
{
QDfm
.
updateRow
({
table
:
"pdm_aimdfm_task"
,
data
:
{
current_process_title
:
$
.
process_title
},
where
:
{
id
:
$
.
task_id
}
});
QDfm
.
updateRow
({
table
:
"pdm_aimdfm_task"
,
data
:
{
current_process_title
:
$
.
process_title
},
where
:
{
id
:
$
.
task_id
}
});
}
}
}
}
require
(
"topsin.genmath"
)
var
genMath
=
new
GenMath
();
var
gui
=
new
NewGUI
(
GUI
);
var
Status
=
'ok'
;
var
Status
=
'ok'
;
var
resultData
=
[];
var
resultData
=
[];
var
par
=
PAR
;
var
default_par
=
{
auto_save
:
"No"
,
step
:
"orig"
,
units
:
"mm"
}
for
(
var
key
in
default_par
){
if
(
!
par
.
hasOwnProperty
(
key
)
||
par
[
key
]
==
""
){
par
[
key
]
=
default_par
[
key
]
}}
var
job
=
Job
;
var
Step
;
var
rou_layer
=
[];
try
{
try
{
if
(
_
.
isEmpty
(
job
)){
throw
"参数job不存在"
}
else
{
job
=
job
.
toLowerCase
()
}
var
par
=
PAR
;
var
default_par
=
{
step
:
"edit"
,
auto_save
:
"No"
,
}
for
(
var
key
in
default_par
){
// 设置默认属性
if
(
!
par
.
hasOwnProperty
(
key
)
||
par
[
key
]
==
""
){
par
[
key
]
=
default_par
[
key
]
}
}
if
(
_
.
isEmpty
(
Job
)){
throw
"参数Job不存在"
}
var
job
=
Job
.
toLowerCase
()
if
(
!
GEN
.
isJobExists
({
job
:
job
})){
throw
"料号"
+
job
+
"不存在"
}
if
(
!
GEN
.
isJobExists
({
job
:
job
})){
throw
"料号"
+
job
+
"不存在"
}
if
(
!
GEN
.
isJobOpen
({
job
:
job
})){
GEN
.
openJob
({
job
:
job
})
}
if
(
mode
==
"aimdfm"
){
if
(
GEN
.
checkInout
({
job
:
job
,
mode
:
"test"
})
!=
0
){
throw
"the job check"
}
GEN
.
checkInout
({
job
:
job
,
mode
:
"out"
});
}
var
outLayers
=
getOutSideLayer
({
job
:
job
})
// 选择工作step
var
steplist
=
GEN
.
getStepList
({
job
:
job
})
var
workstep
=
getWorkStep
()
steplist
=
steplist
.
filter
(
function
(
v
){
if
(
workstep
.
length
==
0
){
throw
"未找到工作step"
}
var
tmpreg
=
new
RegExp
(
par
.
step
,
"ig"
)
return
tmpreg
.
test
(
v
)
workstep
.
forEach
(
function
(
step
){
})
Step
=
step
;
GEN
.
openStep
({
job
:
Job
,
name
:
step
});
steplist
.
forEach
(
function
(
step
)
{
GEN
.
clearLayers
();
GEN
.
openStep
({
job
:
job
,
name
:
step
})
GEN
.
affectedLayer
(
{
mode
:
'all'
,
affected
:
'no'
}
);
GEN
.
units
({
type
:
"mm"
})
GEN
.
COM
(
"sel_options,clear_mode=clear_after,display_mode=all_layers,area_inout=inside,area_select=select,select_mode=standard,area_touching_mode=exclude"
);
GEN
.
zoomHome
();
var
layer
=
"gtl"
;
GEN
.
workLayer
({
name
:
layer
,
display_number
:
2
,
clear_before
:
'yes'
})
var
drl_layer
=
layer
+
"_drl"
if
(
GEN
.
isLayerExists
({
job
:
job
,
layer
:
drl_layer
})){
GEN
.
deleteLayer
({
job
:
job
,
layer
:
drl_layer
})}
GEN
.
createLayer
({
job
:
job
,
layer
:
drl_layer
,
type
:
'drill'
})
GEN
.
selCopyOther
({
dest
:
'layer_name'
,
target_layer
:
drl_layer
,
invert
:
'no'
,
dx
:
0
,
dy
:
0
,
size
:
0
})
if
(
GEN
.
isChklistExists
({
job
:
job
,
step
:
step
,
chklist
:
'tmp_chk'
})){
GEN
.
COM
(
"chklist_delete,chklist=tmp_chk"
)
}
GEN
.
COM
(
"chklist_create,chklist=tmp_chk"
)
GEN
.
COM
(
"chklist_show,chklist=tmp_chk"
)
GEN
.
COM
(
"chklist_single,action=valor_analysis_drill,show=yes"
)
GEN
.
COM
(
"chklist_pclear"
)
GEN
.
COM
(
"chklist_cupd,chklist=valor_analysis_drill,nact=1,params=((pp_drill_layer="
+
drl_layer
+
")(pp_rout_distance=200)(pp_tests=Hole Separation)(pp_extra_hole_type=Pth
\
;Via)(pp_use_compensated_rout=Skeleton)),mode=regular"
)
GEN
.
COM
(
"chklist_pcopy,chklist=valor_analysis_drill,nact=1"
)
GEN
.
COM
(
"chklist_ppaste,chklist=tmp_chk,row=0"
)
GEN
.
COM
(
"chklist_run,chklist=tmp_chk,nact=1,area=profile"
)
GEN
.
COM
(
"chklist_close,chklist=valor_analysis_drill,mode=hide"
)
GEN
.
COM
(
"chklist_close,chklist=tmp_chk,mode=hide"
)
GEN
.
deleteLayer
({
job
:
job
,
layer
:
drl_layer
})
var
meas
=
GEN
.
getCheckMeas
({
job
:
job
,
step
:
step
,
chklist
:
'tmp_chk'
,
nact
:
1
})
meas
=
[
"touchh gtl_drl 1.302 mil r5.315 r5.512 SG 2.0707502 6.2600882 2.0695853 6.2595058 1 R"
,
"touchh gtl_drl 3.222 mil r5.315 r5.512 SG 2.0915237 6.2635829 2.0883541 6.2641619 1 R"
,
"closeh gtl_drl 11.209 mil r5.512 r5.512 SG 2.0849209 6.2506255 2.0876766 6.2614906 1 R"
,
"closeh gtl_drl 11.828 mil r5.315 r5.512 SG 2.0904016 6.2611739 2.085407 6.2504523 1 R"
,
"closeh gtl_drl 12.656 mil r5.315 r5.512 SG 2.0733393 6.2606873 2.0856692 6.2635406 1 Y"
,
"closeh gtl_drl 12.733 mil r5.315 r5.512 SG 2.0727262 6.2583112 2.0821941 6.2497969 1 Y"
,
"closeh gtl_drl 13.151 mil r5.512 r5.512 SG 2.0820787 6.2496599 2.0717499 6.2578 1 Y"
,
"closeh gtl_drl 13.826 mil r5.512 r5.512 SG 2.0722601 6.2601694 2.0856793 6.2634983 1 Y"
,
"closeh gtl_drl 15.75 mil r5.315 r5.315 SG 2.0733709 6.260529 2.0889031 6.263142 1 G"
,
"closeh gtl_drl 16.901 mil r5.315 r5.512 SG 2.088911 6.2630973 2.0722949 6.2600094 1 G"
,
"overlap_width gtl_drl 2.191 mil r5.315 r5.512 SG 2.0889095 6.2640604 2.0910652 6.2636666 1 R"
,
"overlap_width gtl_drl 4.111 mil r5.315 r5.512 SG 2.0683732 6.2588998 2.0720503 6.2607382 1 R"
]
meas
=
meas
.
filter
(
function
(
v
){
return
/^touch/
.
test
(
v
)})
if
(
meas
.
length
){
meas
.
forEach
(
function
(
v
){
var
tmparr
=
v
.
split
(
" "
)
GEN
.
COM
(
"sel_net_feat,operation=select,x="
+
tmparr
[
7
]
+
",y="
+
tmparr
[
8
]
+
",use_ffilter=no"
)
if
(
GEN
.
getSelectCount
()
>
0
){
GEN
.
selDelete
()}
})
}
})
})
// 保存
// 保存
if
(
/yes/ig
.
test
(
par
.
auto_save
)){
GEN
.
checkInout
({
job
:
job
,
mode
:
"out"
});
GEN
.
saveJob
({
job
:
job
});
GEN
.
checkInout
({
job
:
job
,
mode
:
"in"
});
GEN
.
closeJob
({
job
:
job
});}
else
{
GEN
.
checkInout
({
job
:
job
,
mode
:
"in"
})}
if
(
/yes/ig
.
test
(
par
.
auto_save
)){
GEN
.
checkInout
({
job
:
job
,
mode
:
"out"
})
// 结束保存料号 关闭料号
GEN
.
saveJob
({
job
:
job
});
GEN
.
checkInout
({
job
:
job
,
mode
:
"in"
})
GEN
.
closeJob
({
job
:
job
})
}
else
{
GEN
.
checkInout
({
job
:
job
,
mode
:
"in"
})
}
if
(
mode
===
"aimdfm"
)
{
if
(
mode
===
"aimdfm"
)
{
$
.
QDfm
.
updateRow
({
table
:
"pdm_aimdfm_task"
,
data
:
{
progress
:
33.33
},
where
:
{
id
:
$
.
task_id
}});
$
.
QDfm
.
updateRow
({
table
:
"pdm_aimdfm_task"
,
data
:
{
progress
:
33.33
},
where
:
{
id
:
$
.
task_id
}});
if
(
GEN
.
hasError
())
{
Status
=
'error'
;
resultData
.
push
({
type
:
"error"
,
title
:
"GEN错误!"
,
detail
:
[{
desc
:
_
.
join
(
GEN
.
STATUS
,
"
\n
"
)
}]
});
if
(
GEN
.
hasError
())
{
Status
=
'error'
;
resultData
.
push
({
type
:
"error"
,
title
:
"GEN错误!"
,
detail
:
[{
desc
:
_
.
join
(
GEN
.
STATUS
,
"
\n
"
)
}]
});
return
{
status
:
Status
,
result_data
:
resultData
};
}
else
{
resultData
.
push
({
type
:
"info"
,
title
:
"操作完成, 请注意检查!"
});
return
{
status
:
Status
,
result_data
:
resultData
};
return
{
status
:
Status
,
result_data
:
resultData
};
}
else
{
resultData
.
push
({
type
:
"info"
,
title
:
"操作完成, 请注意检查!"
});
return
{
status
:
Status
,
result_data
:
resultData
};
}
}
}
else
{
return
"Done"
}
}
else
{
return
"Done"
}
}
catch
(
e
)
{
}
catch
(
e
)
{
IKM
.
msg
(
_
.
join
(
GEN
.
STATUS
,
"
\n
"
));
IKM
.
msg
(
e
);
Status
=
'error'
;
IKM
.
msg
(
_
.
join
(
GEN
.
STATUS
,
"
\n
"
))
IKM
.
msg
(
e
)
Status
=
'error'
;
resultData
.
push
({
type
:
"error"
,
title
:
"脚本执行出错!"
,
detail
:
[{
desc
:
_
.
toString
(
e
)}]});
resultData
.
push
({
type
:
"error"
,
title
:
"脚本执行出错!"
,
detail
:
[{
desc
:
_
.
toString
(
e
)}]});
return
(
mode
===
"aimdfm"
)
?
{
status
:
Status
,
result_data
:
resultData
}
:
"Error"
;
return
(
mode
===
"aimdfm"
)
?
{
status
:
Status
,
result_data
:
resultData
}
:
"Error"
;
}
}
function
NewGUI
(
gui
)
{
function
getOutSideLayer
(
props
){
this
.
msgBox
=
function
(
props
){
// title type content button
var
job
=
props
.
job
props
=
props
||
{}
var
matrix
=
GEN
.
getMatrix
({
job
:
job
})
return
gui
.
msgBox
(
props
.
title
||
"title"
,
props
.
type
||
"info"
,
props
.
content
||
"content"
,
props
.
button
||
[
"ok"
,
"cancel"
]);
var
outLayers
=
[];
}
for
(
var
key
in
matrix
)
{
this
.
selectFromTreeview
=
gui
.
selectFromTreeview
var
info
=
matrix
[
key
]
this
.
selectFile
=
function
(
props
){
// "choose something", "*", true, "file", "/home/abby/fast_io"
if
(
info
.
context
==
"board"
&&
info
.
layer_type
==
"signal"
&&
/top|bot/
.
test
(
info
.
side
)
){
props
=
props
||
{}
outLayers
.
push
({
return
gui
.
selectFile
(
props
.
title
||
"choose something"
,
props
.
filter
||
"*"
,
props
.
multiple
||
false
,
"file"
,
""
);
name
:
key
,
}
side
:
info
.
side
,
this
.
selectSingle
=
function
(
props
)
{
info
:
info
props
=
props
||
{}
})
return
gui
.
selectSingle
({
"title"
:
props
.
title
||
"select"
,
"list"
:
props
.
list
||
[],
"default"
:
props
[
"default"
]
||
""
,
"columns"
:
props
.
columns
||
2
,
"gen"
:
props
.
gen
||
GEN
});
}
this
.
selectMultiple
=
function
(
props
)
{
props
=
props
||
{}
return
gui
.
selectMultiple
({
"title"
:
props
.
title
||
"select"
,
"list"
:
props
.
list
||
[],
"defaultvalue"
:
props
[
"defaultvalue"
]
||
[
""
],
"defaultsize"
:
props
[
"defaultsize"
]
||
[
200
,
100
],
"columns"
:
props
.
columns
||
2
,
"gen"
:
props
.
gen
||
GEN
});
}
this
.
selectFromTable
=
gui
.
selectFromTable
this
.
snapScreen
=
gui
.
snapScreen
this
.
imageViewer
=
gui
.
imageViewer
this
.
inputBox
=
gui
.
inputBox
this
.
showForm
=
gui
.
showForm
this
.
lockUnlockLayer
=
function
(
props
){
props
=
props
||
{}
var
tmp
=
{}
if
(
props
.
matrix
)
{
for
(
var
key
in
props
.
matrix
)
{
var
item
=
props
.
matrix
[
key
]
tmp
[
key
]
=
{
row
:
item
.
row
,
name
:
item
.
name
}
}
}
return
gui
.
lockUnlockLayer
({
title
:
props
.
title
||
"lockUnlockLayer"
,
layermatrix
:
props
.
layermatrix
||
tmp
})
}
this
.
passwordBox
=
function
(
props
){
props
=
props
||
{}
return
gui
.
passwordBox
({
title
:
props
.
title
||
"password"
,
password
:
props
.
password
||
"1212"
})
}
this
.
selectJobLayer
=
function
(
props
)
{
props
=
props
||
{}
return
gui
.
selectJobLayer
({
layertypelist
:
props
.
layertypelist
||
[
{
name
:
"all"
,
display_name
:
"all"
,
filter
:
function
(
x
)
{
return
x
}},
{
name
:
"signal"
,
display_name
:
"signal"
,
filter
:
function
(
x
)
{
return
x
[
"layer_type"
]
===
"signal"
;
}},
{
name
:
"power_ground"
,
display_name
:
"power_ground"
,
filter
:
function
(
x
)
{
return
x
[
"layer_type"
]
===
"power_ground"
;
}},
{
name
:
"mixed"
,
display_name
:
"mixed"
,
filter
:
function
(
x
)
{
return
x
[
"layer_type"
]
===
"mixed"
;
}},
{
name
:
"solder_mask"
,
display_name
:
"solder_mask"
,
filter
:
function
(
x
)
{
return
x
[
"layer_type"
]
===
"solder_mask"
;
}},
{
name
:
"silk_screen"
,
display_name
:
"silk_screen"
,
filter
:
function
(
x
)
{
return
x
[
"layer_type"
]
===
"silk_screen"
;
}},
{
name
:
"solder_paste"
,
display_name
:
"solder_paste"
,
filter
:
function
(
x
)
{
return
x
[
"layer_type"
]
===
"solder_paste"
;
}},
{
name
:
"drill"
,
display_name
:
"drill"
,
filter
:
function
(
x
)
{
return
x
[
"layer_type"
]
===
"drill"
;
}},
{
name
:
"rout"
,
display_name
:
"rout"
,
filter
:
function
(
x
)
{
return
x
[
"layer_type"
]
===
"rout"
;
}},
{
name
:
"document"
,
display_name
:
"document"
,
filter
:
function
(
x
)
{
return
x
[
"layer_type"
]
===
"document"
;
}}
],
//defaultlayertype: "ha",
joblist
:
props
.
joblist
||
[],
defaultJob
:
props
.
defaultJob
||
[],
// select by default
steplist
:
props
.
steplist
||
[],
// defaultstep: "step3",
showstep
:
props
.
showstep
||
true
,
selectmode
:
props
.
selectmode
||
"multiple"
,
// single/multiple
layermatrix
:
props
.
layermatrix
||
{
},
defaultlayer
:
props
.
defaultlayer
||
[]
})
}
}
function
getWorkStep
(
props
){
var
steplists
=
GEN
.
getStepList
({
job
:
job
});
if
(
steplists
.
length
==
0
){
return
"该料号没有step"
}
var
steps_tmp
=
steplists
.
filter
(
function
(
name
){
var
reg
=
new
RegExp
(
par
.
step
,
"ig"
)
return
reg
.
test
(
name
)
})
if
(
steplists
.
length
==
0
){
return
"根据脚本参数过滤出来的step不存在,请检查资料或者脚本参数配置!"
}
var
workstep
=
gui
.
selectMultiple
({
title
:
"请先择工作step"
,
size
:[
200
,
100
],
defaultsize
:[
200
,
100
],
list
:
steplists
.
map
(
function
(
v
){
var
tmp
=
{};
tmp
[
v
]
=
v
;
return
tmp
}),
defaultvalue
:
steps_tmp
,
columns
:
1
,
gen
:
GEN
})
if
(
workstep
.
length
==
0
)
{
return
"没有先择step"
}
return
workstep
}
// rou输出
function
output_rou
(
par
)
{
var
info
=
par
.
info
;
// var PL = GEN.getProfileLimits({job:Job,step:Step,units:'mm'});
var
nc_set
=
'zda'
;
var
machine
=
'sintai_excellon'
;
var
layers
=
[];
for
(
var
key
in
info
.
layer_info
)
{
layers
.
push
(
info
.
layer_info
[
key
])
}
layers
.
forEach
(
function
(
layer
){
if
(
/^yes$/i
.
test
(
layer
.
output_flag
)){
if
(
GEN
.
getNcsetsList
({
job
:
Job
,
step
:
Step
,
layer
:
layer
.
layer_name
}).
indexOf
(
nc_set
)
>=
0
)
{
GEN
.
COM
(
'ncrset_delete'
,{
name
:
nc_set
});
}
GEN
.
COM
(
'ncrset_cur'
,{
job
:
Job
,
step
:
Step
,
layer
:
layer
.
layer_name
,
ncset
:
nc_set
});
GEN
.
COM
(
'ncr_set_machine'
,{
machine
:
machine
,
thickness
:
0
});
GEN
.
COM
(
'ncr_register'
,{
angle
:
0
,
mirror
:
layer
.
is_mirror
,
xoff
:
0
,
yoff
:
0
,
version
:
1
,
xorigin
:
0
,
yorigin
:
0
,
xscale
:
layer
.
scale_x
,
yscale
:
layer
.
scale_y
,
xscale_o
:
0
,
yscale_o
:
0
});
GEN
.
COM
(
'ncr_cre_rout'
);
GEN
.
COM
(
'ncr_ncf_export'
,{
dir
:
info
.
output_path
,
name
:
layer
.
layer_name
});
GEN
.
COM
(
'ncrset_delete'
,{
name
:
nc_set
});
}
}
})
}
// 用户配置参数
function
confirm_gui
(
par
)
{
var
rows
=
{},
n
=
0
;
// var cam = IKM.get_jobinfo({jobname:Job,jobid:JobId,jobcategory:'work',jobinfo:'cam_serial_number',withspec:1});
var
folder
=
'rou'
;
var
path
=
PAR
.
Outpath
+
"/"
+
folder
;
fs
.
mkdir
(
path
)
par
.
layers
.
forEach
(
function
(
layer
){
n
++
;
rows
[
n
]
=
{};
rows
[
n
].
sequence
=
n
;
rows
[
n
].
layer_name
=
layer
;
rows
[
n
].
scale_x
=
1
;
rows
[
n
].
scale_y
=
1
;
rows
[
n
].
output_flag
=
'Yes'
;
rows
[
n
].
is_mirror
=
'no'
;
})
rows
.
output_path
=
path
;
// var v_data = GUI.showForm({
// title:"Rou输出参数确认单",
// defaultsize:[520,500],
// items: [
// {
// type : 'title',
// property:{
// title:'输出料号和名称',
// },
// n_columns:2,
// },
// {
// type : 'title',
// property:{
// title:'参数确认',
// },
// n_columns:8,
// },
// {
// name : 'layer_info',
// label :'参数确认',
// label_position : 'no',
// "class" : 'TL::Gtk2::TableFormPanel',
// expand : 1,
// property : {
// tl_columns :[
// {
// column_name:'layer_name',
// label:'层别名称',
// width:100,
// type:'label',
// },
// {
// column_name:'scale_x',
// label:'涨缩值X',
// width:80,
// type:'number',
// must_field:1,
// },
// {
// column_name:'scale_y',
// label:'涨缩值Y',
// width:80,
// type:'number',
// must_field:1,
// },
// {
// column_name:'output_flag',
// label:'是否输出',
// width:80,
// type:'radio',
// property:{
// tl_columns : 2,
// tl_list : [{'Yes' : '是'}, {'No':'否'}],
// },
// },
// {
// column_name:'is_mirror',
// label:'是否镜像',
// width:80,
// type:'radio',
// property:{
// tl_columns : 2,
// tl_list : [{'yes' : '是'}, {'no':'否'}],
// },
// }
// ],
// tl_rows:rows,
// },
// set_value_func : function(par){
// var data = par.value;
// Object.keys(data).forEach(function(row_name){
// Object.keys(data[row_name]).forEach(function(col_name){
// par.widget.set_value(row_name,col_name,data[row_name][col_name]);
// })
// })
// },
// get_value_func : function(par){return par.widget.get_all_value();},
// },
// {
// type : 'title',
// property:{
// title:'输出设置',
// },
// n_columns:1,
// },
// {
// name : 'username',
// label : '输出者:',
// type : 'string',
// value:GEN.getUserName(),
// width:100,
// must_field:1,
// },
// {
// name : 'output_path',
// label : '输出路径:',
// type : 'string',
// value:path,
// width:100,
// must_field:1,
// property : {
// editable:0,
// },
// buttons : [
// {
// name:'btn1',label:'选择路径',stock:'gtk-add',
// command:function(par){
// var folder = GUI.select_file({title:'选择路径',type:'select-folder',defaultdir:PAR.Outpath});
// if(!folder){return}
// p.formpanel.set_value('output_path', folder);
// }
// },
// ],
// },
// ]
// });
return
rows
;
}
// 文件导入设置
function
input_layers
(
par
)
{
var
info
=
par
.
info
;
var
layers
=
[];
for
(
var
key
in
info
.
layer_info
)
{
layers
.
push
(
info
.
layer_info
[
key
])
}
}
layers
.
forEach
(
function
(
lyr
){
return
outLayers
if
(
/yes/i
.
test
(
lyr
.
output_flag
)){
var
name
=
info
.
output_path
+
'/'
+
lyr
.
layer_name
;
var
layer
=
lyr
.
layer_name
.
toLowerCase
();
GEN
.
COM
(
"input_manual_reset"
);
GEN
.
COM
(
"input_manual_set,path="
+
name
+
",job="
+
par
.
job
+
",step="
+
par
.
step
+
",format=Excellon2,data_type=ascii,units=mm,coordinates=absolute,zeroes=none,nf1=3,nf2=3,decimal=no,separator=nl,tool_units=mm,layer="
+
layer
+
",wheel=,wheel_template=,nf_comp=0,multiplier=1,text_line_width=0.0024,signed_coords=no,break_sr=yes,drill_only=no,merge_by_rule=no,threshold=200,resolution=3"
);
GEN
.
COM
(
"input_manual,script_path="
);
GEN
.
COM
(
"matrix_layer_context,job="
+
par
.
job
+
",matrix=matrix,layer="
+
layer
+
",context=misc"
);
}
})
}
}
\ No newline at end of file
template.js
View file @
c52da11a
...
@@ -78,29 +78,31 @@ for(var key in default_par){ if (!par.hasOwnProperty(key) || par[key] == ""){ pa
...
@@ -78,29 +78,31 @@ for(var key in default_par){ if (!par.hasOwnProperty(key) || par[key] == ""){ pa
var
job
=
Job
;
var
job
=
Job
;
try
{
try
{
if
(
_
.
isEmpty
(
job
)){
throw
"参数job不存在"
}
else
{
job
=
job
.
toLowerCase
()
}
if
(
_
.
isEmpty
(
job
)){
throw
"参数job不存在"
}
else
{
job
=
job
.
toLowerCase
()
}
if
(
!
GEN
.
isJobExists
({
job
:
job
})){
throw
"料号"
+
job
+
"不存在"
}
// if(!GEN.isJobExists({job:job})){throw "料号"+job+"不存在"}
if
(
!
GEN
.
isJobOpen
({
job
:
job
})){
GEN
.
openJob
({
job
:
job
})
}
// if(!GEN.isJobOpen({job:job})){ GEN.openJob({job:job}) }
if
(
mode
==
"aimdfm"
){
if
(
GEN
.
checkInout
({
job
:
job
,
mode
:
"test"
})
!=
0
){
throw
"the job check"
}
else
{
GEN
.
checkInout
({
job
:
job
,
mode
:
"out"
})
}
}
// if(mode == "aimdfm"){ if(GEN.checkInout({job:job,mode:"test"}) != 0){ throw "the job check" } else { GEN.checkInout({job:job,mode:"out"}) } }
var
stepList
=
GEN
.
getStepList
({
job
:
job
})
stepList
=
stepList
.
filter
(
function
(
step
){
var
reg
=
new
RegExp
(
par
.
step
,
"ig"
)
return
reg
.
test
(
step
)
})
stepList
.
forEach
(
function
(
step
){
GEN
.
openStep
({
job
:
job
,
name
:
step
})
// var tool = GEN.getTool({job:job,step:step,layer:"ftdrill",units:"mm"},true); // {"1":{"count":"01156","num":"1","type":"plated","min_tol":"0","max_tol":"0","finish_size":"100.31","drill_size":"100.31","slot_len":"0","type2":"standard","shape":"hole","bit":0}}
// fs.writeFile("/home/toplinker/samba/scott_test/tmp", _.toString(tool))
// var stepList = GEN.getStepList({job:job})
// stepList = stepList.filter(function(step){
// var reg = new RegExp(par.step,"ig")
// process.exec('7za', ['x' ,"/tmp/topcamtest/custom0.zip", "-o/tmp/topcamtest/custom0", "-aoa"])
// return reg.test(step)
// })
process
.
exec
(
'/usr/local/lib/p7zip/7za'
,
[
'x'
,
"/tmp/tmp/custom0.zip"
,
"-o/tmp/tmp/custom0"
,
"-aoa"
])
// /usr/local/lib/p7zip/7za x /tmp/topcamtest/custom0.zip -o/tmp/topcamtest/custom0 -aoa
})
// /usr/bin/sudo -u genesis -b -s /usr/bin/id -un > /tmp/topcamtest/test.txt
// 保存
// mkdir /tmp/test
// exportInfo(ret)
// /usr/bin/sudo -u genesis -b -s /usr/local/lib/p7zip/7za x /tmp/topcamtest/custom0.zip -o/tmp/topcamtest/custom0 -aoa
// sudo -u genesis -b -s /bin/csh -c "setenv DISPLAY ':0.0';cd /opt/toplinker/aimdfmserver/bin;./aimdfmserver > /dev/null"
// stepList.forEach(function(step){
// GEN.openStep({job:job,name:step});
// GEN.COM("tools_set,layer=ftdrill,slots=by_length")
// var tool = GEN.getTool({job:job,step:step,layer:"ftdrill",units:"mm"},true); // {"1":{"count":"01156","num":"1","type":"plated","min_tol":"0","max_tol":"0","finish_size":"100.31","drill_size":"100.31","slot_len":"0","type2":"standard","shape":"hole","bit":0}}
// fs.writeFile("/home/toplinker/samba/scott_test/tmp", _.toString(tool))
// })
// 保存
if
(
/yes/ig
.
test
(
par
.
auto_save
)){
GEN
.
checkInout
({
job
:
job
,
mode
:
"out"
});
GEN
.
saveJob
({
job
:
job
});
GEN
.
checkInout
({
job
:
job
,
mode
:
"in"
});
GEN
.
closeJob
({
job
:
job
});}
else
{
GEN
.
checkInout
({
job
:
job
,
mode
:
"in"
})}
if
(
/yes/ig
.
test
(
par
.
auto_save
)){
GEN
.
checkInout
({
job
:
job
,
mode
:
"out"
});
GEN
.
saveJob
({
job
:
job
});
GEN
.
checkInout
({
job
:
job
,
mode
:
"in"
});
GEN
.
closeJob
({
job
:
job
});}
else
{
GEN
.
checkInout
({
job
:
job
,
mode
:
"in"
})}
if
(
mode
===
"aimdfm"
)
{
if
(
mode
===
"aimdfm"
)
{
$
.
QDfm
.
updateRow
({
table
:
"pdm_aimdfm_task"
,
data
:
{
progress
:
33.33
},
where
:
{
id
:
$
.
task_id
}});
$
.
QDfm
.
updateRow
({
table
:
"pdm_aimdfm_task"
,
data
:
{
progress
:
33.33
},
where
:
{
id
:
$
.
task_id
}});
...
@@ -112,4 +114,8 @@ try {
...
@@ -112,4 +114,8 @@ try {
IKM
.
msg
(
_
.
join
(
GEN
.
STATUS
,
"
\n
"
));
IKM
.
msg
(
e
);
Status
=
'error'
;
IKM
.
msg
(
_
.
join
(
GEN
.
STATUS
,
"
\n
"
));
IKM
.
msg
(
e
);
Status
=
'error'
;
resultData
.
push
({
type
:
"error"
,
title
:
"脚本执行出错!"
,
detail
:
[{
desc
:
_
.
toString
(
e
)}]});
resultData
.
push
({
type
:
"error"
,
title
:
"脚本执行出错!"
,
detail
:
[{
desc
:
_
.
toString
(
e
)}]});
return
(
mode
===
"aimdfm"
)
?
{
status
:
Status
,
result_data
:
resultData
}
:
"Error"
;
return
(
mode
===
"aimdfm"
)
?
{
status
:
Status
,
result_data
:
resultData
}
:
"Error"
;
}
function
exportInfo
(
info
){
fs
.
writeFile
(
"/home/toplinker/samba/scott_test/tmp"
,
_
.
toString
(
info
))
}
}
\ No newline at end of file
test/mytest.js
View file @
c52da11a
...
@@ -11,9 +11,6 @@ var JobId = $.job_id;
...
@@ -11,9 +11,6 @@ var JobId = $.job_id;
try
{
try
{
var
_matrix
=
GEN
.
getMatrix
({
job
:
job
})
var
_matrix
=
GEN
.
getMatrix
({
job
:
job
})
var
_layers
=
Object
.
keys
(
_matrix
)
var
_layers
=
Object
.
keys
(
_matrix
)
var
specialLayers
=
_layers
.
filter
(
function
(
v
){
return
/^gnd
\d?\\
.art$|^in
\d?\\
.art$|^vcc
\\
.art$/
.
test
(
v
)})
var
specialLayers
=
_layers
.
filter
(
function
(
v
){
return
/^gnd
\d?\\
.art$|^in
\d?\\
.art$|^vcc
\\
.art$/
.
test
(
v
)})
...
...
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