1、创建过程proc
Ø 一个proc 类似于其他语言中的function,可以被调用。
Ø 过程中的参数使用中括号引用 {arg1,arg2},在函数内部使用参数时,需要使用符号$, $arg1,可以类比其他语言中的形式参数。
Ø proc 最后的{}内部为过程的程序体。基本结构如下:
2、hwi是最高层,连接其他对象。
在开发时,需要首先通过hwi获取session,然后逐层深入获取所需要的API
hwi GetSessionHandle sess
3、获取项目handle
sess GetProjectHandle proj
4、通过数据文件handle打开数据文件,通过$指定数据文件
sess GetDataFileHandle data $fileName
5、foreach循环执行输入数据中的所有数据,例如:
foreachvalue [data GetDataTypeList false] {
foreachrequest [data GetRequestList $value false] {
foreachcomponent [data GetComponentList $value false] {
6、获取当前page,window,与client(并在获取对象handle时,设置当前client类型)。
proj GetPageHandle p1 1
p1 GetWindowHandle w1 1
w1 SetClientType Plot
w1 GetClientHandle plot
7、设置每次添加的曲线名称为cn,在每次获取曲线handle的时候不需要知道曲线的编号,如下:
set cn [plot AddCurve]
plot GetCurveHandle c1 $cn
8、依据文件设置曲线,使用循环中的数据类型,要求,以及分量
c1 GetVectorHandle xv x
xv SetType File
xv SetFileName $fileName
c1 GetVectorHandle yv y
yv SetType File
yv SetFileName $fileName
yv SetDataType $value
yv SetRequest $$request
yv SetComponent $component
9、数据处理完毕后画图
plot Recaculate
plot Autoscale
plot Draw
10、寻找最大最小y值并赋给指定变量
c1 AddCursor
c1 GetCursorhandle cur 1
cur FindGlobalMax y
set maxY [cur GetY]
cur FindGlobalMin y
set minY [cur Gety]
11、计算最大值与最小值之间的距离
set diff [expr abs($maxY-$minY)]
12、判断最大最小值之间的差异,如果值小于指定的数值,关闭视图
if {$diff < $amount} {
c1 SetVisiablity false
}
13、释放所有的Handle,以方便在循环中重新被获取
p1 ReleaseHandle
w1 ReleaseHandle
plot ReleaseHandle
c1 ReleaseHandle
cur ReleaseHandle
xv ReleaseHandle
yv ReleaseHandle
procShowCurves {fileName amount} {
proc ShowCurves {fileName amount} {
hwi GetSessionHandle sess
sess GetProjectHandle proj
sess GetDataFileHandle data $fileName
foreach value [data GetDataTypeList false] {
foreach request [data GetRequestList $value false] {
foreach component [data GetComponentList $value false] {
proj GetPageHandle p1 1
p1 GetWindowHandle w1 1
w1 SetClientType Plot
w1 GetClientHandle plot
set cn [plot AddCurve]
plot GetCurveHandle c1 $cn
c1 GetVectorHandle xv x
xv SetType File
xv SetFilename $fileName
c1 GetVectorHandle yv y
yv SetType File
yv SetFilename $fileName
yv SetDataType $value
yv SetRequest $request
yv SetComponent $component
plot Recalculate
plot Autoscale
plot Draw
c1 AddCursor
c1 GetCursorHandle cur 1
cur FindGlobalMax y
set maxY [cur GetY]
cur FindGlobalMin y
set minY [cur GetY]
set diff [expr abs($maxY-$minY)]
if {$diff < $amount} {
c1 SetVisibility false
}
p1 ReleaseHandle
w1 ReleaseHandle
plot ReleaseHandle
c1 ReleaseHandle
cur ReleaseHandle
xv ReleaseHandle
yv ReleaseHandle
}
}
}
}