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
b75a5031
Commit
b75a5031
authored
Dec 31, 2021
by
Scott Sun
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' of
http://gitlab.topibd.net/scott.sun/scott
parents
b15c9eb9
56f01551
Changes
9
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
379 additions
and
678 deletions
+379
-678
gui.js
GUI测试/gui.js
+121
-301
gui_test.js
GUI测试/gui_test.js
+30
-244
test.js
GUI测试/test.js
+20
-2
x.js
GUI测试/x.js
+62
-111
x1.js
GUI测试/x1.js
+84
-0
ATS_AIM_customer_data_analysis.js
ats/topcam/ATS_AIM_customer_data_analysis.js
+15
-15
ATS_AIM_data_input.js
ats/topcam/ATS_AIM_data_input.js
+1
-1
creat_cover.pl
public_script/字符优化/creat_cover.pl
+0
-0
template.js
template.js
+46
-4
No files found.
GUI测试/gui.js
View file @
b75a5031
/*
第一步. 逻辑检查,初始化,选取出需要测的steplist
第二步. 将要测net的step对应关系整理好 将array array_c copy到 _tmp 删除排版 打散关系 array_net 删除排版 打散关系
第三步. doNet 里所有step pgn极性翻转
第四步. doNet.orig foNet.net 对比测net
end: 删除辅助层 临时step
*/
var
plugin
=
require
(
'topsin.gengui'
);
var
gui
=
plugin
.
newGui
(
plugin
.
__dirname
);
var
item_list
=
[{
name
:
1
,
text
:
1
}]
var
tabledata
=
[{
name
:
"aa"
,
age
:
12
}]
var
$
=
require
(
'topcam.scriptfunc'
).
argv
();
var
_
=
require
(
'lodash'
);
var
JOB
=
$
.
job_name
;
var
GEN
=
$
.
gen
;
var
ikm
=
$
.
ikm
;
var
GUI
=
$
.
GUI
;
try
{
var
r
=
GUI
.
msgBox
(
"mo"
,
"info"
,
"are you ok?"
,
[
"ok"
,
"cancel"
]);
// GUI.msg(r); // ok | cancel
// r = GUI.confirm("are you ok?", ["yes", "no"], "question");
// GUI.msg(r); // yes | no
// var selected = GUI.selectFromTreeview({
// title: "test",
// size: [600, 400],
// selectmode: "single",
// columns: [
// {
// "name": "id",
// "display": "ID",
// "displayRole": "$id",
// "search": true,
// "resizeMode": "ResizeToContents"
// },
// {
// "name": "name",
// "display": "NAME",
// "displayRole": "$name",
// "search": true,
// "resizeMode": "ResizeToContents"
// }
// ],
// data: [
// {
// "id": 1,
// "name": "mo"
// },
// {
// "id": 2,
// "name": "ha"
// }
// ],
// returncols: ["id"]
// });
// msg(selected); // [{id:1}]
// r = GUI.selectFile("choose something", "*", true, "file", "/home/abby/fast_io");
// GUI.msg(r); // ["路径"]
// var xx = [
// {"mo": "too young too simple"},
// {"ha": "sometimes naive!"},
// {"elder": "+1s"}
// ];
// r = GUI.selectSingle({
// "title": "select your favar",
// "list": xx,
// "default": "",
// "columns": 2,
// "gen":{}
// });
// GUI.msg(r) // 'ha'
// r = GUI.selectMultiple({
// "title": "select your favar",
// "list": xx,
// "defaultvalue": ["mo"],
// "columns": 2,
// "gen": {}
// });
// GUI.msg(r) // ['ha','mo']
// r = GUI.selectFromTable({
// title: "select from table example",
// multiple: true,
// list: [
// {
// "job": "too young",
// "name": "elder"
// },
// {
// "job": "too simple",
// "name": "elder"
// },
// {
// "job": "sometimes",
// "name": "elder"
// },
// {
// "job": "naive",
// "name": "elder"
// }
// ],
// gen: function() { function PAUSE() { return true; }}
// });
// GUI.msg(r) // [{job":"sometimes","name":"elder",("job":"naive","name":"elder"]
// r = GUI.snapScreen({
// file: "xxx",
// dir: "/tmp",
// type: "png",
// overwrite: true
// });
// GUI.msg(r) // /tmp/xxx.png
// r = GUI.imageViewer({
// title: "screenshot",
// file: "/tmp/xxx.png",
// defaultsize: [800, 600]
// });
// GUI.msg(r)
// r = GUI.inputBox({
// title: "input box example",
// value: "are you ok?"
// });
// GUI.msg(r) // are you ok?
// r = GUI.showForm({
// title: "form example",
// ui: {
r
=
gui
.
showForm
({
title
:
"注册账号"
,
size
:
[
600
,
400
],
// ui: function(self){
// return [{
// type: 'ScrollArea',
// property: {
widget_resizable: true, frame_shape: 'NoFrame', align: 'Top'
},
// property: {
widget_resizable: true,frame_shape: 'NoFrame',align: 'Top'
},
// child: {
// type: 'VBoxLayout',
// property: { margin: 2, spacing: 20, align: 'Top' },
// pack: { stretch: 0 },
// child: [
// {
// type: 'label'
// },
// {
// type: 'label',
// property: { text: ("Partnumber Info") }
// },
// {
// type: "FormGridLayout",
// property: { columns: 4, label_alignment: 'Top | Right', margin: 10, spacing: 20 },
// pack: { stretch: 0 },
// child: [
// {
// name: 'partnumber',
// type: 'LineEdit',
// pack: { label: ('Partnumber') },
// property: { enabled: true }
// },
// {
// name: 'attrs.iscross',
// type: 'ComboBox',
// property: { enabled: true, item_list: [] },
// pack: { label: ('Is Cross') }
// property: {margin: 2,spacing: 20,align: 'Top'},
// pack: {stretch: 0},
// child: [{
// type: "FormGridLayout",
// property: {columns: 1,label_alignment: 'Top | Right',margin: 10,spacing: 20},
// pack: {stretch: 0},
// child: [
// {
// name: 'table',
// type: 'TableView',
// property: {},
// initCallback: function (obj, self) {
// obj.setDataKeyList(["name", "age"]);
// obj.setHeaderItem(
// [
// {},
// { name: 'name', display: 'name', resizeMode: 'ResizeToContents', displayRole: '$name' },
// { name: 'age', display: 'age', resizeMode: 'ResizeToContents', displayRole: '$age' },
// ]
// );
// },
// {
// name: 'attrs.pthick',
// type: 'DoubleLineEdit',
// pack: { label: ('Part thickness') },
// property: { enabled: true }
// setter: function (obj, value, self) {
// if (value != null) {
// obj.loadData(value);
// } else {
// obj.clearData();
// }
// },
// {
// name: 'attrs.producttype',
// type: 'ComboBox',
// property: { enabled: true, item_list: [] },
// pack: { label: ('Product type') }
// },
// {
// name: 'attrs.weft_direction',
// type: 'ComboBox',
// property: { enabled: true, item_list: [] },
// pack: { label: ('Longitude and latitude') }
// },
// {
// name: 'attrs.structure_code',
// type: 'LineEdit',
// pack: { label: ('Structure') },
// property: { enabled: true }
// },
// {
// name: 'attrs.array_num_on_panel_y',
// type: 'DoubleLineEdit',
// pack: { label: ('Long edge typesetting') },
// property: { enabled: true }
// },
// {
// name: 'attrs.array_num_on_panel_x',
// type: 'DoubleLineEdit',
// pack: { label: ('Short edge typesetting') },
// property: { enabled: true }
// },
// {
// name: 'attrs.pre_partnumber',
// type: 'Chips',
// pack: { label: ('Front partnumber'), column_span: 2 },
// property: { enabled: true }
// },
// {
// name: 'attrs.erp_job_remark',
// type: 'PlainTextEdit',
// property: {
// enabled: true,
// min_row_count: 1,
// vertical_scroll_bar_policy: 'ScrollBarAlwaysOff'
// },
// pack: { label: ('ERP Job Remark'), column_span: 2 },
// getter: function (obj, self) {
// return obj.selectedRowDataMaps();
// }
// ]
// },
// {
// type: 'stretch'
// }
// ]
// }
// },
// data: {},
// runnow: true,
// includehide: false,
// gen: null
// });
// GUI.msg(r) // obj
// r = GUI.selectLayer({
// title: "+1s",
// filter: ".*", // regular expression
// selectmode: "single", // single, multiple
// context: "all", // all, board, misc
// layertype: "inner", // default type of layertypelist
// defaultsize: [600, 400], // window size
// layermatrix: GEN.getMatrix({job:JOB}),
// layertypelist: [
// {name: "signal", display_name: "signal", filter: function(x) { return x["layer_type"] === "signal"; }},
// {name: "outer", display_name: "Outer", filter: function(x) { return x["layer_type"] === "outer"; }}
// ],
// gen: null
// });
// GUI.msg(r) // [{name:"layer1"}]
// r = GUI.lockUnlockLayer({
// "title": "+1s",
// "layermatrix": {
// "layer1": {
// "row": 1,
// "name": "layer1"
// },
// "layer2": {
// "row": 2,
// "name": "layer2"
// }
// ]
// }]
// }
// }
// });
// GUI.msg(r) // {"layer1":true,"layer2":false}
// r = GUI.passwordBox({
// title: "password box",
// password: "naive!"
// });
// GUI.msg(r) // true
r
=
GUI
.
msg
(
'调试选择job'
).
selectJobLayer
({
layertypelist
:
[{
name
:
"mo"
,
display_name
:
"MO"
,
filter
:
function
(
x
)
{
return
x
.
layer_type
===
"mo"
;
}
},
{
name
:
"ha"
,
display_name
:
"HA"
,
filter
:
function
(
x
)
{
return
x
.
layer_type
===
"ha"
;
}
// }]
// },
item
:[{
type
:
'ScrollArea'
,
property
:
{
widget_resizable
:
true
,
frame_shape
:
'NoFrame'
,
align
:
'Top'
},
child
:
{
type
:
'VBoxLayout'
,
property
:
{
margin
:
2
,
spacing
:
20
,
align
:
'Top'
},
pack
:
{
stretch
:
0
},
child
:
[{
type
:
"FormGridLayout"
,
property
:
{
columns
:
1
,
label_alignment
:
'Top | Right'
,
margin
:
10
,
spacing
:
20
},
pack
:
{
stretch
:
0
},
child
:
[
{
name
:
'test1'
,
type
:
'LineEdit'
,
},
{
name
:
'test2'
,
type
:
'ComboBox'
,
property
:
{
enabled
:
true
,
item_list
:
[{
name
:
"aa"
,
text
:
"aa"
}]
}
},
// {
// name: 'table',
// type: 'TableView',
// property: {},
// initCallback: function (obj, self) {
// obj.setDataKeyList(["name", "age"]);
// obj.setHeaderItem(
// [
// {},
// { name: 'name', display: 'name', resizeMode: 'ResizeToContents', displayRole: '$name' },
// { name: 'age', display: 'age', resizeMode: 'ResizeToContents', displayRole: '$age' },
// ]
// );
// },
// setter: function (obj, value, self) {
// if (value != null) {
// obj.loadData(value);
// } else {
// obj.clearData();
// }
// },
// getter: function (obj, self) {
// return obj.selectedRowDataMaps();
// }
// }
]
}]
}
],
//defaultlayertype: "ha",
joblist
:
[
"job1"
,
"job2"
],
defaultJob
:
[
"job1"
],
// select by default
steplist
:
[
"step1"
,
"step2"
,
"step3"
,
"step4"
],
// defaultstep: "step3",
showstep
:
true
,
selectmode
:
"single"
,
// single/multiple
layermatrix
:
{
"layer1"
:
{
name
:
"layer1"
,
layer_type
:
"mo"
,
row
:
1
},
"layer2"
:
{
name
:
"layer2"
,
layer_type
:
"ha"
,
row
:
2
}],
data
:
{
table
:
tabledata
},
includehide
:
false
,
buttons
:
[{
stock
:
"ok"
,
sensitive
:
true
,
command
:
function
(
data
)
{
}
},
defaultlayer
:
[
"layer1"
]
});
GUI
.
msg
(
r
)
// {layers:['layer2'],step:null,job:'job2',layertype:'null'}
{
stock
:
"cancel"
,
sensitive
:
true
,
command
:
function
(
data
)
{
}
},
{
stock
:
"help"
,
sensitive
:
true
,
command
:
function
(
data
)
{
console
.
log
(
data
);
}
}
],
});
return
'Done'
;
}
catch
(
error
)
{
return
'error'
}
\ No newline at end of file
console
.
log
(
r
);
\ No newline at end of file
GUI测试/gui_test.js
View file @
b75a5031
/*
NAME:
DESCRIPTION: ;
PARAMETER:
[
{
name:"step",
title:"step名称",
type:"LineEdit",
property:{tool_tip:"step名称,默认orig"}
},
{
name : 'auto_save',
title : '自动保存',
type : 'RadioBox',
property : {
item_list:[
{name:'yes',text:'YES'},
{name:'no',text:'NO'},
],
tool_tip:'是否自动保存料号开关'
}
}
]
VERSION_HISTORY:
V1.00 2020-06-10 Scott Sun
1.新版本
HELP:
<html><body bgcolor="#DDECFE">
<font size="3" color="#003DB2"><p>功能简介</p></font>
<p> 立碑效应 </p>
<br>
<font size="3" color="#003DB2"><p>参数配置</p></font>
<p> 配置 </p>
<br>
<font size="3" color="#003DB2"><p>注意事项</p></font>
<p> 无 </p>
<br>
</body></html>
*/
//////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////
console
.
log
(
"==============================>li bei xiao yin start"
);
// 引入模块 包
var
$
=
require
(
'topcam.scriptfunc'
).
argv
();
var
fs
=
require
(
'fs'
);
var
_
=
require
(
'lodash'
);
var
mode
=
$
.
ikm
?
"topcam"
:
"aimdfm"
;
var
IKM
=
$
.
ikm
;
if
(
IKM
==
undefined
)
{
IKM
=
require
(
'topcam.ikm6'
)(
$
)
}
var
GEN
=
$
.
gen
;
var
GUI
=
$
.
gui
||
{};
var
Job
=
$
.
job
||
$
.
job_name
;
Job
=
Job
.
toLowerCase
()
var
job
=
Job
var
JobId
=
$
.
job_id
;
var
db
=
$
.
db
||
{}
var
PAR
=
{}
if
(
$
.
par
)
{
PAR
=
$
.
par
}
else
if
(
$
.
hasOwnProperty
(
'script_parameter'
)){
PAR
=
JSON
.
parse
(
$
.
script_parameter
);
}
var
par
=
PAR
;
if
(
mode
===
"aimdfm"
)
{
var
database
=
require
(
"topsin.database"
);
database
.
addConnection
(
$
.
conf
.
database_conf
,
"DFM"
);
var
QDfm
=
database
.
query
(
"DFM"
);
$
.
QDfm
=
QDfm
;
if
(
$
.
conf
.
product_type
==
"aimdfm"
)
{
QDfm
.
updateRow
({
table
:
"pdm_aimdfm_task"
,
data
:
{
current_process_title
:
$
.
process_title
},
where
:
{
id
:
$
.
task_id
}
});
}
}
var
Status
=
'ok'
;
var
resultData
=
[];
var
debug
=
true
;
var
default_par
=
{
// par默认参数?
step
:
"orig"
,
auto_save
:
"no"
}
var
plugin
=
require
(
'topsin.gengui'
);
for
(
var
key
in
default_par
){
// 设置默认属性
if
(
!
par
.
hasOwnProperty
(
key
)
||
par
[
key
]
==
""
){
par
[
key
]
=
default_par
[
key
]
}
}
function
NewGUI
(
gui
)
{
this
.
msgBox
=
function
(
props
){
// title type content button
props
=
props
||
{}
return
gui
.
msgBox
(
props
.
title
||
"title"
,
props
.
type
||
"info"
,
props
.
content
||
"content"
,
props
.
button
||
[
"ok"
,
"cancel"
]);
}
this
.
selectFromTreeview
=
gui
.
selectFromTreeview
this
.
confirm
=
function
(
props
)
{
props
=
props
||
{}
return
gui
.
confirm
(
props
.
content
||
"content"
,
props
.
button
||
[
"yes"
,
"no"
],
props
.
type
||
"question"
);
}
this
.
selectFile
=
function
(
props
){
// "choose something", "*", true, "file", "/home/abby/fast_io"
props
=
props
||
{}
return
gui
.
selectFile
(
props
.
title
||
"choose something"
,
props
.
filter
||
"*"
,
props
.
multiple
||
false
,
"file"
,
""
);
}
this
.
selectSingle
=
function
(
props
)
{
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
[
"default"
]
||
[
""
],
"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
.
selectLayer
=
function
(
props
){
props
=
props
||
{}
return
gui
.
selectLayer
({
title
:
props
.
title
||
"请选择层"
,
filter
:
props
.
filter
||
".*"
,
// regular expression
selectmode
:
props
.
selectmode
||
"multiple"
,
// single, multiple
context
:
props
.
context
||
"all"
,
// all, board, misc
layertype
:
props
.
layertype
||
"signal"
,
// default type of layertypelist
defaultsize
:
props
.
defaultsize
||
[
600
,
400
],
// window size
layermatrix
:
props
.
layermatrix
||
props
.
matrix
,
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"
;
}}
],
gen
:
props
.
GEN
||
GEN
})
}
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
}
}
var
gui
=
plugin
.
newGui
();
var
item_list
=
[{
name
:
213
,
text
:
123
}]
r
=
gui
.
showForm
({
title
:
"form example"
,
ui
:
{
type
:
'ScrollArea'
,
property
:
{
widget_resizable
:
true
,
frame_shape
:
'NoFrame'
,
align
:
'Top'
},
child
:
{
type
:
'VBoxLayout'
,
property
:
{
margin
:
2
,
spacing
:
20
,
align
:
'Top'
},
pack
:
{
stretch
:
0
},
child
:
[
{
name
:
'attrs.iscross'
,
type
:
'ComboBox'
,
property
:
{
enabled
:
true
,
item_list
:
item_list
},
pack
:
{
label
:
(
'Is Cross'
)
}
},
]
}
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
||
[]
})
}
}
try
{
var
gui
=
new
NewGUI
(
GUI
)
var
matrix
=
GEN
.
getMatrix
({
job
:
job
})
},
data
:
{},
runnow
:
true
,
includehide
:
false
,
gen
:
null
});
if
(
mode
===
"aimdfm"
)
{
$
.
QDfm
.
updateRow
({
table
:
"pdm_aimdfm_task"
,
data
:
{
progress
:
33.33
},
where
:
{
id
:
$
.
task_id
}
});
if
(
GEN
.
hasError
())
{
Status
=
'error'
;
resultData
.
push
({
type
:
"error"
,
title
:
"GEN错误!"
,
detail
:
[{
desc
:
_
.
join
(
GEN
.
STATUS
,
"
\n
"
)
}]
});
return
{
status
:
Status
,
result_data
:
resultData
};
}
else
{
resultData
.
push
({
type
:
"info"
,
title
:
"操作完成, 请注意检查!"
});
return
{
status
:
Status
,
result_data
:
resultData
};
}
}
else
{
return
"Done"
}
}
catch
(
e
)
{
IKM
.
msg
(
_
.
join
(
GEN
.
STATUS
,
"
\n
"
))
IKM
.
msg
(
e
)
Status
=
'error'
;
resultData
.
push
({
type
:
"error"
,
title
:
"脚本执行出错!"
,
detail
:
[{
desc
:
_
.
toString
(
e
)}]});
return
(
mode
===
"aimdfm"
)
?
{
status
:
Status
,
result_data
:
resultData
}
:
"Error"
;
}
console
.
log
(
r
);
GUI测试/test.js
View file @
b75a5031
var
plugin
=
require
(
'topsin.gengui'
);
var
_
=
require
(
"lodash"
)
var
gui
=
plugin
.
newGui
(
plugin
.
__dirname
);
function
gen
()
{
...
...
@@ -70,7 +70,9 @@ r = gui.showForm({
}
},
getter
:
function
(
obj
,
self
)
{
return
obj
.
allDataMap
();
print
((
Object
.
keys
(
obj
)));
return
obj
.
selectedRowDataMaps
();
// return obj.allDataMap();
}
}
]
...
...
@@ -87,6 +89,22 @@ r = gui.showForm({
"result"
:
"test"
,
"standard"
:
"test"
,
"remark"
:
"test"
},
{
"id"
:
2
,
"analysis_item"
:
"test2"
,
"analysis_result"
:
"test2"
,
"result"
:
"test2"
,
"standard"
:
"test2"
,
"remark"
:
"test2"
},
{
"id"
:
3
,
"analysis_item"
:
"test3"
,
"analysis_result"
:
"test3"
,
"result"
:
"test3"
,
"standard"
:
"test3"
,
"remark"
:
"test3"
}
]
},
...
...
GUI测试/x.js
View file @
b75a5031
ar
plugin
=
require
(
'topsin.gengui'
);
var
plugin
=
require
(
'topsin.gengui'
);
var
gui
=
plugin
.
newGui
(
plugin
.
__dirname
);
function
gen
()
{
this
.
PAUSE
=
function
()
{
console
.
log
(
"pause"
);
}
}
gui
.
setLang
(
"zhcn"
);
// zhcn, zhtw, en
var
headers
=
[
{},
{
name
:
'analysis_item'
,
display
:
'Analysis Item'
,
resizeMode
:
'ResizeToContents'
,
displayRole
:
'$analysis_item'
},
{
name
:
'analysis_result'
,
display
:
'Analysis Result'
,
resizeMode
:
'ResizeToContents'
,
displayRole
:
'$analysis_result'
},
{
name
:
'result'
,
display
:
'Result'
,
resizeMode
:
'ResizeToContents'
,
displayRole
:
'$result'
},
{
name
:
'standard'
,
display
:
'Standard'
,
resizeMode
:
'ResizeToContents'
,
displayRole
:
'$standard'
},
{
name
:
'remark'
,
display
:
'Remark'
,
resizeMode
:
'ResizeToContents'
,
displayRole
:
'$remark'
,
editRole
:
'$remark'
,
flagsRole
:
'ItemIsEditable|ItemIsEnabled|ItemIsSelectable'
}
];
var
item_list
=
[
{
name
:
"male"
,
icon
:
"male"
,
text
:
"男"
,
text_zhcn
:
"男"
,
text_zhtw
:
"男"
},
{
name
:
"female"
,
icon
:
"female"
,
text
:
"女"
,
text_zhcn
:
"女"
,
text_zhtw
:
"女"
},
];
r
=
gui
.
showForm
({
title
:
"注册账号"
,
size
:
[
600
,
400
],
ui
:
[{
type
:
'ScrollArea'
,
property
:
{
widget_resizable
:
true
,
frame_shape
:
'NoFrame'
,
align
:
'Top'
},
child
:
{
type
:
'VBoxLayout'
,
property
:
{
margin
:
2
,
spacing
:
20
,
align
:
'Top'
},
pack
:
{
stretch
:
0
},
child
:
[
{
type
:
"FormGridLayout"
,
property
:
{
columns
:
1
,
label_alignment
:
'Top | Right'
,
margin
:
10
,
spacing
:
20
},
pack
:
{
stretch
:
0
},
child
:
[
{
name
:
'username'
,
type
:
'LineEdit'
,
pack
:
{
label
:
"用户名"
},
property
:
{
enabled
:
true
}
},
{
name
:
'password'
,
type
:
'LineEdit'
,
pack
:
{
label
:
"密码"
},
property
:
{
echo_mode
:
"password"
}
},
{
name
:
'sex'
,
type
:
'ComboBox'
,
property
:
{
enabled
:
true
,
item_list
:
[
{
name
:
"male"
,
icon
:
"male"
,
text
:
"男"
,
text_zhcn
:
"男"
,
text_zhtw
:
"男"
},
{
name
:
"female"
,
icon
:
"female"
,
text
:
"女"
,
text_zhcn
:
"女"
,
text_zhtw
:
"女"
},
{
name
:
"hideyoshi"
,
icon
:
"circle-thin"
,
text
:
"Hideyoshi"
,
text_zhcn
:
"秀吉"
,
text_tw
:
"秀吉"
}
]
},
pack
:
{
label
:
'性别'
}
},
{
name
:
'table'
,
type
:
'TableView'
,
property
:
{},
pack
:
{
label
:
'性别'
},
initCallback
:
function
(
obj
,
self
)
{
obj
.
setHeaderItem
(
[
{},
{
name
:
'analysis_item'
,
display
:
'Analysis Item'
,
resizeMode
:
'ResizeToContents'
,
displayRole
:
'$analysis_item'
},
{
name
:
'analysis_result'
,
display
:
'Analysis Result'
,
resizeMode
:
'ResizeToContents'
,
displayRole
:
'$analysis_result'
},
{
name
:
'result'
,
display
:
'Result'
,
resizeMode
:
'ResizeToContents'
,
displayRole
:
'$result'
},
{
name
:
'standard'
,
display
:
'Standard'
,
resizeMode
:
'ResizeToContents'
,
displayRole
:
'$standard'
},
{
name
:
'remark'
,
display
:
'Remark'
,
resizeMode
:
'ResizeToContents'
,
displayRole
:
'$remark'
,
editRole
:
'$remark'
,
flagsRole
:
'ItemIsEditable|ItemIsEnabled|ItemIsSelectable'
}
]
);
obj
.
setDataKeyList
([
"id"
,
"analysis_item"
,
"analysis_result"
,
"result"
,
"standard"
,
"remark"
]);
obj
.
setPrimaryKey
(
"id"
);
},
setter
:
function
(
obj
,
value
,
self
)
{
if
(
value
!=
null
)
{
obj
.
loadData
(
value
);
}
else
{
obj
.
clearData
();
}
}
}
]
}
]
}
}],
data
:
{
username
:
"elder"
,
password
:
"nαive!"
,
sex
:
"male"
},
includehide
:
false
,
buttons
:
[
{
stock
:
"ok"
,
sensitive
:
true
,
command
:
function
(
data
)
{
}
},
{
stock
:
"cancel"
,
sensitive
:
true
,
command
:
function
(
ddata
)
{
}
},
title
:
"BUG#10475"
,
size
:
'600x400'
,
items
:
{
type
:
'ScrollArea'
,
property
:
{
widget_resizable
:
true
,
frame_shape
:
'NoFrame'
,
align
:
'Top'
},
child
:
{
type
:
'VBoxLayout'
,
property
:
{
margin
:
2
,
spacing
:
20
,
align
:
'Top'
},
pack
:
{
stretch
:
0
},
child
:
[
{
stock
:
"help"
,
sensitive
:
true
,
command
:
function
(
data
)
{
console
.
log
(
data
);
type
:
"FormGridLayout"
,
property
:
{
columns
:
1
,
label_alignment
:
'Top | Right'
,
margin
:
10
,
spacing
:
20
},
pack
:
{
stretch
:
0
},
child
:
[
{
name
:
'username'
,
type
:
'LineEdit'
,
pack
:
{
label
:
"用户名"
},
property
:
{
enabled
:
true
}
},
{
name
:
'password'
,
type
:
'LineEdit'
,
pack
:
{
label
:
"密码"
},
property
:
{
echo_mode
:
"password"
}
},
{
name
:
'sex'
,
type
:
'ComboBox'
,
property
:
{
enabled
:
true
,
item_list
:
item_list
},
pack
:
{
label
:
'性别'
}
},
{
name
:
'table'
,
type
:
'TableView'
,
property
:
{},
pack
:
{
label
:
'性别'
},
initCallback
:
function
(
obj
,
self
)
{
obj
.
setHeaderItem
(
headers
);
obj
.
setDataKeyList
([
"id"
,
"analysis_item"
,
"analysis_result"
,
"result"
,
"standard"
,
"remark"
]);
obj
.
setPrimaryKey
(
"id"
);
}
}
]
}
],
hook
:
function
(
data
)
{
},
gen
:
new
gen
()
]
}
}
});
console
.
log
(
r
);
\ No newline at end of file
print
(
JSON
.
stringify
(
r
,
null
,
' '
));
GUI测试/x1.js
0 → 100644
View file @
b75a5031
var
plugin
=
require
(
'topsin.gengui'
);
var
gui
=
plugin
.
newGui
(
plugin
.
__dirname
);
var
data
=
[{
name
:
"123"
,
text
:
123
}]
gui
.
_extra
=
[{
name
:
13
,
text
:
23
}]
var
r
=
gui
.
showForm
({
title
:
"注册账号"
,
size
:
[
600
,
400
],
ui
:
function
(
self
)
{
return
[{
type
:
'ScrollArea'
,
property
:
{
widget_resizable
:
true
,
frame_shape
:
'NoFrame'
,
align
:
'Top'
},
child
:
{
type
:
'VBoxLayout'
,
property
:
{
margin
:
2
,
spacing
:
20
,
align
:
'Top'
},
pack
:
{
stretch
:
0
},
child
:
[{
type
:
"FormGridLayout"
,
property
:
{
columns
:
1
,
label_alignment
:
'Top | Right'
,
margin
:
10
,
spacing
:
20
},
pack
:
{
stretch
:
0
},
child
:
[{
name
:
'test'
,
type
:
'ComboBox'
,
pack
:
{
label
:
"用户名"
},
property
:
{
enabled
:
true
,
item_list
:
self
.
_extra
}
}]
}]
}
}]
}
,
data
:
{},
includehide
:
false
,
buttons
:
[{
stock
:
"ok"
,
sensitive
:
true
,
command
:
function
(
data
)
{
}
},
{
stock
:
"cancel"
,
sensitive
:
true
,
command
:
function
(
data
)
{
}
},
{
stock
:
"help"
,
sensitive
:
true
,
command
:
function
(
data
)
{
console
.
log
(
data
);
}
}
],
});
console
.
log
(
r
);
\ No newline at end of file
ats/topcam/ATS_AIM_customer_data_analysis.js
View file @
b75a5031
...
...
@@ -827,16 +827,16 @@ try {
var
smdInfo
;
try
{
if
(
!
analysis_obj
.
matrixInfo
.
mOuters
[
0
].
solderL
){
throw
"no mask"
}
smdInfo
=
smdAnalysis
({
job
:
job
,
steplist
:[
pcs_step
],
layers
:
analysis_obj
.
matrixInfo
.
mOuters
,
attr
:
".smd"
})
smdInfo
=
smdAnalysis
({
job
:
job
,
steplist
:[
pcs_step
],
layers
:
analysis_obj
.
matrixInfo
.
mOuters
,
attr
:
".smd"
})
;
}
catch
(
msg
)
{
console
.
log
(
"smdInfo:error:"
+
msg
)
console
.
log
(
"smdInfo:error:"
+
msg
)
;
}
// bga
console
.
log
(
"===================================> 7 bga info"
)
console
.
log
(
"===================================> 7 bga info"
)
;
var
bgaInfo
;
bgaInfo
=
bgaAnalysis
({
job
:
job
,
steplist
:[
pcs_step
],
layers
:
analysis_obj
.
matrixInfo
.
mOuters
,
attr
:
".bga"
})
bgaInfo
=
bgaAnalysis
({
job
:
job
,
steplist
:[
pcs_step
],
layers
:
analysis_obj
.
matrixInfo
.
mOuters
,
attr
:
".bga"
})
;
// 保存
console
.
log
(
"============== =====================> 8 save bga smd info"
)
console
.
log
(
"============== =====================> 8 save bga smd info"
)
;
var
save_info
=
[
smdInfo
,
analysis_obj
.
jobInfo
.
laser_info
,
bgaInfo
];
// 保存 smd 和 bga数据
save_info
.
forEach
(
function
(
item
){
if
(
JSON
.
stringify
(
item
)
!=
"{}"
&&
item
){
...
...
@@ -847,21 +847,21 @@ try {
layer
:
key
,
layerinfohash
:
val
})
})
})
;
}
})
console
.
log
(
"================================> 9 copper_percent signal drill"
)
})
;
console
.
log
(
"================================> 9 copper_percent signal drill"
)
;
// 分析layer info
var
stepList
=
[
pcs_step
];
var
oChecklistName
=
"mychecklist"
;
var
signalLayers
=
analysis_obj
.
matrixInfo
.
mSignals
.
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
];
copper_distribution_steplist
.
forEach
(
function
(
step
){
if
(
step
){
GEN
.
openStep
({
job
:
job
,
name
:
step
})
GEN
.
openStep
({
job
:
job
,
name
:
step
})
;
// 铜面积 分step
var
copper_percent_tmp
=
signalLayers
.
map
(
function
(
v
){
var
tmp
=
{
layer
:
v
}
...
...
@@ -882,9 +882,9 @@ try {
array_copper_distribution
:
item
.
copper_percent
}
}
save_layerinfo
(
save_info2
)
save_layerinfo
(
save_info2
)
;
})
GEN
.
closeStep
()
GEN
.
closeStep
()
;
}
})
// var info = {
...
...
@@ -1051,10 +1051,10 @@ try {
drl_pad_top
:
item
.
drl_pad_top
,
drl_pad_bot
:
item
.
drl_pad_bot
,
}
})
})
})
;
})
;
console
.
log
(
"==================================> chk signals analysis"
)
console
.
log
(
"==================================> chk signals analysis"
)
;
// 删除线路层的外形线
if
(
GEN
.
isLayerExists
({
job
:
job
,
layer
:
"out_rout"
})){
GEN
.
deleteLayer
({
job
:
job
,
layer
:
"out_rout"
})}
...
...
ats/topcam/ATS_AIM_data_input.js
View file @
b75a5031
...
...
@@ -743,7 +743,7 @@ function autoUn(path, dirname, dir) {
fs
.
mkdir
(
dirname
);
if
(
pwd
){
process
.
exec
(
'/opt/rar/unrar'
,
[
'x'
,
path
,
dirname
,
"-o+"
,
"-p"
+
pwd
])
process
.
exec
(
'/opt/rar/unrar'
,
[
'x'
,
path
,
dirname
,
"-o+"
,
"-p"
+
pwd
])
;
}
else
{
process
.
exec
(
'/opt/rar/unrar'
,
[
'x'
,
path
,
dirname
,
"-o+"
])
}
...
...
public_script/字符优化/
创建套层
.pl
→
public_script/字符优化/
creat_cover
.pl
View file @
b75a5031
File moved
template.js
View file @
b75a5031
...
...
@@ -113,10 +113,10 @@ try {
if
(
/yes/ig
.
test
(
par
.
auto_save
))
{
GEN
.
checkInout
({
job
:
job
,
mode
:
"out"
});
GEN
.
saveJob
({
job
:
job
});
GEN
.
checkInout
({
job
:
job
,
mode
:
"in"
});
}
GEN
.
checkInout
({
job
:
job
,
mode
:
"in"
});
// 结尾返回 固定写法
// 结尾返回
固定写法
var
Return
=
"Done"
if
(
mode
===
"aimdfm"
)
{
IKM
.
crud
(
"updateRow"
,
{
...
...
@@ -132,7 +132,7 @@ try {
resultData
.
push
(
tmperr
);
Return
=
{
status
:
Status
,
result_data
:
resultData
};
}
return
Return
_Return_Label_
=
Return
}
catch
(
e
)
{
if
(
GEN
.
STATUS
.
length
>
0
)
{
IKM
.
msg
(
GEN
.
STATUS
.
join
(
"
\n
"
));
...
...
@@ -140,5 +140,47 @@ try {
IKM
.
msg
(
e
);
Status
=
'error'
;
resultData
.
push
({
type
:
"error"
,
title
:
"脚本执行出错!"
,
detail
:
[{
desc
:
_
.
toString
(
e
)
}]
});
return
(
mode
===
"aimdfm"
)
?
{
status
:
Status
,
result_data
:
resultData
}
:
"Error"
;
_Return_Label_
=
(
mode
===
"aimdfm"
)
?
{
status
:
Status
,
result_data
:
resultData
}
:
"Error"
;
}
<<<<<<<
HEAD
=======
/**
* 获取层别
* @param {Object} 过滤选项
* @returns {Array}
*/
function
getLayer
(
props
)
{
if
(
!
props
)
{
props
=
{};
}
var
matrix
=
GEN
.
getMatrix
({
job
:
job
});
return
Object
.
keys
(
matrix
).
reduce
(
function
(
a
,
b
)
{
var
info
=
matrix
[
b
];
var
ret
=
true
;
for
(
var
_key
in
props
)
{
if
(
info
[
_key
])
{
if
(
/object string|object number/ig
.
test
({}.
toString
.
call
(
props
[
_key
])))
{
if
(
props
[
_key
]
!=
info
[
_key
])
{
ret
=
false
;
}
}
if
(
/object RegExp/ig
.
test
({}.
toString
.
call
(
props
[
_key
])))
{
if
(
!
props
[
_key
].
test
(
info
[
_key
]))
{
ret
=
false
;
}
}
if
(
/object function/ig
.
test
({}.
toString
.
call
(
props
[
_key
])))
{
if
(
!
props
[
_key
](
info
[
_key
]))
{
ret
=
false
;
}
}
}
}
if
(
ret
)
{
a
.
push
(
props
.
res
==
"info"
?
info
:
b
);
}
return
a
;
},
[]);
}
>>>>>>>
56
f0155198c943a1cde2a6cd9d5b958e8b6f736c
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