NX二次开发
获取WCS坐标系信息UF_CSYS_ask_wcs
//获取工作坐标系TAG值
tag_t wcsTag = NULL_TAG;
UF_CSYS_ask_wcs(&wcsTag);
//获取工作坐标系原点和矩阵TAG值。
tag_t wcsMatrixTag = NULL_TAG;
double origin[3] = { 0 };
UF_CSYS_ask_csys_info(wcsTag, &wcsMatrixTag,origin);
//通过矩阵TAG值拿到矩阵信息
double matrixValues[9] = { 0 };
UF_CSYS_ask_matrix_values(wcsMatrixTag, matrixValues);
char msg[256];
sprintf_s(msg, "基准坐标系(WCS)原点(%d,%d,%d)\nWCS关联矩阵:\n%f %f %f\n%f %f %f\n%f %f %f\n",
origin[0], origin[1], origin[2],
matrixValues[0], matrixValues[1], matrixValues[2],
matrixValues[3], matrixValues[4], matrixValues[5],
matrixValues[6], matrixValues[7], matrixValues[8]
);
theSession->ListingWindow()->Open();
theSession->ListingWindow()->WriteLine(msg);
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
在NX中工作坐标系默认是(0,0,0)
通过点击w
键,就可以看到在绘图区域出现工作坐标系,用(XC YC ZC)表示,我们可以通过双击鼠标左键坐标系对他进行移动,比如我移动到绘图区域某一个块体的旁边。再鼠标右键 进行确认。这个时候,我们示例中得到的坐标系原点就会受到改变了。
NXOpen
通过WCS
对象来完成工作坐标系信息的获取。
//获取工作坐标系WCS对象
WCS* wcs = theSession->Parts()->Work()->WCS();
//获取工作坐标系矩阵对象 NXMatrix
NXMatrix* matrix = wcs->CoordinateSystem()->Orientation();
//获取工作坐标系 原点
Point3d origin = wcs->Origin();
//拿到工作坐标系矩阵值
Matrix3x3 element = matrix->Element();
char msg[256];
sprintf_s(msg, "基准坐标系(WCS)原点(%d,%d,%d)\nWCS关联矩阵:\n%f %f %f\n%f %f %f\n%f %f %f\n",
origin.X, origin.Y, origin.Z,
matrix->Element().Xx, matrix->Element().Xy, matrix->Element().Xz,
matrix->Element().Yx, matrix->Element().Yy, matrix->Element().Yz,
matrix->Element().Zx, matrix->Element().Zy, matrix->Element().Zz
);
theSession->ListingWindow()->Open();
theSession->ListingWindow()->WriteLine(msg);
有的时候,我们只需要获取到工作坐标系关联的矩阵就可以了。 不需要原点信息。比如我们在制作拉伸特征的时候,往往需要获取到工作坐标系的关联矩阵。就可以通过 UF_CSYS_ask_matrix_of_object()
来仅仅获取坐标系关联矩阵ID,根据矩阵ID,可以UF_CSYS_ask_matrix_values()
进一步获取到矩阵值。
tag_t wcsMatrixTag = NULL_TAG;
double wcsMatrixValues[9] = { 0.0};
//获取工作坐标系TAG值
tag_t wcsTag = NULL_TAG;
UF_CSYS_ask_wcs(&wcsTag);
//获取工作矩阵TAG值
UF_CSYS_ask_matrix_of_object(wcsTag, &wcsMatrixTag);
//获取工作矩阵
UF_CSYS_ask_matrix_values(wcsMatrixTag, wcsMatrixValues);
char msg[256];
sprintf(msg, "|%f %f %f|\n|%f %f %f|\n|%f %f %f|",
wcsMatrixValues[0], wcsMatrixValues[1], wcsMatrixValues[2],
wcsMatrixValues[3], wcsMatrixValues[4], wcsMatrixValues[5],
wcsMatrixValues[6], wcsMatrixValues[7], wcsMatrixValues[8]
);
print(msg);
/*
|1.000000 0.000000 0.000000|
|0.000000 1.000000 0.000000|
|0.000000 0.000000 1.000000|
*/