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
1218d449
Commit
1218d449
authored
Oct 19, 2020
by
Scott Sun
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
scott
parent
b22f98b8
Changes
5
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
207 additions
and
137 deletions
+207
-137
ATS_AIM_customer_data_analysis.js
ats/topcam/ATS_AIM_customer_data_analysis.js
+39
-15
ATS_AIM_data_format.js
ats/topcam/ATS_AIM_data_format.js
+21
-14
ATS_AIM_input_data.js
ats/topcam/ATS_AIM_input_data.js
+8
-8
config_ats.js
ats/topcam/config_ats.js
+1
-1
scotttest.js
public_script/scotttest.js
+138
-99
No files found.
ats/topcam/ATS_AIM_customer_data_analysis.js
View file @
1218d449
...
@@ -137,7 +137,6 @@ var resultData = [];
...
@@ -137,7 +137,6 @@ var resultData = [];
var
ALL
=
{}
var
ALL
=
{}
var
Omatrix
=
{};
var
Omatrix
=
{};
try
{
try
{
console
.
log
(
"=============================================>anaysis_start"
);
console
.
log
(
"=============================================>anaysis_start"
);
var
par
=
PAR
;
var
par
=
PAR
;
var
vc_src_01005_pad_result
=
par
.
vc_src_01005_pad_result
var
vc_src_01005_pad_result
=
par
.
vc_src_01005_pad_result
...
@@ -152,7 +151,7 @@ try {
...
@@ -152,7 +151,7 @@ try {
// 检查料号是否能够check out
// 检查料号是否能够check out
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
({
result_severity
:
"analysis start"
})
script_info
({
msg
:
"analysis start"
})
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
;
...
@@ -163,7 +162,9 @@ try {
...
@@ -163,7 +162,9 @@ try {
if
(
step_list
.
indexOf
(
pcs_step
)
<
0
){
if
(
step_list
.
indexOf
(
pcs_step
)
<
0
){
pcs_step
=
step_list
[
0
]
pcs_step
=
step_list
[
0
]
}
}
script_info
({
result_severity
:
"analysis update_matrix_info"
})
script_info
({
msg
:
"analysis update_matrix_info"
})
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
})
...
@@ -219,7 +220,7 @@ try {
...
@@ -219,7 +220,7 @@ try {
})
})
GEN
.
clearLayers
()
GEN
.
clearLayers
()
script_info
({
result_severity
:
"analysis drill_stack"
})
script_info
({
msg
:
"analysis drill_stack"
})
script_info
({
progress
:
70
})
script_info
({
progress
:
70
})
// * new 钻孔叠构
// * new 钻孔叠构
var
cam_drill_structure
=
[]
var
cam_drill_structure
=
[]
...
@@ -361,7 +362,7 @@ try {
...
@@ -361,7 +362,7 @@ try {
rmOutProfile
({
job
:
job
,
step
:
pcs_step
})
rmOutProfile
({
job
:
job
,
step
:
pcs_step
})
}
}
GEN
.
closeStep
()
GEN
.
closeStep
()
script_info
({
result_severity
:
"analysis panel_info"
})
script_info
({
msg
:
"analysis panel_info"
})
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
){
...
@@ -435,7 +436,7 @@ try {
...
@@ -435,7 +436,7 @@ try {
}
}
ALL
.
gold_fingers
=
gold_fingers
ALL
.
gold_fingers
=
gold_fingers
GEN
.
closeStep
()
GEN
.
closeStep
()
script_info
({
result_severity
:
"analysis some_job_info"
})
script_info
({
msg
:
"analysis some_job_info"
})
var
config
=
{
var
config
=
{
jobInfo
:
{
jobInfo
:
{
layer_count
:
[
"signal"
,
"power_ground"
],
// Board属性的signal或者power_ground层
layer_count
:
[
"signal"
,
"power_ground"
],
// Board属性的signal或者power_ground层
...
@@ -515,7 +516,7 @@ try {
...
@@ -515,7 +516,7 @@ try {
console
.
log
(
"===================================> 5 save drill info"
)
console
.
log
(
"===================================> 5 save drill info"
)
script_info
({
result_severity
:
"analysis drill_info"
})
script_info
({
msg
:
"analysis drill_info"
})
script_info
({
progress
:
75
})
script_info
({
progress
:
75
})
// * 获取pcs_step 和 array_step的钻孔信息
// * 获取pcs_step 和 array_step的钻孔信息
var
drill_tool_info
=
{};
var
drill_tool_info
=
{};
...
@@ -530,6 +531,7 @@ try {
...
@@ -530,6 +531,7 @@ try {
name
:
par
.
array_step
name
:
par
.
array_step
}
}
]
]
steps_drillinfo
.
forEach
(
function
(
item
){
steps_drillinfo
.
forEach
(
function
(
item
){
var
type
=
item
.
type
;
var
type
=
item
.
type
;
var
step
=
item
.
name
;
var
step
=
item
.
name
;
...
@@ -537,7 +539,7 @@ try {
...
@@ -537,7 +539,7 @@ try {
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
;
...
@@ -639,7 +641,7 @@ try {
...
@@ -639,7 +641,7 @@ try {
})
})
console
.
log
(
"=============================> 6 set smd bga"
)
console
.
log
(
"=============================> 6 set smd bga"
)
script_info
({
result_severity
:
"analysis smd&bga"
})
script_info
({
msg
:
"analysis smd&bga"
})
script_info
({
progress
:
80
})
script_info
({
progress
:
80
})
var
allStep
=
GEN
.
getStepList
({
job
:
job
})
var
allStep
=
GEN
.
getStepList
({
job
:
job
})
allStep
.
forEach
(
function
(
step
){
allStep
.
forEach
(
function
(
step
){
...
@@ -783,6 +785,7 @@ try {
...
@@ -783,6 +785,7 @@ try {
jobid
:
JobId
,
jobid
:
JobId
,
jobinfohash
:
{
ATS_surface_area_base_on
:
"Card"
}
jobinfohash
:
{
ATS_surface_area_base_on
:
"Card"
}
})
})
var
jobpath
=
GEN
.
getJobPath
({
job
:
job
})
var
jobpath
=
GEN
.
getJobPath
({
job
:
job
})
// if(GEN.GEN_TYPE == "genesis"){
// if(GEN.GEN_TYPE == "genesis"){
// jobpath = GEN.getJobPath({job:job})
// jobpath = GEN.getJobPath({job:job})
...
@@ -790,7 +793,7 @@ try {
...
@@ -790,7 +793,7 @@ 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
({
result_severity
:
"analysis signal"
})
script_info
({
msg
:
"analysis signal"
})
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
})
...
@@ -943,7 +946,7 @@ try {
...
@@ -943,7 +946,7 @@ try {
if
(
par
.
erf
){
if
(
par
.
erf
){
tmpitem
.
erf
=
par
.
erf
tmpitem
.
erf
=
par
.
erf
}
}
script_info
({
result_severity
:
"analysis run_signal_chk"
})
script_info
({
msg
:
"analysis run_signal_chk"
})
createChklistAndRun
({
// 创建checklist并运行
createChklistAndRun
({
// 创建checklist并运行
layers
:
signalLayers
,
layers
:
signalLayers
,
items
:
[
tmpitem
]
items
:
[
tmpitem
]
...
@@ -1005,7 +1008,7 @@ try {
...
@@ -1005,7 +1008,7 @@ try {
IKM
.
msg
(
"export"
)
IKM
.
msg
(
"export"
)
script_info
({
result_severity
:
"analysis export"
})
script_info
({
msg
:
"analysis export"
})
script_info
({
progress
:
95
})
script_info
({
progress
:
95
})
// 导出
// 导出
if
(
par
.
export_path
!=
""
&&
par
.
export_mode
!=
""
&&
par
.
export_submode
!=
""
){
if
(
par
.
export_path
!=
""
&&
par
.
export_mode
!=
""
&&
par
.
export_submode
!=
""
){
...
@@ -1132,6 +1135,26 @@ function ANALYSIS_STACKUP(props){
...
@@ -1132,6 +1135,26 @@ function ANALYSIS_STACKUP(props){
var
matrix
=
GEN
.
getMatrix
({
job
:
job
})
var
matrix
=
GEN
.
getMatrix
({
job
:
job
})
var
layer_count
=
GEN
.
getLayerCount
({
job
:
job
})
// !
var
layer_count
=
GEN
.
getLayerCount
({
job
:
job
})
// !
save_job_info
({
jobid
:
JobId
,
jobcategory
:
props
.
jobcategory
,
jobinfohash
:{
TL_layer_count
:
layer_count
}});
save_job_info
({
jobid
:
JobId
,
jobcategory
:
props
.
jobcategory
,
jobinfohash
:{
TL_layer_count
:
layer_count
}});
var
job_attrs
=
db
.
query
(
""
,
function
(
q
){
return
q
.
selectValue
({
table
:
'pdm_job'
,
field_format
:{
job_attrs
:
'json'
},
field
:
'job_attrs'
,
where
:{
id
:
JobId
}
})
});
if
(
!
job_attrs
)
{
job_attrs
=
{}}
job_attrs
.
layer_count
=
layer_count
db
.
query
(
""
,
function
(
q
){
return
q
.
updateRow
({
table
:
'pdm_job'
,
data
:{
job_attrs
:
job_attrs
},
update_policy
:{
attr_data
:
'json_merge'
},
where
:{
id
:
JobId
}
})
});
_
.
values
(
matrix
).
sort
(
function
(
a
,
b
){
return
a
.
row
-
b
.
row
}).
forEach
(
function
(
layer
){
_
.
values
(
matrix
).
sort
(
function
(
a
,
b
){
return
a
.
row
-
b
.
row
}).
forEach
(
function
(
layer
){
layer
.
odb_name
=
layer
.
name
;
layer
.
odb_name
=
layer
.
name
;
layer
.
name
=
layer
.
tl_name
;
layer
.
name
=
layer
.
tl_name
;
...
@@ -1265,6 +1288,7 @@ function selCopyLayer(props){ // 拷贝选择的到辅助层
...
@@ -1265,6 +1288,7 @@ function selCopyLayer(props){ // 拷贝选择的到辅助层
function
save_job_info
(
props
){
// 保存料号信息
function
save_job_info
(
props
){
// 保存料号信息
var
jobid
=
props
.
jobid
;
var
jobid
=
props
.
jobid
;
var
jobinfohash
=
props
.
jobinfohash
;
var
jobinfohash
=
props
.
jobinfohash
;
Object
.
keys
(
jobinfohash
).
forEach
(
function
(
key
){
Object
.
keys
(
jobinfohash
).
forEach
(
function
(
key
){
var
val
=
jobinfohash
[
key
];
var
val
=
jobinfohash
[
key
];
var
value
=
db
.
query
(
""
,
function
(
q
){
var
value
=
db
.
query
(
""
,
function
(
q
){
...
@@ -1274,7 +1298,6 @@ function save_job_info(props){ // 保存料号信息
...
@@ -1274,7 +1298,6 @@ function save_job_info(props){ // 保存料号信息
where
:{
job_id
:
jobid
,
attr_name
:
key
}
where
:{
job_id
:
jobid
,
attr_name
:
key
}
})
})
});
});
console
.
log
(
"jobid:"
+
jobid
+
"==========dbjobvalue:"
+
val
)
if
(
/done/ig
.
test
(
value
)
||
!
value
){
if
(
/done/ig
.
test
(
value
)
||
!
value
){
db
.
query
(
""
,
function
(
q
){
db
.
query
(
""
,
function
(
q
){
return
q
.
insertRow
({
return
q
.
insertRow
({
...
@@ -2034,6 +2057,7 @@ function analysisDrill(par, step){
...
@@ -2034,6 +2057,7 @@ function analysisDrill(par, step){
GEN
.
workLayer
({
name
:
item
,
display_number
:
1
,
clear_before
:
"yes"
})
GEN
.
workLayer
({
name
:
item
,
display_number
:
1
,
clear_before
:
"yes"
})
GEN
.
COM
(
"filter_set,filter_name=popup,update_popup=no,feat_types=pad"
);
GEN
.
COM
(
"filter_set,filter_name=popup,update_popup=no,feat_types=pad"
);
GEN
.
COM
(
"sel_ref_feat"
,{
layers
:
tmplayer
,
use
:
"filter"
,
mode
:
"touch"
,
pads_as
:
"shape"
,
f_types
:
"pad"
,
polarity
:
"positive
\
;negative"
,
include_syms
:
drill
.
symbol
})
GEN
.
COM
(
"sel_ref_feat"
,{
layers
:
tmplayer
,
use
:
"filter"
,
mode
:
"touch"
,
pads_as
:
"shape"
,
f_types
:
"pad"
,
polarity
:
"positive
\
;negative"
,
include_syms
:
drill
.
symbol
})
// GEN.selRefFeat({layers:tmplayer, use:"filter",mode:"touch"})
GEN
.
COM
(
"filter_reset,filter_name=popup"
)
GEN
.
COM
(
"filter_reset,filter_name=popup"
)
if
(
GEN
.
getSelectCount
()
>
0
){
if
(
GEN
.
getSelectCount
()
>
0
){
var
res
=
""
var
res
=
""
...
@@ -2043,7 +2067,7 @@ function analysisDrill(par, step){
...
@@ -2043,7 +2067,7 @@ function analysisDrill(par, step){
return
/^r
\d
+/
.
test
(
item
.
symbol
)
return
/^r
\d
+/
.
test
(
item
.
symbol
)
})
})
pads
=
pads
.
sort
(
function
(
a
,
b
){
pads
=
pads
.
sort
(
function
(
a
,
b
){
return
parseInt
(
a
.
symbol
)
-
parseInt
(
b
.
symbol
)
return
parseInt
(
a
.
symbol
.
slice
(
1
))
-
parseInt
(
b
.
symbol
.
slice
(
1
)
)
})
})
res
=
pads
[
0
].
symbol
.
slice
(
1
)
res
=
pads
[
0
].
symbol
.
slice
(
1
)
}
}
...
...
ats/topcam/ATS_AIM_data_format.js
View file @
1218d449
...
@@ -68,7 +68,7 @@ if (mode === "aimdfm") {
...
@@ -68,7 +68,7 @@ if (mode === "aimdfm") {
var
Status
=
'ok'
;
var
Status
=
'ok'
;
var
resultData
=
[];
var
resultData
=
[];
try
{
try
{
script_info
({
result_severity
:
"format start"
})
script_info
({
msg
:
"format start"
})
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
==
""
){
...
@@ -229,7 +229,7 @@ try {
...
@@ -229,7 +229,7 @@ try {
// 改名
// 改名
script_info
({
result_severity
:
"format rename"
})
script_info
({
msg
:
"format rename"
})
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
}
...
@@ -290,7 +290,7 @@ try {
...
@@ -290,7 +290,7 @@ try {
err
=
setDrill
({
job
:
job
})
err
=
setDrill
({
job
:
job
})
if
(
err
){
throw
err
}
if
(
err
){
throw
err
}
script_info
({
result_severity
:
"format create profile"
})
script_info
({
msg
:
"format 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层
...
@@ -301,7 +301,7 @@ try {
...
@@ -301,7 +301,7 @@ try {
GEN
.
openStep
({
job
:
job
,
name
:
tmp_step
})
GEN
.
openStep
({
job
:
job
,
name
:
tmp_step
})
var
now_profile
=
GEN
.
getProfile
({
job
:
job
,
step
:
tmp_step
})
var
now_profile
=
GEN
.
getProfile
({
job
:
job
,
step
:
tmp_step
})
if
(
now_profile
.
match
(
/
\n
/ig
).
length
==
1
){
// 如果没有profile
if
(
now_profile
.
match
(
/
\n
/ig
).
length
==
1
){
// 如果没有profile
if
(
profileRule
[
0
]
==
"outline"
)
{
if
(
profileRule
[
0
]
==
"outline"
&&
/1352/ig
.
test
(
PAR
.
customer
)
)
{
GEN
.
workLayer
({
name
:
'outline'
,
display_number
:
2
,
clear_before
:
'yes'
})
GEN
.
workLayer
({
name
:
'outline'
,
display_number
:
2
,
clear_before
:
'yes'
})
GEN
.
selAllFeat
()
GEN
.
selAllFeat
()
if
(
GEN
.
getSelectCount
()
>
0
)
{
if
(
GEN
.
getSelectCount
()
>
0
)
{
...
@@ -317,7 +317,7 @@ try {
...
@@ -317,7 +317,7 @@ 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
({
result_severity
:
"创建profile失败"
})
script_info
({
msg
:
"创建profile失败"
})
throw
"创建profile失败"
throw
"创建profile失败"
}
}
}
}
...
@@ -336,7 +336,6 @@ try {
...
@@ -336,7 +336,6 @@ try {
$
.
QDfm
.
updateRow
({
$
.
QDfm
.
updateRow
({
table
:
"pdm_aimdfm_task"
,
table
:
"pdm_aimdfm_task"
,
data
:
{
data
:
{
result_severity
:
"format ok"
,
progress
:
60
progress
:
60
},
},
where
:
{
id
:
$
.
task_id
}
where
:
{
id
:
$
.
task_id
}
...
@@ -669,7 +668,6 @@ function mergeLaser(props){ // 合并钻孔
...
@@ -669,7 +668,6 @@ function mergeLaser(props){ // 合并钻孔
function createOutline(props){
function createOutline(props){
var profileRule = props.profileRule
var profileRule = props.profileRule
console.log("
----
profileRule
------->
:
" + _.toString(profileRule));
console.log("
----
profileRule
------->
:
" + _.toString(profileRule));
var job = props.job
var job = props.job
var step = props.step
var step = props.step
var matrix = GEN.getMatrix({job:job})
var matrix = GEN.getMatrix({job:job})
...
@@ -683,16 +681,25 @@ function createOutline(props){
...
@@ -683,16 +681,25 @@ function createOutline(props){
})
})
return flag
return flag
})
})
console.log("
----
outlines
------->
:
" + _.toString(outlines));
var drill_layer = Object.keys(matrix).filter(function(v){return matrix[v].layer_type=="
drill
" && matrix[v].context == "
board
"})
var drill_layer = Object.keys(matrix).filter(function(v){return matrix[v].layer_type=="
drill
" && matrix[v].context == "
board
"})
var tmp = "
drill_all
";
var tmp = "
drill_all
";
if(GEN.isLayerExists({job:job, layer:tmp})) { GEN.deleteLayer({job:job, layer:
tmp
})}
if(GEN.isLayerExists({job:job, layer:tmp})) { GEN.deleteLayer({job:job, layer:
[tmp]
})}
GEN.openStep({job:job, name:step})
drill_layer.forEach(function(d_layer) {
GEN.
affectedLayer({affected:'yes',layer:drill_layer
})
GEN.
workLayer({name:d_layer,display_number:2,clear_before:'yes'
})
GEN.selCopyOther({dest:'layer_name',target_layer:tmp,invert:'no',dx:0,dy:0,size:0})
GEN.selCopyOther({dest:'layer_name',target_layer:tmp,invert:'no',dx:0,dy:0,size:0})
GEN.affectedLayer({affected:'no',mode:'all'})
})
GEN.closeStep()
GEN.closeStep()
if (outlines.indexOf("
outline
") >= 0) {
outlines = outlines.reduce(function(a,b){
if(b != "
outline
") {
a.push(b)
}
return a
}, ["
outline
"])
}
var tmp_outline
var tmp_outline
if(outlines.length){
if(outlines.length){
if( outlines.length){
if( outlines.length){
...
...
ats/topcam/ATS_AIM_
data_input
.js
→
ats/topcam/ATS_AIM_
input_data
.js
View file @
1218d449
...
@@ -89,7 +89,7 @@ var resultData = [];
...
@@ -89,7 +89,7 @@ var resultData = [];
var
import_info
=
[];
var
import_info
=
[];
var
inputState
=
[];
var
inputState
=
[];
try
{
try
{
script_info
({
result_severity
:
"import start"
})
script_info
({
msg
:
"import start"
})
var
par
=
PAR
;
var
par
=
PAR
;
// var db_path = db.query("",function(q){
// var db_path = db.query("",function(q){
// return q.selectValue({
// return q.selectValue({
...
@@ -164,8 +164,8 @@ try {
...
@@ -164,8 +164,8 @@ try {
}
else
{
}
else
{
jobFiles
=
fs
.
listDir
(
jobFile
[
0
].
path
)
jobFiles
=
fs
.
listDir
(
jobFile
[
0
].
path
)
}
}
GEN
.
COM
(
"config_edit,name=iol_gbr_polygon_break,value=1,mode=user"
)
//
GEN.COM("config_edit,name=iol_gbr_polygon_break,value=1,mode=user")
GEN
.
COM
(
"config_edit,name=iol_fix_ill_polygon,value=yes,mode=user"
)
//
GEN.COM("config_edit,name=iol_fix_ill_polygon,value=yes,mode=user")
// 将jobFile下的zip解压
// 将jobFile下的zip解压
decompression
(
jobFile
[
0
].
path
,
[])
decompression
(
jobFile
[
0
].
path
,
[])
...
@@ -198,7 +198,7 @@ try {
...
@@ -198,7 +198,7 @@ try {
// 分析料号文件 得到料号导入信息 导入类型
// 分析料号文件 得到料号导入信息 导入类型
var
jobInfo
=
analyJobFiles
({
jobFiles
:
jobFiles
.
filter
(
function
(
v
){
return
v
.
isFile
}),
custCfg
:
custCfg
,
config
:
config
,
job
:
job
})
var
jobInfo
=
analyJobFiles
({
jobFiles
:
jobFiles
.
filter
(
function
(
v
){
return
v
.
isFile
}),
custCfg
:
custCfg
,
config
:
config
,
job
:
job
})
if
(
jobInfo
.
data
.
length
==
0
){
if
(
jobInfo
.
data
.
length
==
0
){
script_info
({
result_severity
:
"file error"
})
script_info
({
msg
:
"file error"
})
throw
"file error"
}
throw
"file error"
}
var
importOk
=
false
;
// 是否成功导入
var
importOk
=
false
;
// 是否成功导入
...
@@ -301,7 +301,7 @@ try {
...
@@ -301,7 +301,7 @@ try {
GEN
.
COM
(
"input_manual"
)
GEN
.
COM
(
"input_manual"
)
importOk
=
true
importOk
=
true
}
}
if
(
!
importOk
){
script_info
({
result_severity
:
"import error"
});
throw
"import error"
}
if
(
!
importOk
){
script_info
({
msg
:
"import error"
});
throw
"import error"
}
script_info
({
progress
:
20
})
script_info
({
progress
:
20
})
reNameStep
(
job
)
reNameStep
(
job
)
if
(
/2171/
.
test
(
par
.
customer
)){
if
(
/2171/
.
test
(
par
.
customer
)){
...
@@ -338,7 +338,7 @@ try {
...
@@ -338,7 +338,7 @@ try {
}
}
})
})
}
}
GEN
.
closeStep
()
GEN
.
checkInout
({
job
:
job
,
mode
:
"out"
})
// 结束保存料号 关闭料号
GEN
.
checkInout
({
job
:
job
,
mode
:
"out"
})
// 结束保存料号 关闭料号
GEN
.
saveJob
({
job
:
job
});
GEN
.
saveJob
({
job
:
job
});
GEN
.
checkInout
({
job
:
job
,
mode
:
"in"
})
GEN
.
checkInout
({
job
:
job
,
mode
:
"in"
})
...
@@ -356,7 +356,7 @@ try {
...
@@ -356,7 +356,7 @@ try {
import_html
+=
"</table>"
import_html
+=
"</table>"
// name type date user
// name type date user
resultData
.
push
({
type
:
"info"
,
title
:
"导入资料列表"
,
detail
:
[{
desc
:
import_html
}]
})
resultData
.
push
({
type
:
"info"
,
title
:
"导入资料列表"
,
detail
:
[{
desc
:
import_html
}]
})
script_info
({
result_severity
:
"import ok"
})
script_info
({
msg
:
"import ok"
})
if
(
mode
===
"aimdfm"
)
{
if
(
mode
===
"aimdfm"
)
{
$
.
QDfm
.
updateRow
({
$
.
QDfm
.
updateRow
({
table
:
"pdm_aimdfm_task"
,
table
:
"pdm_aimdfm_task"
,
...
@@ -395,7 +395,6 @@ function delSameJob(props){
...
@@ -395,7 +395,6 @@ function delSameJob(props){
var
job
=
props
.
job
var
job
=
props
.
job
var
delSame
=
props
.
delSame
var
delSame
=
props
.
delSame
console
.
log
(
"======================>delsame:"
+
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
})
}
...
@@ -535,6 +534,7 @@ function script_info(props){ // result_severity progress
...
@@ -535,6 +534,7 @@ function script_info(props){ // result_severity progress
}
}
}
}
function
decompression
(
path
,
zips
)
{
function
decompression
(
path
,
zips
)
{
var
files
=
fs
.
listDir
(
path
)
var
files
=
fs
.
listDir
(
path
)
var
count
=
0
;
var
count
=
0
;
...
...
ats/topcam/config_ats.js
View file @
1218d449
...
@@ -679,6 +679,7 @@
...
@@ -679,6 +679,7 @@
GEN
.
COM
(
"tools_set,layer="
+
layer
+
",thickness=0,user_params=,slots=by_length"
)
GEN
.
COM
(
"tools_set,layer="
+
layer
+
",thickness=0,user_params=,slots=by_length"
)
}
}
})
})
GEN
.
saveJob
({
job
:
job
});
}
}
}
}
]
]
...
@@ -964,7 +965,6 @@
...
@@ -964,7 +965,6 @@
],
],
"mergerule"
:
{
"mergerule"
:
{
profile
:[
"silk_top"
],
profile
:[
"silk_top"
],
drill
:[
"(
\\
d+)-(
\\
d+)
\\
.drl$"
,
"
\\
.d(
\\
d+)$"
],
laser
:
{
laser
:
{
tl_name
:
"drill($1)-($2)"
,
tl_name
:
"drill($1)-($2)"
,
regs
:
[
"(
\\
d+)-(
\\
d+)
\\
.drl$"
]
regs
:
[
"(
\\
d+)-(
\\
d+)
\\
.drl$"
]
...
...
public_script/scotttest.js
View file @
1218d449
...
@@ -4,16 +4,22 @@ DESCRIPTION: ;
...
@@ -4,16 +4,22 @@ DESCRIPTION: ;
PARAMETER:
PARAMETER:
[
[
{
{
name : 'step',
name : 'ring_size',
title : '操作step',
title : 'ring大小',
type : 'LineEdit',
type : 'IntLineEdit',
property : {tool_tip : '操作step,默认是net'},
property : {tool_tip : 'ring大小'},
},
{
name : 'line_size',
title : '优化线径值',
type : 'IntLineEdit',
property : {tool_tip : '优化线径值'},
},
},
{
{
name : '
cutting_marign
',
name : '
step_fliter
',
title : '
切除profile外数值
',
title : '
Step过滤
',
type : 'LineEdit',
type : 'LineEdit',
property : {tool_tip : '
切除profile外数值,默认是0.2mm
'},
property : {tool_tip : '
unit
'},
},
},
{
{
name : 'auto_save',
name : 'auto_save',
...
@@ -30,16 +36,16 @@ PARAMETER:
...
@@ -30,16 +36,16 @@ PARAMETER:
]
]
VERSION_HISTORY:
VERSION_HISTORY:
V1.00 2020-04-2
0
Scott Sun
V1.00 2020-04-2
8
Scott Sun
1.新版本
1.新版本
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>
切除值
</p>
<p>
配置
</p>
<br>
<br>
<font size="3" color="#003DB2"><p>注意事项</p></font>
<font size="3" color="#003DB2"><p>注意事项</p></font>
<p> 无 </p>
<p> 无 </p>
...
@@ -48,7 +54,10 @@ PARAMETER:
...
@@ -48,7 +54,10 @@ PARAMETER:
*/
*/
//////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////
console
.
log
(
"==============================>删除板外"
);
console
.
log
(
"==============================>JTG_INN_neg_isolation_pad_optimization_aim"
);
/* question
?
*/
// 引入模块 包
// 引入模块 包
var
$
=
require
(
'topcam.scriptfunc'
).
argv
();
var
$
=
require
(
'topcam.scriptfunc'
).
argv
();
var
fs
=
require
(
'fs'
);
var
fs
=
require
(
'fs'
);
...
@@ -60,7 +69,7 @@ var GEN = $.gen;
...
@@ -60,7 +69,7 @@ var GEN = $.gen;
var
GUI
=
$
.
gui
||
{};
var
GUI
=
$
.
gui
||
{};
var
Job
=
$
.
job
||
$
.
job_name
;
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
)
{
if
(
$
.
par
)
{
PAR
=
$
.
par
PAR
=
$
.
par
...
@@ -87,108 +96,139 @@ var resultData = [];
...
@@ -87,108 +96,139 @@ var resultData = [];
try
{
try
{
var
par
=
PAR
;
var
par
=
PAR
;
var
default_par
=
{
var
default_par
=
{
// par默认参数?
step
:
"net"
,
step_fliter
:
"unit"
,
cutting_marign
:
"0.2mm"
,
units
:
"mm"
,
auto_save
:
"No"
,
auto_save
:
"no"
,
ring_size
:
200
,
line_size
:
200
}
}
for
(
var
key
in
default_par
){
// 设置默认属性
for
(
var
key
in
default_par
){
// 设置默认属性
if
(
!
par
.
hasOwnProperty
(
key
)
||
par
[
key
]
==
""
){
if
(
!
par
.
hasOwnProperty
(
key
)
||
par
[
key
]
==
""
){
par
[
key
]
=
default_par
[
key
]
par
[
key
]
=
default_par
[
key
]
}
}
}
}
par
.
cutting_marign
=
parseFloat
(
par
.
cutting_marign
)
var
par_props
=
[
"ring_size"
,
"line_size"
]
// par的必填参数
if
(
!
/^
(([^
0
][
0-9
]
+|0
)\.([
0-9
]{1,2})
$
)
|^
([^
0
][
0-9
]
+|0
)
$/ig
.
test
(
par
.
cutting_marign
)){
throw
"cutting_marign failed"
}
par_props
.
forEach
(
function
(
v
){
var
cutting_marign_symbol
=
"r"
+
String
(
par
.
cutting_marign
*
1000
)
if
(
par
[
v
]
==
""
){
throw
"par props "
+
v
+
" err"
}
})
if
(
_
.
isEmpty
(
Job
)){
throw
"参数Job不存在"
}
if
(
_
.
isEmpty
(
Job
)){
throw
"参数Job不存在"
}
var
job
=
"08ha0010hq0a0"
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
(
!
GEN
.
isJobOpen
({
job
:
job
})){
GEN
.
openJob
({
job
:
job
})
}
if
(
mode
==
"aimdfm"
){
if
(
mode
==
"aimdfm"
){
if
(
GEN
.
checkInout
({
job
:
job
,
mode
:
"test"
})
!=
0
){
throw
"the job check"
}
if
(
GEN
.
checkInout
({
job
:
job
,
mode
:
"test"
})
!=
0
){
throw
"the job check"
}
GEN
.
checkInout
({
job
:
job
,
mode
:
"out"
});
GEN
.
checkInout
({
job
:
job
,
mode
:
"out"
});
}
}
// 通过matrix获取board层
// 脚本开始
var
stepList
=
GEN
.
getStepList
({
job
:
job
})
if
(
par
.
step_fliter
!=
""
){
var
step_reg
=
new
RegExp
(
par
.
step_fliter
)
stepList
=
stepList
.
filter
(
function
(
v
){
return
step_reg
.
test
(
v
)})
}
// 通过matrix中选择属性为negative&power_ground&inner的内层负片层
var
matrix
=
GEN
.
getMatrix
({
job
:
job
})
var
matrix
=
GEN
.
getMatrix
({
job
:
job
})
var
board_layers
=
Object
.
keys
(
matrix
).
reduce
(
function
(
a
,
b
){
var
n_layers
=
Object
.
keys
(
matrix
).
sort
(
function
(
a
,
b
){
return
matrix
[
a
].
row
-
matrix
[
b
].
row
})
if
(
matrix
[
b
].
context
==
"board"
){
.
filter
(
function
(
key
){
a
.
push
(
b
)
var
val
=
matrix
[
key
]
}
return
val
.
layer_type
==
"power_ground"
&&
val
.
polarity
==
"negative"
&&
val
.
side
==
"inner"
&&
val
.
context
==
"board"
return
a
},[])
var
all_layers
=
Object
.
keys
(
matrix
)
var
outline_layer
=
[
"gko"
,
"gm1"
,
"ol"
]
outline_layer
=
outline_layer
.
filter
(
function
(
v
){
return
all_layers
.
indexOf
(
v
)
>=
0
})
})
// 影响board层
if
(
n_layers
.
length
==
0
){
throw
"can not find power_ground negative layer"
}
var
steplist
=
GEN
.
getStepList
({
job
:
job
})
var
tmp1
=
"tmp_1"
,
tmp2
=
"tmp_2"
steplist
=
steplist
.
filter
(
function
(
v
){
var
tmp_layers
=
[
tmp1
,
tmp2
];
var
tmpreg
=
new
RegExp
(
par
.
step
,
"ig"
)
stepList
.
forEach
(
function
(
step
){
return
tmpreg
.
test
(
v
)
GEN
.
openStep
({
job
:
job
,
name
:
step
})
})
GEN
.
units
({
type
:
par
.
units
})
steplist
.
forEach
(
function
(
step
){
GEN
.
affectedLayer
({
affected
:
'no'
,
mode
:
'all'
})
GEN
.
openStep
({
job
:
job
,
name
:
step
})
GEN
.
units
({
type
:
"mm"
})
var
outline_tmp
=
"outline_tmp"
// 创建outline参考层
if
(
GEN
.
isLayerExists
({
job
:
job
,
layer
:
outline_tmp
})){
GEN
.
deleteLayer
({
job
:
job
,
layer
:
outline_tmp
})
}
GEN
.
COM
(
"profile_to_rout,layer="
+
outline_tmp
+
",width=1"
)
GEN
.
clearLayers
()
GEN
.
clearLayers
()
// 切除profile以外0.2mm(cutting_marign)物件
n_layers
.
forEach
(
function
(
layer
){
board_layers
.
forEach
(
function
(
layer
){
// 逐层制作,过滤选出 rect*,r*,s*,oval 属性的物件并移动到辅助层1;
if
(
outline_layer
.
indexOf
(
layer
)
<
0
){
tmp_layers
.
forEach
(
function
(
v
){
GEN
.
affectedLayer
({
affected
:
"no"
,
mode
:
"all"
})
if
(
GEN
.
isLayerExists
({
job
:
job
,
layer
:
v
})){
GEN
.
deleteLayer
({
job
:
job
,
layer
:
v
})}
// GEN.workLayer({name:layer,display_number:1,clear_before:'yes'});
GEN
.
createLayer
({
job
:
job
,
layer
:
v
})
// GEN.clipArea({layers_mode:'affected_layers',area:'profile',inout:'outside',margin:0,contour_cut:'no'});
})
GEN
.
workLayer
({
name
:
layer
,
display_number
:
2
,
clear_before
:
'yes'
})
GEN
.
workLayer
({
name
:
layer
,
display_number
:
2
,
clear_before
:
'yes'
})
GEN
.
selectByFilter
({
profile
:
"out"
})
GEN
.
selectByFilter
({
include_syms
:
"rect*;r*;s*;oval*"
})
// GEN.selRefFeat({layers:outline_tmp,use:'filter',mode:'include'});
if
(
GEN
.
getSelectCount
()
>
0
){
if
(
GEN
.
getSelectCount
()
>
0
){
GEN
.
selDelete
()}
GEN
.
selMoveOther
({
target_layer
:
tmp1
,
invert
:
'no'
,
dx
:
0
,
dy
:
0
,
size
:
0
})
GEN
.
COM
(
"clip_area_strt"
)
// 复制辅助层1至辅助层2,将辅助层1上的物件修改为r1.2;
GEN
.
COM
(
"clip_area_end,layers_mode=affected_layers,layer=,area=profile,area_type=rectangle,inout=outside,contour_cut=yes,margin=0,feat_types=line
\
;pad
\
;surface
\
;arc
\
;text"
)
GEN
.
workLayer
({
name
:
tmp1
,
display_number
:
2
,
clear_before
:
'yes'
})
GEN
.
selAllFeat
()
GEN
.
selCopyOther
({
dest
:
'layer_name'
,
target_layer
:
tmp2
,
invert
:
'no'
,
dx
:
0
,
dy
:
0
,
size
:
0
})
GEN
.
selChangeSym
({
symbol
:
"r1.2"
})
// 使用参考选择reference select命令touch辅助层1,筛选出drl层上有隔离焊盘的孔;
GEN
.
workLayer
({
name
:
"drl"
,
display_number
:
2
,
clear_before
:
'yes'
})
if
(
!
GEN
.
isLayerExists
({
job
:
job
,
layer
:
"pth"
})){
GEN
.
selectByFilter
({
attribute
:[{
attribute
:
'.drill'
,
option
:
'plated'
}]})
if
(
GEN
.
getSelectCount
()
>
0
)
{
GEN
.
selCopyOther
({
dest
:
'layer_name'
,
target_layer
:
'pth'
,
invert
:
'no'
,
dx
:
0
,
dy
:
0
,
size
:
0
})}
}
if
(
!
GEN
.
isLayerExists
({
job
:
job
,
layer
:
"np"
})){
GEN
.
selectByFilter
({
attribute
:[{
attribute
:
'.drill'
,
option
:
'non_plated'
}]})
if
(
GEN
.
getSelectCount
()
>
0
)
{
GEN
.
selCopyOther
({
dest
:
'layer_name'
,
target_layer
:
'np'
,
invert
:
'no'
,
dx
:
0
,
dy
:
0
,
size
:
0
})}
}
// var outline_ref = 'ol_tl_tmp';
if
(
GEN
.
isLayerExists
({
job
:
job
,
layer
:
"pth"
})){
// var tmp_work_layer = '_tmp_work_layer';
GEN
.
workLayer
({
name
:
"pth"
,
display_number
:
2
,
clear_before
:
'yes'
})
// if(GEN.isLayerExists({job:job,layer:tmp_work_layer})){
GEN
.
selRefFeat
({
layers
:
tmp1
,
use
:
'filter'
,
mode
:
'touch'
})
// GEN.deleteLayer({job:job,layer:[tmp_work_layer],step:step})
// copy这些选中的孔到辅助层2,resize设置为400um; par.ring_size
// }
if
(
GEN
.
getSelectCount
()
>
0
){
// if(GEN.isLayerExists({job:job,layer:outline_ref})){
GEN
.
selCopyOther
({
dest
:
'layer_name'
,
target_layer
:
tmp2
,
invert
:
'no'
,
dx
:
0
,
dy
:
0
,
size
:
par
.
ring_size
})
// GEN.deleteLayer({job:job,layer:[outline_ref],step:step})
}
// }
// GEN.createLayer({job:job,layer:tmp_work_layer,conext:'misc',type:'document',delete_exists:"yes"})
// GEN.createLayer({job:job,layer:outline_ref,conext:'misc',type:'document',delete_exists:"yes"})
// GEN.workLayer({name:outline_tmp,display_number:2,clear_before:'yes'})
// GEN.selCopyOther({dest:'layer_name',target_layer:outline_ref,invert:'no',dx:0,dy:0,size:0})
// GEN.affectedLayer({affected:'yes',layer:[outline_ref],clear_before:'yes'});
// GEN.COM('sel_resize',{size:200,corner_ctl:'no'});
// GEN.workLayer({name:layer,display_number:2,clear_before:'yes'})
// GEN.selRefFeat({layers:outline_ref,use:'filter',mode:'cover'});
// if ( GEN.getSelectCount() > 0 ) {
// GEN.selCopyOther({dest:'layer_name',target_layer:tmp_work_layer,invert:'no',dx:0,dy:0,size:0});
// GEN.affectedLayer({affected:'yes',mode:'single',layer:tmp_work_layer,clear_before:'yes'});
// GEN.COM('sel_all_feat');
// GEN.selChangeSym({symbol:'r1'});
// GEN.affectedLayer({affected:'yes',mode:'single',layer:outline_ref,clear_before:'yes'});
// GEN.COM('sel_all_feat');
// GEN.selChangeSym({symbol:'r2'});
// GEN.affectedLayer({affected:'yes',mode:'single',layer:tmp_work_layer,clear_before:'yes'});
// GEN.selRefFeat({layers:outline_ref,use:'filter',mode:'cover'});
// GEN.selReverse();
// if ( GEN.getSelectCount() > 0 ){GEN.selDelete() };
// GEN.affectedLayer({affected:'yes',mode:'single',layer:layer,clear_before:'yes'});
// GEN.selRefFeat({layers:tmp_work_layer,use:'filter',mode:'include'});
// if ( GEN.getSelectCount() > 0 ){GEN.selDelete() };
// }
// GEN.deleteLayer({job:job,layer:[outline_ref,tmp_work_layer]});
}
}
if
(
GEN
.
isLayerExists
({
job
:
job
,
layer
:
"np"
})){
GEN
.
workLayer
({
name
:
"np"
,
display_number
:
2
,
clear_before
:
'yes'
})
GEN
.
selRefFeat
({
layers
:
tmp1
,
use
:
'filter'
,
mode
:
'touch'
})
// copy这些选中的孔到辅助层2,resize设置为400um; par.ring_size
if
(
GEN
.
getSelectCount
()
>
0
){
GEN
.
selCopyOther
({
dest
:
'layer_name'
,
target_layer
:
tmp2
,
invert
:
'no'
,
dx
:
0
,
dy
:
0
,
size
:
par
.
ring_size
+
50
})
}
}
GEN
.
workLayer
({
name
:
tmp2
,
display_number
:
2
,
clear_before
:
'yes'
})
var
del_layer
=
tmp2
+
"+++"
GEN
.
runSingleDfm
({
chklist
:
'valor_dfm_nfpr'
,
params
:
{
pp_layer
:
tmp2
,
pp_delete
:
'Duplicate'
,
pp_work
:
'Features'
,
pp_drill
:
'PTH
\
;NPTH
\
;Via'
,
pp_remove_mark
:
'Remove'
}
})
GEN
.
deleteLayer
({
job
:
job
,
layer
:
del_layer
})
// 将辅助层2上的物件move至对应的内层负片层
GEN
.
workLayer
({
name
:
tmp2
,
display_number
:
2
,
clear_before
:
'yes'
})
GEN
.
selAllFeat
()
GEN
.
selCopyOther
({
dest
:
'layer_name'
,
target_layer
:
layer
,
invert
:
'no'
,
dx
:
0
,
dy
:
0
,
size
:
0
})
}
})
})
})
GEN
.
deleteLayer
({
job
:
job
,
layer
:
tmp_layers
})
// 逐层分析内层负片层的物件,如存在小于200um的线,则将线宽优化至200um。 par.line_size
stepList
.
forEach
(
function
(
step
){
GEN
.
openStep
({
job
:
job
,
name
:
step
})
GEN
.
affectedLayer
({
affected
:
'no'
,
mode
:
'all'
})
GEN
.
affectedLayer
({
affected
:
'no'
,
mode
:
'all'
})
GEN
.
deleteLayer
({
job
:
job
,
layer
:[
outline_tmp
]})
GEN
.
clearLayers
()
GEN
.
selClearFeature
()
n_layers
.
forEach
(
function
(
layer
){
GEN
.
workLayer
({
name
:
layer
,
display_number
:
2
,
clear_before
:
'yes'
})
var
syms
=
GEN
.
getLayerSymsHist
({
job
:
job
,
step
:
step
,
layer
:
layer
})
var
change_syms
=
[]
for
(
var
key
in
syms
){
var
v
=
syms
[
key
]
if
(
v
.
size
&&
v
.
size
<
par
.
line_size
){
change_syms
.
push
(
key
)
}
}
GEN
.
selectByFilter
({
feat_types
:
"line"
,
include_syms
:
change_syms
.
join
(
";"
)})
if
(
GEN
.
getSelectCount
()
>
0
){
GEN
.
selDelete
()}
})
})
GEN
.
closeStep
()
})
GEN
.
deleteLayer
({
job
:
job
,
layer
:
tmp_layers
})
// 保存
// 保存
if
(
/yes/ig
.
test
(
par
.
auto_save
)){
if
(
/yes/ig
.
test
(
par
.
auto_save
)){
...
@@ -199,6 +239,7 @@ try {
...
@@ -199,6 +239,7 @@ try {
}
else
{
}
else
{
GEN
.
checkInout
({
job
:
job
,
mode
:
"in"
})
GEN
.
checkInout
({
job
:
job
,
mode
:
"in"
})
}
}
console
.
log
(
"======================== JTG_INN_neg_isolation_pad_optimization_aim end"
);
if
(
mode
===
"aimdfm"
)
{
if
(
mode
===
"aimdfm"
)
{
$
.
QDfm
.
updateRow
({
$
.
QDfm
.
updateRow
({
table
:
"pdm_aimdfm_task"
,
table
:
"pdm_aimdfm_task"
,
...
@@ -231,5 +272,3 @@ try {
...
@@ -231,5 +272,3 @@ try {
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"
;
}
}
\ No newline at end of file
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