QVA代码详解进阶篇.docx

上传人:b****2 文档编号:548064 上传时间:2023-04-29 格式:DOCX 页数:40 大小:27KB
下载 相关 举报
QVA代码详解进阶篇.docx_第1页
第1页 / 共40页
QVA代码详解进阶篇.docx_第2页
第2页 / 共40页
QVA代码详解进阶篇.docx_第3页
第3页 / 共40页
QVA代码详解进阶篇.docx_第4页
第4页 / 共40页
QVA代码详解进阶篇.docx_第5页
第5页 / 共40页
QVA代码详解进阶篇.docx_第6页
第6页 / 共40页
QVA代码详解进阶篇.docx_第7页
第7页 / 共40页
QVA代码详解进阶篇.docx_第8页
第8页 / 共40页
QVA代码详解进阶篇.docx_第9页
第9页 / 共40页
QVA代码详解进阶篇.docx_第10页
第10页 / 共40页
QVA代码详解进阶篇.docx_第11页
第11页 / 共40页
QVA代码详解进阶篇.docx_第12页
第12页 / 共40页
QVA代码详解进阶篇.docx_第13页
第13页 / 共40页
QVA代码详解进阶篇.docx_第14页
第14页 / 共40页
QVA代码详解进阶篇.docx_第15页
第15页 / 共40页
QVA代码详解进阶篇.docx_第16页
第16页 / 共40页
QVA代码详解进阶篇.docx_第17页
第17页 / 共40页
QVA代码详解进阶篇.docx_第18页
第18页 / 共40页
QVA代码详解进阶篇.docx_第19页
第19页 / 共40页
QVA代码详解进阶篇.docx_第20页
第20页 / 共40页
亲,该文档总共40页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

QVA代码详解进阶篇.docx

《QVA代码详解进阶篇.docx》由会员分享,可在线阅读,更多相关《QVA代码详解进阶篇.docx(40页珍藏版)》请在冰点文库上搜索。

QVA代码详解进阶篇.docx

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

'程序

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2