[quote][b]回复 [url=http://bbs.hexagonmetrology.com.cn:6080/showtopic.aspx?topicid=12255&postid=94529#94529]11楼[color=olive]PcdlrnDeveloper[/color]的帖子[/url][/b]
1,要当前测针在当前零件坐标系的位置,并......
[color=#999999]arttk 发表于 2012-12-5 8:06:00 [/color][url=http://bbs.hexagonmetrology.com.cn:6080/showtopic.aspx?topicid=12255&postid=94540#94540][img]http://bbs.hexagonmetrology.com.cn:6080/images/common/back.gif[/img][/url][/quote]
[attach]2592[/attach]
其实这个操作原理很简单。我写了一个简单的范例。程序如附件(仅适用于PC-DMIS4.2版),你可以测试下。
思路如下:
1。设置一个Timer,根据你对窗口中显示坐标的连续性,设置Timer的间隔。我的示例设置的是 200ms。
2。在Timer的响应函数中,调用如下代码获取PC-DMIS中的测头坐标值
我使用的代码如下:
IPoint probePoint; // PC-DMIS 的 POINT 对象,能够接收任何XYZIJK型的数据
char bufX[16],bufY[16],bufZ[16]; // 三个字符串缓冲区,用来组织显示在窗口中的字串
CString msg; // 用来显示在窗口中的字串(坐标)
ConnectPcdmis(); // 连接PC-DMIS。该函数中需要连接到机器Machine对象
probePoint.AttachDispatch ( m_machine.GetProbePosition() ); // 将POINT对象连接到机器对象取得的点坐标(测头坐标)
::sprintf(bufX,"%f",probePoint.GetX()); // 将三轴坐标转换到缓冲区中变成字串
::sprintf(bufY,"%f",probePoint.GetY());
::sprintf(bufZ,"%f",probePoint.GetZ());
msg="X = "; // 组织显示的字串
msg+=bufX;
msg+="\n\n";
msg+="Y = ";
msg+=bufY;
msg+="\n\n";
msg+="Z = ";
msg+=bufZ;
m_cstaticXYZ.SetWindowText(msg); // 刷新窗口的显示
ReleasePcdmis(); // 释放PC-DMIS