QVA代码详解进阶篇.docx
- 文档编号:14436701
- 上传时间:2023-04-23
- 格式:DOCX
- 页数:40
- 大小:27KB
QVA代码详解进阶篇.docx
《QVA代码详解进阶篇.docx》由会员分享,可在线阅读,更多相关《QVA代码详解进阶篇.docx(40页珍藏版)》请在冰豆网上搜索。
QVA代码详解进阶篇
'=======================================================
'程序名称:
说明.QVB
'程序说明:
一般量测。
'程序目的:
startup子程序及常用的量测工具说明
'=======================================================
'/////////子程序宣告区/////////
DeclareSubQVBlock_6
DeclareSubQVBlock_5
DeclareSubQVBlock_4
DeclareSubQVBlock_3
DeclareSubQVBlock_2
DeclareSubQVBlock_1
OptionExplicit'***所有变量子程序使用前都要事先宣告
'//////////////量测前参数设定的子程序/////////////
substartup
'***显示格式***
DistanceUnits=MM'量测尺寸单位(MMorINCH)
CoordinateMode=CART'坐标模式(直角坐标:
CART圆筒坐标:
CYL)
ResolutionMode=DECIMALS_5'小数点精度
AngleRange=ZERO_TO_360'角度显示模式0~360度
AngleUnits=DECIMAL_DEGREES_3'角度精度
'***镜头倍率设定***
Lens.SelectLabel:
="1X(QVObjective)"
'***显示结果的格式***
Results.ShowColumnLabels=TRUE'show字段标签
Results.ShowFeatureTypeInHdr=TRUE'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
endsub'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:
="Point0"
EndSub'QVBlock_1
PrivateSubQVBlock_2'============量测一条线做为轴向
Measure.LineLabel:
="Line1",ReverseDirection:
=TRUE
Video.ChangeToImageContextX:
=-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
'量测结束
Measure.EndMeas
'显示的结果
Results.ReportFeatureShow:
=X_andY_andZ_andAN_andXA_andYA_andZA_andST_,Tag:
="Line1"
'坐标轴方向设定
PCS.AlignAxisAlignmentAxis:
=X_AXIS,RotationAxis:
=Z_AXIS,Offset:
=0.0000000,Direction:
=POS,Tag:
="Line1"
EndSub'QVBlock_2
PrivateSubQVBlock_3'===========量测一个圆
Measure.CircleLabel:
="Circle1",ProjPlane:
=NO_PLANE
Video.ChangeToImageContextX:
=1.7166358,Y:
=-2.5477576,Z:
=-0.0003515
'//圆工具
CircleTool.ScanInt=20
'检测方向
CircleTool.SamplingDirection=CW
CircleTool.SetFilterAlg:
=DYNAMIC_THRESH,EdgeSlope:
=RISING,EdgeQuality:
=STRONG,Outlier:
=0,TH:
=103.935000,THR:
=0.445299,THS:
=43.000000
CircleTool.RunX:
=3.0294651,Y:
=-3.5513114,Z:
=-0.0005515,R1:
=0.7184305,R2:
=1.6943508
Measure.EndMeas
'结果输出
Results.ReportFeatureShow:
=CR_andD_andRD_,Tag:
=0
EndSub'QVBlock_3
PrivateSubQVBlock_4'===========量测一点
Measure.PointLabel:
="Point1",ProjPlane:
=NO_PLANE
Video.ChangeToImageContextX:
=1.7166358,Y:
=-2.5477576,Z:
=-0.0003515,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
'//点工具
PointTool.SetFilterAlg:
=DYNAMIC_THRESH,EdgeSlope:
=RISING,EdgeQuality:
=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.0007515,W:
=0.4920757,H:
=0.6170179,Angle:
=0.2282
Measure.EndMeas
'结果输出
Results.ReportFeatureShow:
=X_andY_andZ_,Tag:
="Point1"
EndSub'QVBlock_4
PrivateSubQVBlock_5'=============量测点并计算两点的距离
Measure.PointLabel:
="Point2",ProjPlane:
=NO_PLANE
Video.ChangeToImageContextCoax:
=0.14,Stage:
=0.36,Back:
=0.00,Front:
=0.00,Right:
=0.00,Left:
=0.00,Angle:
=0.00,Color:
=qvWhite
'方框工具型式:
找寻最大点
BoxTool.Mode=MAXPT
BoxTool.ScanInt=20
BoxTool.SamplingDirection=DIR_RIGHT
BoxTool.SetFilterAlg:
=DYNAMIC_THRESH,EdgeSlope:
=RISING,EdgeQuality:
=STRONG,Outlier:
=0,TH:
=92.823529,THR:
=0.573975,THS:
=21.500000
BoxTool.RunX:
=-0.1525784,Y:
=-2.7707717,Z:
=-0.0005515,W:
=0.3149284,H:
=1.5180599,Angle:
=0.2282
'对焦工具
FocusTool.SetModeFocusType:
=EDGE0,Speed:
=MED,Range:
=4.2314050
FocusTool.EdgeSlope=BOTH
FocusTool.RunX:
=-0.1284158,Y:
=-1.3995137,Z:
=0.0106486,W:
=0.3149284,H:
=0.6366058
Measure.EndMeas
'结果输出
Results.ReportFeatureShow:
=X_andY_andZ_,Tag:
="Point2"
'计算Point2到Point2的距离
Construct.DistanceTag1:
="Point2",Tag2:
="Point1",Label:
="Dim1",ProjPlane:
=NO_PLANE
'结果输出
Results.ReportFeatureShow:
=DX_andDY_andDZ_andLC_andSC_,Tag:
="Dim1"
EndSub'QVBlock_5
PrivateSubQVBlock_6'=======量测一条线并计算交点
Measure.LineLabel:
="Line2"
'方框工具型式:
一般方框
BoxTool.Mode=NORMAL
BoxTool.ScanInt=20
BoxTool.SamplingDirection=DIR_LEFT
BoxTool.SetFilterAlg:
=DYNAMIC_THRESH,EdgeSlope:
=FALLING,EdgeQuality:
=STRONG,Outlier:
=0,TH:
=99.045627,THR:
=0.373051,THS:
=71.000000
BoxTool.RunX:
=-0.2105517,Y:
=-3.0158529,Z:
=0.0106486,W:
=0.9841514,H:
=3.5551984,Angle:
=-179.7718
'使用自动亮度工具
BrightnessTool.SetFilterLightType:
=STAGE_TYPE,LightAngle:
=0.000000,MetricType:
=AVE_BRIGHT,WeightedMetric:
=true,OperationMode:
=DEPENDENT,MetricTol:
=0.088212
BrightnessTool.RunX:
=0.8962639,Y:
=-1.6892524,Z:
=0.0105486,W:
=0.4625512,H:
=0.4015513,Angle:
=0.2282,LightMetric:
=0.664436
Measure.EndMeas
'结果输出
Results.ReportFeatureShow:
=X_andY_andZ_andAN_andXA_andYA_andZA_andST_,Tag:
="Line2"
'计算Line2与Line1的交点
Construct.IntersectPointTag1:
="Line2",Tag2:
="Line1",Label:
="Point3",ProjPlane:
=XY_PLANE,PreferredPoint:
=1
'结果输出
Results.ReportFeatureShow:
=X_andY_andZ_,Tag:
="Point3"
EndSub'QVBlock_6
'=======================================================
'程序名称:
档案IO.QVB
'程序说明:
1.在C根目录建立一个档案"TEMP001.txt"
'2.将文字写入档案,并关闭档案。
'3.开启刚刚建立的档案
'4.从档案读取数据
'5.将读取的数据用讯息盒显示
'6.将档案关闭
'7.将档案删除
'程序目的:
说明开档->读档->写入档案->关档->删档
'=======================================================
DeclareSubcreatefile'//宣告一个建立档案的子程序
'//====main====
Submain
Dimmsgtextasstring
dimiasinteger
Callcreatefile'//建立一个档案
'//开启一个档案,数据输入用档案代号#1
Open"C:
\TEMP001.txt"ForInputAs#1
'//从档案取回前10个字放至msgtext
fori=1to10
msgtext=msgtext&Input(1,#1)
nexti
'//将读取到的数据利用讯息盒显示出来
MsgBoxmsgtext
'//使用完毕后务必将档案关闭
Close#1
'//***删除档案***
Kill"C:
\TEMP001.txt"
EndSub
'=======建立档案的子程序==============
Subcreatefile
'//开启一个档案,数据写出用档案代号#1
Open"C:
\TEMP001.txt"forOutputas#1
'//将文字写入档案
Write#1,"这是刚建立的档案"
'//使用完毕后务必将档案关闭
Close#1
EndSub
'=======================================================
'程序名称:
变量宣告.QVB
'程序说明:
在子程序内与子程序外宣告变量,并由讯息框印出
'两个变数的值。
'程序目的:
说明变量宣告,全区域变量与单区域变量的不同
'=======================================================
DeclareSubuse1
dimxasinteger'宣告一个全区域整数变
'=====subMain=====
subMain
x=5
Calluse1
MsgBox"这是全区域变量x="&x'这个讯息盒显示的是全区域变量
endSub
'=====subuse1=====
Subuse1
dimx'宣告一个单区域变量
x=6
MsgBox"这是单区域变量x="&x'这个讯息盒显示的是单区域变量
endsub
'=======================================================
'程序名称:
呼叫外部应用程序.QVB
'程序说明:
执行外部应用程序记事本并开启档案aaa.dat,
'将焦点放在开启的程序上。
'程序目的:
说明呼叫外部应用程序
'=======================================================
submain
'//宣告一个传回植
dimidasLong
'//执行记事本并开启档案aaa.dat,参数1=>将焦点放在开启的程序上
id=Shell("Notepad.exeaaa.txt",1)
EndSub
'=======================================================
'程序名称:
呼叫外部子程序.QVB
'程序说明:
呼叫开启外部子程序,显示变量值,
'呼叫开启外部函式,计算三角斜边长。
'程序目的:
说明呼叫已编译过的外部QVBasic程序
'=======================================================
'//宣告子程序名称:
sss来源档名:
变量宣告.QVX子程序:
Main
DeclaresubsssBasicLib"变量宣告.QVX"Alias"Main"()
'//宣告函式名称:
fun来源档名:
函式.QVX函式:
fun1(aasdouble,basdouble)传回的数据格式double
DeclareFunctionfunBasicLib"函式.QVX"alias"fun1"(aasdouble,basdouble)asdouble
'==================Main()=====================
subMain
callsss'//呼叫子程序sss
dimcasdouble
'//c=呼叫函式fun1并给两个三角邻对边长度自变量(a,b)
c=fun(3,4)
'//将得到的值显示在讯息框
MsgBox"三角形的两边是3,4斜边长="&c
endsub
'※重要:
呼叫的子程序前面不可以宣告为private
'※备注:
扩展名.QVX是编译过的量测程序
'=======================================================
'程序名称:
函式.QVB
'程序
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- QVA 代码 详解 进阶