如何在ug中建立坐标系 并且读取坐标系中的数据,试过一些方法 但是ug会崩掉
UF_initialize();struct Robot {
NXOpen::Vector3d xdir, ydir;
NXOpen::Point3d originPoint;
};
Robot robot;
PropertyList* CoordSystemRobotProps = CoordSystemRobot->GetProperties();
std::vector<NXOpen::TaggedObject*>CoordSystemRobotObjects = CoordSystemRobotProps->GetTaggedObjectVector("SelectedObjects");
NXOpen::CartesianCoordinateSystem *coord = dynamic_cast<NXOpen::CartesianCoordinateSystem *>(CoordSystemRobotObjects);
coord->GetDirections(&robot.xdir, &robot.ydir);
robot.originPoint = coord->Origin();
delete CoordSystemRobotProps;
CoordSystemRobotProps = NULL;
char a;
sprintf(a, "机器人坐标:%.2f%.2f%.2f\nX轴方向:(%.1f, %.1f, %.1f)Y轴方向:(%.1f, %.1f, %.1f)", robot.originPoint.X, robot.originPoint.Y, robot.originPoint.Z,robot.xdir.X, robot.xdir.Y, robot.xdir.Z, robot.ydir.X, robot.ydir.Y, robot.ydir.Z);
uc1601(a, 1);
CoordSystemRobotObjects.clear();
UF_terminate();
uc1601("1", 1);
尝试过以上代码,虽然能读取坐标原点及方向向量等参数 但是读取完代码运行结束之后ug就会崩溃退出
注:使用的是ug8.0
UF_CSYS_create_csys,创建坐标系
UF_CSYS_ask_csys_info,读取坐标系信息
UF_CSYS_ask_matrix_values,获取坐标系矩阵值信息
谢谢,不过我用的是block ui做的开发,这一点我一开始没讲清楚。
我想知道通过ug block ui里的控件建立坐标系 然后读取参数该怎么做?
这三个函数方法我记得是MFC风格的,也可以做吗? 蓝摩羯 发表于 2019-2-22 09:06
UF_CSYS_create_csys,创建坐标系
UF_CSYS_ask_csys_info,读取坐标系信息
UF_CSYS_ask_matrix_values, ...
谢谢,不过我用的是block ui做的开发,这一点我一开始没讲清楚。
我想知道通过ug block ui里的控件建立坐标系 然后读取参数该怎么做?
这三个函数方法我记得是MFC风格的,也可以做吗? 我知道你用的是block ui。你从你的指定坐标系控件中得到临时坐标系的tag_t的值,然后再用这些函数读取。 以下为UG11对应的代码,仅供参考:
tag_t t_csys = coord_system0->GetSelectedObjects().at(0)->Tag();
tag_t t_wcsMatrix;
double wcsMtx;
double wcsOrigin;
double xDir;
double yDir;
double zDir;
UF_CSYS_ask_csys_info(t_csys, &t_wcsMatrix, wcsOrigin);
UF_CSYS_ask_matrix_values(t_wcsMatrix, wcsMtx);
UF_MTX3_x_vec(wcsMtx, xDir);
UF_MTX3_y_vec(wcsMtx, yDir);
UF_MTX3_z_vec(wcsMtx, zDir);
UF_UI_open_listing_window();
char aa = "";
sprintf(aa, "%f,%f,%f", xDir, xDir, xDir);
UF_UI_write_listing_window(aa); 蓝摩羯 发表于 2019-2-25 17:06
以下为UG11对应的代码,仅供参考:
tag_t t_csys = coord_system0->GetSelectedObjects().at(0)->Tag();
...
十分感谢!
页:
[1]