01_获取WCS坐标系信息UF_CSYS_ask_wcs

文章详细介绍了在NX环境中如何进行二次开发,获取工作坐标系(WCS)的信息,包括原点和矩阵。通过UF_CSYS接口函数以及NXOpenSDK,可以获取和操作WCS的原点、矩阵,以及在特定场景下仅获取矩阵信息的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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|
            */
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值