QVA代码详解进阶篇Word下载.docx
《QVA代码详解进阶篇Word下载.docx》由会员分享,可在线阅读,更多相关《QVA代码详解进阶篇Word下载.docx(40页珍藏版)》请在冰点文库上搜索。
show要素形式在标头
Results.ShowFeatureLabelInHdr=TRUE'
show要素标签在标头
Results.ShowFeatureIDInHdr=TRUE'
show要素序号在标头
Results.ShowNumOfPointsInHdr=TRUE'
show要素量测的点数量在标头
设定要素数据格式的显示方法
Results.FormatColumnsELEMENT,ACTUAL,NOMINAL,DEVIATION,UPTOL,LOWTOL,PASSFAIL
***显示结果的讯息***
Results.ShowAlignmentMsg=FALSE'
showPCS资料
Results.ShowUnitsChangeMsg=FALSE'
show单位转变报告
Results.ShowConstructionMsg=FALSE'
show要素的建筑报告
Results.ShowErrorMsg=FALSE'
show错误报告
***显示结果数据的等级***
Results.ReportLevel=ALLDATA
***结果输出记录***
Results.LogFileName="
C:
\DocumentsandSettings\Administrator\桌面\rep.txt"
Results.LogToFile=TRUE
Results.LogToCOM1=FALSE
Results.LogToCOM2=FALSE
***执行模式设定***
BreakOnErrors=TRUE'
错误中断
ShowImageTools=TRUE'
show影像工具
***恢复MCS***
PCS.RestoreMCS
***参考面***
ReferencePlane=XY_PLANE
***量测驱动***
MeasuringDevice=QV_VIDEO
QV.CylUsesRefPlane=true'
允许使用圆筒坐标
endsub'
startup
===================================================
=====================Main=========================
subMain'
startofmainsubroutine
callstartup
CallQVBlock_1
CallQVBlock_2
CallQVBlock_3
CallQVBlock_4
CallQVBlock_5
CallQVBlock_6
Main
=========================================================
=====================量测子程序=========================
PrivateSubQVBlock_1'
======任意点一点为基准点
//量测点要素标签:
Point0无投影平面
Measure.PointLabel:
Point0"
ProjPlane:
=NO_PLANE
//影像中心改变到X,Y,Z光源设定为.......
Video.ChangeToImageContextX:
=25.8001129,Y:
=283.2850158,Z:
=12.5829224,Coax:
=0.00,Stage:
=0.36,Back:
=0.00,Front:
=0.00,Right:
=0.00,Left:
=0.00,Angle:
=0.00,Color:
=qvWhite,NomMag:
=1.000000
//对焦工具设定
FocusTool.SetModeFocusType:
=SURFACE,Speed:
=MED,Range:
=4.2314050
//执行对焦工具
FocusTool.RunX:
=24.2943612,Y:
=282.8247008,Z:
=12.5879225,W:
=0.8463702,H:
=0.7149573
//执行量测工具
ManualTool.RunX:
=23.8810176,Y:
=282.5015010,Z:
=12.5879225,Prompt:
输入原点"
//量测结束
Measure.EndMeas
//设定PCS原点是Point0
PCS.AlignOriginAxes:
=ALL_AXES,Tag:
EndSub'
QVBlock_1
PrivateSubQVBlock_2'
============量测一条线做为轴向
Measure.LineLabel:
Line1"
ReverseDirection:
=TRUE
=-0.0004923,Y:
=-0.0004648,Z:
=-0.0007515
方框工具型式:
一般方框
BoxTool.Mode=NORMAL
扫瞄像素间格
BoxTool.ScanInt=20
侦测方向设定
BoxTool.SamplingDirection=DIR_LEFT
检出条件设定
BoxTool.SetFilterAlg:
=DYNAMIC_THRESH,EdgeSlope:
=RISING,EdgeQuality:
=STRONG,Outlier:
=0,TH:
=98.653061,THR:
=0.393520,THS:
=71.000000
工具尺寸形状设定
BoxTool.RunX:
=1.5741499,Y:
=-0.1669617,Z:
=-0.0007515,W:
=0.9841514,H:
=2.8696230,Angle:
=89.6339
量测结束
显示的结果
Results.ReportFeatureShow:
=X_andY_andZ_andAN_andXA_andYA_andZA_andST_,Tag:
坐标轴方向设定
PCS.AlignAxisAlignmentAxis:
=X_AXIS,RotationAxis:
=Z_AXIS,Offset:
=0.0000000,Direction:
=POS,Tag:
QVBlock_2
PrivateSubQVBlock_3'
===========量测一个圆
Measure.CircleLabel:
Circle1"
=1.7166358,Y:
=-2.5477576,Z:
=-0.0003515
//圆工具
CircleTool.ScanInt=20
检测方向
CircleTool.SamplingDirection=CW
CircleTool.SetFilterAlg:
=103.935000,THR:
=0.445299,THS:
=43.000000
CircleTool.RunX:
=3.0294651,Y:
=-3.5513114,Z:
=-0.0005515,R1:
=0.7184305,R2:
=1.6943508
结果输出
=CR_andD_andRD_,Tag:
=0
QVBlock_3
PrivateSubQVBlock_4'
===========量测一点
Point1"
=-0.0003515,Coax:
//点工具
PointTool.SetFilterAlg:
=STRONG,TH:
=114.447964,THR:
=0.615292,THS:
=56.500000
PointTool.RunX:
=3.6253062,Y:
=-2.4226265,Z:
=-0.0005515,L:
=0.9841514,Angle:
=27.2282
//双区域对比工具
DualAreaContrastTool.SetFilterLightType:
=STAGE_TYPE,LightAngle:
=0.000000,MetricType:
=AVE_BRIGHT,WeightedMetric:
=true,OperationMode:
=DEPENDENT,MetricTol:
=0.100000
DualAreaContrastTool.RunX:
=4.2993618,Y:
=-3.6344991,Z:
=0.4920757,H:
=0.6170179,Angle:
=0.2282
=X_andY_andZ_,Tag:
QVBlock_4
PrivateSubQVBlock_5'
=============量测点并计算两点的距离
Point2"
Video.ChangeToImageContextCoax:
=0.14,Stage:
=qvWhite
找寻最大点
BoxTool.Mode=MAXPT
BoxTool.SamplingDirection=DIR_RIGHT
=92.823529,THR:
=0.573975,THS:
=21.500000
=-0.1525784,Y:
=-2.7707717,Z:
=-0.0005515,W:
=0.3149284,H:
=1.5180599,Angle:
对焦工具
=EDGE0,Speed:
FocusTool.EdgeSlope=BOTH
=-0.1284158,Y:
=-1.3995137,Z:
=0.0106486,W:
=0.6366058
计算Point2到Point2的距离
Construct.DistanceTag1:
Tag2:
Label:
Dim1"
=DX_andDY_andDZ_andLC_andSC_,Tag:
QVBlock_5
PrivateSubQVBlock_6'
=======量测一条线并计算交点
Line2"
=FALLING,EdgeQuality:
=99.045627,THR:
=0.373051,THS:
=-0.2105517,Y:
=-3.0158529,Z:
=3.5551984,Angle:
=-179.7718
使用自动亮度工具
BrightnessTool.SetFilterLightType:
=0.088212
BrightnessTool.RunX:
=0.8962639,Y:
=-1.6892524,Z:
=0.0105486,W:
=0.4625512,H:
=0.4015513,Angle:
=0.2282,LightMetric:
=0.664436
计算Line2与Line1的交点
Construct.IntersectPointTag1:
Point3"
=XY_PLANE,PreferredPoint:
=1
QVBlock_6
档案IO.QVB
1.在C根目录建立一个档案"
TEMP001.txt"
2.将文字写入档案,并关闭档案。
3.开启刚刚建立的档案
4.从档案读取数据
5.将读取的数据用讯息盒显示
6.将档案关闭
7.将档案删除
说明开档->
读档->
写入档案->
关档->
删档
DeclareSubcreatefile'
//宣告一个建立档案的子程序
//====main====
Submain
Dimmsgtextasstring
dimiasinteger
Callcreatefile'
//建立一个档案
'
//开启一个档案,数据输入用档案代号#1
Open"
\TEMP001.txt"
ForInputAs#1
//从档案取回前10个字放至msgtext
fori=1to10
msgtext=msgtext&
Input(1,#1)
nexti
//将读取到的数据利用讯息盒显示出来
MsgBoxmsgtext
//使用完毕后务必将档案关闭
Close#1
//***删除档案***
Kill"
EndSub
=======建立档案的子程序==============
Subcreatefile
//开启一个档案,数据写出用档案代号#1
forOutputas#1
//将文字写入档案
Write#1,"
这是刚建立的档案"
变量宣告.QVB
在子程序内与子程序外宣告变量,并由讯息框印出
两个变数的值。
说明变量宣告,全区域变量与单区域变量的不同
DeclareSubuse1
dimxasinteger'
宣告一个全区域整数变
=====subMain=====
subMain
x=5
Calluse1
MsgBox"
这是全区域变量x="
&
x'
这个讯息盒显示的是全区域变量
endSub
=====subuse1=====
Subuse1
dimx'
宣告一个单区域变量
x=6
这是单区域变量x="
这个讯息盒显示的是单区域变量
endsub
呼叫外部应用程序.QVB
执行外部应用程序记事本并开启档案aaa.dat,
将焦点放在开启的程序上。
说明呼叫外部应用程序
submain
//宣告一个传回植
dimidasLong
//执行记事本并开启档案aaa.dat,参数1=>
将焦点放在开启的程序上
id=Shell("
Notepad.exeaaa.txt"
1)
呼叫外部子程序.QVB
呼叫开启外部子程序,显示变量值,
呼叫开启外部函式,计算三角斜边长。
说明呼叫已编译过的外部QVBasic程序
//宣告子程序名称:
sss来源档名:
变量宣告.QVX子程序:
Main
DeclaresubsssBasicLib"
变量宣告.QVX"
Alias"
Main"
()
//宣告函式名称:
fun来源档名:
函式.QVX函式:
fun1(aasdouble,basdouble)传回的数据格式double
DeclareFunctionfunBasicLib"
函式.QVX"
alias"
fun1"
(aasdouble,basdouble)asdouble
==================Main()=====================
callsss'
//呼叫子程序sss
dimcasdouble
//c=呼叫函式fun1并给两个三角邻对边长度自变量(a,b)
c=fun(3,4)
//将得到的值显示在讯息框
三角形的两边是3,4斜边长="
c
endsub
※重要:
呼叫的子程序前面不可以宣告为private
※备注:
扩展名.QVX是编译过的量测程序
函式.QVB
程序