NX二次开发 矩阵向量坐标 UFUN坐标系转换 UF_CSYS_map_point
//NX8.0+VS2010
#include <uf_curve.h>
#include <uf_csys.h>
#include <uf_mtx.h>
extern DllExport void ufsta(char* param, int* returnCode, int rlen)
{
if (UF_initialize())
return;
//3*3矩阵,输入Z向量,得到矩阵
double vec[3] = { 1,0,0 };
double mtx_3d[9] = {0.0};
UF_MTX3_initialize_z(vec, mtx_3d);//根据z方向获得3x3矩阵
//创建矩阵
tag_t mtx_tag = NULL_TAG;
UF_CSYS_create_matrix(mtx_3d, &mtx_tag);
//创建临时坐标系
double point1[3] = { 0.0, 0.0, 0.0 };//直线起点
tag_t csys_tag = NULL_TAG;
UF_CSYS_create_temp_csys(point1, mtx_tag, &csys_tag);
//设置WCS
UF_CSYS_set_wcs(csys_tag);
//创建直线终点
double point2[3] = { point1[0], point1[1], point1[2] + 100.0 };
//从当前工作坐标系转换到绝对坐标系
double point[3] = { 0.0, 0.0, 0.0 };
UF_CSYS_map_point(UF_CSYS_ROOT_WCS_COORDS, point2, UF_CSYS_ROOT_COORDS, point);
//创建直线
UF_CURVE_line_t line_coods;
line_coods.start_point[0] = point1[0];
line_coods.start_point[1] = point1[1];
line_coods.start_point[2] = point1[2];
line_coods.end_point[0] = point[0];
line_coods.end_point[1] = point[1];
line_coods.end_point[2] = point[2];
tag_t object_tag = NULL_TAG;
UF_CURVE_create_line(&line_coods, &object_tag);
UF_terminate();
}