matata 发表于 2019-2-21 22:11:51

如何在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

蓝摩羯 发表于 2019-2-22 09:06:08

UF_CSYS_create_csys,创建坐标系
UF_CSYS_ask_csys_info,读取坐标系信息
UF_CSYS_ask_matrix_values,获取坐标系矩阵值信息

matata 发表于 2019-2-25 13:01:34

谢谢,不过我用的是block ui做的开发,这一点我一开始没讲清楚。
我想知道通过ug block ui里的控件建立坐标系 然后读取参数该怎么做?
这三个函数方法我记得是MFC风格的,也可以做吗?

matata 发表于 2019-2-25 13:02:09

蓝摩羯 发表于 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风格的,也可以做吗?

蓝摩羯 发表于 2019-2-25 17:01:47

我知道你用的是block ui。你从你的指定坐标系控件中得到临时坐标系的tag_t的值,然后再用这些函数读取。

蓝摩羯 发表于 2019-2-25 17:06:30

以下为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);

matata 发表于 2019-2-25 23:05:28

蓝摩羯 发表于 2019-2-25 17:06
以下为UG11对应的代码,仅供参考:
tag_t t_csys = coord_system0->GetSelectedObjects().at(0)->Tag();
...

十分感谢!
页: [1]
查看完整版本: 如何在ug中建立坐标系 并且读取坐标系中的数据,试过一些方法 但是ug会崩掉