-
Notifications
You must be signed in to change notification settings - Fork 2
/
generationIntelligent.aardio
101 lines (87 loc) · 4.71 KB
/
generationIntelligent.aardio
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
import win.ui;
/*DSG{{*/
var winform = win.form(text="Halcon之COM组件函数自动生成器";right=1101;bottom=612;border="dialog frame")
winform.add(
Halconclassname={cls="edit";text="HOperatorSetX";left=684;top=562;right=942;bottom=613;align="center";autohscroll=false;autovscroll=false;bgcolor=0;color=65280;edge=1;font=LOGFONT(h=-32);z=4};
button={cls="button";text="开始生成";left=951;top=559;right=1098;bottom=613;font=LOGFONT(h=-24);z=3};
comEdit={cls="edit";text="{6ebd90e2-d219-11d2-ade5-0000c00f4ef9}";left=133;top=562;right=471;bottom=613;align="center";autohscroll=false;autovscroll=false;bgcolor=0;color=65280;edge=1;font=LOGFONT(h=-32);z=2};
funcEdit={cls="edit";left=0;top=0;right=1102;bottom=554;bgcolor=0;color=65280;font=LOGFONT(h=-14;name='微软雅黑');hscroll=1;multiline=1;readonly=1;vscroll=1;z=1};
static={cls="static";text="控件GUID:";left=4;top=553;right=129;bottom=613;center=1;font=LOGFONT(h=-24);transparent=1;z=5};
static2={cls="static";text="控件对象名:";left=541;top=553;right=682;bottom=613;center=1;font=LOGFONT(h=-24);transparent=1;z=6}
)
/*}}*/
var loadFunc = function( comMsg ){
var path = io.exist("/"++winform.Halconclassname.text++".aardio")
if(path){
io.remove("/"++winform.Halconclassname.text++".aardio");
}
import com;
//调用COM组件
obj = com.CreateObject( comMsg );
//获取COM组件类型库信息
var typeinfo = com.GetTypeInfo(obj)
//准备存储获取到的类型库信息
var funcTab = {};
//下面直接调用函数总数目不准确,因为有写com组件里有空函数
//winform.funcEdit.log("共有函数: "++typeinfo.GetTypeAttr().Funcs ++ " 个!",'\r\n');
for(i=8;typeinfo.GetTypeAttr().Funcs;1){
table.push(funcTab,table.clone(typeinfo.GetFuncDesc(i) ));
}
//添加注释头部
string.save("/"++winform.Halconclassname.text++".aardio","//"++winform.Halconclassname.text++"图像库"++'\r\n',true);
string.save("/"++winform.Halconclassname.text++".aardio","namespace "++winform.Halconclassname.text++";"++'\r\n',true);
string.save("/"++winform.Halconclassname.text++".aardio",'\r\n',true);
string.save("/"++winform.Halconclassname.text++".aardio","/*intellisense("++winform.Halconclassname.text++")*/"++'\r\n',true);
for(i=1;#funcTab;1){
var funcPara = "";//参数合成
var headTab = "";
if(funcTab[i].Params != null){
//总共几个变量参数
for(j=1;funcTab[i].Params;1){
var parametersTab = funcTab[i].parameters[j];
if( parametersTab != null ){
if(j==1){
if( string.indexOf(parametersTab.type,"&") ){
headTab = string.concat(headTab,parametersTab.name);
}else {
funcPara = string.concat(funcPara,parametersTab.name);
}
}else {
if( string.indexOf(parametersTab.type,"&") ){
if(headTab != ""){
headTab = string.concat(headTab," , ",parametersTab.name);
}else {
headTab = string.concat(headTab,parametersTab.name);
}
}else {
if(funcPara != ""){
funcPara = string.concat(funcPara," , ",parametersTab.name);
}else {
funcPara = string.concat(funcPara,parametersTab.name);
}
}
}
}
}
//输出
if(headTab != ""){
var retdata = string.concat(funcTab[i].name," = @","var " ,headTab," = ",winform.Halconclassname.text,".",funcTab[i].name ,"( ",funcPara , " );",'\r\n');
//winform.funcEdit.log(retdata);
string.save("/"++winform.Halconclassname.text++".aardio", retdata ,true);
}else {
var retdata = string.concat(funcTab[i].name," = @",winform.Halconclassname.text,".",funcTab[i].name ,"( ",funcPara , " );",'\r\n');
//winform.funcEdit.log(retdata);
string.save("/"++winform.Halconclassname.text++".aardio", retdata ,true)
}
}
}
//添加注释尾部
string.save("/"++winform.Halconclassname.text++".aardio","/*end intellisense*/",true);
}
winform.button.oncommand = function(id,event){
winform.funcEdit.clear();
loadFunc(winform.comEdit.text);
winform.msgbox("生成完成!")
}
winform.show()
win.loopMessage();