VM引用自定义dll实现个性化功能(VM4.1)
包括计算旋转中心、根据旋转中心计算旋转后的点、读写ini文件等操作。

1、加载程序集

打开脚本--编辑程序集--添加程序集--选择MetrTools.dll文件


添加成功后会在程序集中显示,并且可以在该脚本中使用内部封装的函数。

2、使用封装函数计算旋转中心

直接在加入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 )

3、使用封装函数计算旋转后的点(已知旋转中心)

直接在加入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)

4、使用封装函数写入ini文件

直接在加入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)

5、使用封装函数读取ini文件

直接在加入MetrTools.dll程序集的脚本中写如下代码

string 变量值 = IniReadValue("标题名","变量名",@"路径");

//例如读取本地旋转中心Y坐标
string Y = IniReadValue("旋转中心坐标","CenterY",@"C:\Users\XWork\Desktop\旋转中心坐标.ini");

注意:MetrTool.IniReadValue()函数返回的是字符串类型,后续根据值类型做转换即可

//函数内部形参
IniReadValue(string Section, string Key, string path)

6、读写ini文件注意事项

注意:使用IniWriteValue()写入ini文件后,需要备份生成的ini文件,后续使用IniReadValue()读取时路径选择备份后的路径!!!!!因为ini文件写入本地后,当VM重新打开时会重新给ini赋初值,这时的ini文件内的值已经发生改变了。

版权声明:本文为V社区用户原创内容,转载时必须标注文章的来源(V社区),文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:v-club@hikrobotics.com 进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。
上一篇

7月巡回交流会热门问题解答

下一篇

Visionmaster4.2 + QT5.14.2 + VS2017二次开发保姆级避坑课程

评论请先登录 登录
全部评论 3

大佬NP,666

2022-08-19 21:24:33 未知地区
回复

MetrTools.dll从哪来😂

2022-08-19 13:52:22 未知地区
回复

学习学习😀。。。。。。。。。。。。。。。。。。。

2022-08-18 10:02:53 未知地区
回复
  • 1
Lv.0
2
关注
4
粉丝
1
创作
17
获赞
所属专题
  • VM4.2 脚本调用halcon解码
  • 浅谈VsionMaster:用脚本最简代码,调用halcon
  • 浅谈VsionMaster:用脚本,做一些好玩的东西。
  • VisionMaster在脚本更改存图路径
  • 脚本输出泛型(数组)的方法
  • VM引用自定义dll实现个性化功能(VM4.1)
  • 【共享学习】---脚本实现浮点数保留N位小数
  • 用脚本调用sdk采集图片
  • 【共享学习】---脚本实现修改字符串指定位置字符
相关阅读
  • 【3D系列】我们用2D相机实现3D无序抓取了
    2024-10-21 浏览 0
  • 【3D系列】我们用2D相机实现3D无序抓取了
    2024-10-21 浏览 0
  • 第三届“悉灵杯”基于MV-DT01SDU相机识别果蔬等数据集
    2024-10-14 浏览 0
  • 第三届“悉灵杯”基于MV-DT01SDU相机识别果蔬等数据集
    2024-10-14 浏览 0
  • [启智杯]赛事资料下载说明
    2024-10-29 浏览 0

请升级浏览器版本

您正在使用的浏览器版本过低,请升级最新版本以获得更好的体验。

推荐使用以下浏览器