VM脚本真的好用
9篇
- VM4.2 脚本调用halcon解码
- 浅谈VsionMaster:用脚本最简代码,调用halcon
- 浅谈VsionMaster:用脚本,做一些好玩的东西。
- VisionMaster在脚本更改存图路径
- 脚本输出泛型(数组)的方法
- VM引用自定义dll实现个性化功能(VM4.1)
- 【共享学习】---脚本实现浮点数保留N位小数
- 用脚本调用sdk采集图片
- 【共享学习】---脚本实现修改字符串指定位置字符
1、加载程序集
打开脚本--编辑程序集--添加程序集--选择MetrTools.dll文件
添加成功后会在程序集中显示,并且可以在该脚本中使用内部封装的函数。
直接在加入MetrTools.dll程序集的脚本中写如下代码
//////////////////////////////////////////////////////////输入
//originX是VM中计算出来的旋转前点坐标X
//originY是VM中计算出来的旋转前点坐标Y
//rotateX是VM中计算出来的旋转后点坐标X
//rotateY是VM中计算出来的旋转前点坐标Y
//angle需要自己计算。angle = -(-旋转前的角度) - (-旋转后的角度);
//////////////////////////////////////////////////////////输出
//CenterX是调用函数后得到的旋转中心X
//CenterY是调用函数后得到的旋转中心Y
double CenterX;
double CenterY;
CaluRotateCenter(originX,originY,rotateX,rotateY,angle,out CenterX,out CenterY);
//调用该函数后得出的CenterX是旋转中心X,CenterY是旋转中心Y。
//后续可以使用MetrTool.IniWriteValue()写入本地。
注意:CaluRotateCenter()函数的形参都是double类型,在VM中计算出坐标点和角度之后需要转为double类型后在传参。
//函数内部形参
CaluRotateCenter(double originX, double originY, double rotateX, double rotateY, double angle, out double CenterX,out double CenterY )
直接在加入MetrTools.dll程序集的脚本中写如下代码
//////////////////////////////////////////////////////////输入
//originX是VM中计算出来的旋转前点坐标X
//originY是VM中计算出来的旋转前点坐标Y
//RotateCenterX是旋转中心X
//RotateCenterY是旋转中心Y
//angle需要自己计算。angle = -(-旋转前的角度) - (-旋转后的角度);
//////////////////////////////////////////////////////////输出
//rotateX是调用函数后得到的旋转后的X点
//rotateY是调用函数后得到的旋转后的Y点
double rotateX;
double rotateY;
CaluRotatePoint(originX, originY, RotateCenterX, RotateCenterY, angle,out rotateX,out rotateY) ;
//调用该函数后得出的rotateX是旋转后的X点,rotateY是旋转后的Y点。
注意:CaluRotatePoint()函数的形参都是double类型,在VM中计算出坐标点和角度之后需要转为double类型后在传参。
//函数内部形参
CaluRotatePoint(double originX, double originY, double RotateCenterX, double RotateCenterY, double angle,out double rotateX,out double rotateY)
直接在加入MetrTools.dll程序集的脚本中写如下代码
//////////////////////////////////////////////////////////输入
//section是ini文件中[]内的字符串
//key是ini文件中的变量名
//value是ini文件中key对应的变量值
//path是ini文件的保存路径
IniWriteValue(section,key,value,path);
//例如在本地写入旋转中心坐标
IniWriteValue("旋转中心坐标","CenterX",CenterX.ToString("f3"),@"C:\Users\XWork\Desktop\旋转中心坐标.ini");
IniWriteValue("旋转中心坐标","CenterY",CenterY.ToString("f3"),@"C:\Users\XWork\Desktop\旋转中心坐标.ini");
注意:变量值.ToString("f3") 将具体的值转换为string类型并保留三位小数。使用ini读取写入函数时,输入参数类型为字符串类型。c#中单个\代表转义字符,所以路径前面记得加上@字符。
//函数内部形参
IniWriteValue(string Section, string Key, string Value, string path)
直接在加入MetrTools.dll程序集的脚本中写如下代码
string 变量值 = IniReadValue("标题名","变量名",@"路径");
//例如读取本地旋转中心Y坐标
string Y = IniReadValue("旋转中心坐标","CenterY",@"C:\Users\XWork\Desktop\旋转中心坐标.ini");
注意:MetrTool.IniReadValue()函数返回的是字符串类型,后续根据值类型做转换即可
//函数内部形参
IniReadValue(string Section, string Key, string path)
注意:使用IniWriteValue()写入ini文件后,需要备份生成的ini文件,后续使用IniReadValue()读取时路径选择备份后的路径!!!!!因为ini文件写入本地后,当VM重新打开时会重新给ini赋初值,这时的ini文件内的值已经发生改变了。