NX二次开发-UFUN和NXOpen结合开发中Tag_t对象与TaggedObject对象转换方法
 本文通过举四个例子来告诉大家在NX二次开发过程中会经常用到UFUN和NXOpen结合去开发,在UFUN中我们得到的是Tag_t对象,在NXOpen中得到的是TaggedObject对象,这两个是需要进行转换的。本文主要知识点为:TaggedObject->tag_t() , NXOpen::NXObjectManager::Get(BodyTag1) , feature1->JournalIdentifier()的用法。
     NX11+VS2013
     #include <uf.h>
     #include <uf_modl.h>
     #include <uf_obj.h>
     #include <NXOpen\NXObjectManager.hxx>
     #include <NXOpen/Features_BlockFeatureBuilder.hxx>
     #include <NXOpen/Features_FeatureCollection.hxx>
     #include <NXOpen/NXException.hxx>
     #include <NXOpen/Body.hxx>
     #include <NXOpen/BodyCollection.hxx>
     #include <NXOpen/DisplayManager.hxx>
     #include <NXOpen/PartCollection.hxx>
     NXOpen::Session *theSession = NXOpen::Session::GetSession();
     NXOpen::Part *workPart(theSession->Parts()->Work());
     NXOpen::Part *displayPart(theSession->Parts()->Display());
     UF_initialize();
     //方法1:UFUN方式创建块,设置块颜色。
     //UFUN方式创建块
     UF_FEATURE_SIGN Sign = UF_NULLSIGN;
     double Corner_pt[] = { 0.0, 0.0, 0.0 };
     char *Edge_len[] = { "", "", "" };
     tag_t BlkTag = NULL_TAG;
     UF_MODL_create_block1(Sign, Corner_pt, Edge_len, &BlkTag);
     //UFUN方式特征找体
     tag_t BodyTag = NULL_TAG;
     UF_MODL_ask_feat_body(BlkTag, &BodyTag);
     //UFUN方式设置颜色
     UF_OBJ_set_color(BodyTag, );
     //方法2:NXOpen方式创建块,设置块颜色。
     //NXOpen方式创建块
     NXOpen::Features::Feature *nullNXOpen_Features_Feature(NULL);
     NXOpen::Features::BlockFeatureBuilder *blockFeatureBuilder1;
     blockFeatureBuilder1 = workPart->Features()->CreateBlockFeatureBuilder(nullNXOpen_Features_Feature);
     std::vector<NXOpen::Body *> targetBodies1();
     NXOpen::Body *nullNXOpen_Body(NULL);
     targetBodies1[] = nullNXOpen_Body;
     blockFeatureBuilder1->BooleanOption()->SetTargetBodies(targetBodies1);
     blockFeatureBuilder1->SetType(NXOpen::Features::BlockFeatureBuilder::TypesOriginAndEdgeLengths);//设置创建类型
     NXOpen::Point3d originPoint1(100.0, 100.0, 100.0);
     blockFeatureBuilder1->SetOriginAndLengths(originPoint1, "", "", "");//设置原点
     blockFeatureBuilder1->SetBooleanOperationAndTarget(NXOpen::Features::Feature::BooleanTypeCreate, nullNXOpen_Body);//设置布尔
     NXOpen::Features::Feature *feature1;
     feature1 = blockFeatureBuilder1->CommitFeature();
     //NXOpen方式设置颜色
     NXOpen::DisplayModification *displayModification1;
     displayModification1 = theSession->DisplayManager()->NewDisplayModification();
     displayModification1->SetNewColor();//设置颜色
     std::vector<NXOpen::DisplayableObject *> objects1();
     NXOpen::Body *body1(dynamic_cast<NXOpen::Body *>(workPart->Bodies()->FindObject(feature1->JournalIdentifier())));
     objects1[] = body1;
     displayModification1->Apply(objects1);
     //方法3:UFUN创建块,NXOpen设置颜色
     //UFUN方式创建块
     UF_FEATURE_SIGN Sign1 = UF_NULLSIGN;
     double Corner_pt1[] = { 200.0, 200.0, 200.0 };
     char *Edge_len1[] = { "", "", "" };
     tag_t BlkTag1 = NULL_TAG;
     UF_MODL_create_block1(Sign1, Corner_pt1, Edge_len1, &BlkTag1);
     //UFUN方式特征找体
     tag_t BodyTag1 = NULL_TAG;
     UF_MODL_ask_feat_body(BlkTag1, &BodyTag1);
     //NXOpen方式设置颜色
     NXOpen::DisplayModification *displayModification2;
     displayModification2 = theSession->DisplayManager()->NewDisplayModification();
     displayModification2->SetNewColor();//设置颜色
     std::vector<NXOpen::DisplayableObject *> objects2();
     NXOpen::Body *body2(dynamic_cast<NXOpen::Body *>(NXOpen::NXObjectManager::Get(BodyTag1)));
     objects2[] = body2;
     displayModification2->Apply(objects2);
     //方法4:NXOpen创建块,UFUN设置颜色
     //NXOpen方式创建块
     NXOpen::Features::Feature *nullNXOpen_Features_Feature1(NULL);
     NXOpen::Features::BlockFeatureBuilder *blockFeatureBuilder2;
     blockFeatureBuilder2 = workPart->Features()->CreateBlockFeatureBuilder(nullNXOpen_Features_Feature1);
     std::vector<NXOpen::Body *> targetBodies2();
     NXOpen::Body *nullNXOpen_Body1(NULL);
     targetBodies2[] = nullNXOpen_Body1;
     blockFeatureBuilder2->BooleanOption()->SetTargetBodies(targetBodies2);
     blockFeatureBuilder2->SetType(NXOpen::Features::BlockFeatureBuilder::TypesOriginAndEdgeLengths);//设置创建类型
     NXOpen::Point3d originPoint2(300.0, 300.0, 300.0);
     blockFeatureBuilder2->SetOriginAndLengths(originPoint2, "", "", "");//设置原点
     blockFeatureBuilder2->SetBooleanOperationAndTarget(NXOpen::Features::Feature::BooleanTypeCreate, nullNXOpen_Body1);//设置布尔
     NXOpen::Features::Feature *feature2;
     feature2 = blockFeatureBuilder2->CommitFeature();
     //UFUN方式特征找体
     tag_t BodyTag2 = NULL_TAG;
     UF_MODL_ask_feat_body(feature2->Tag(), &BodyTag2);
     //UFUN方式设置颜色
     UF_OBJ_set_color(BodyTag2, );
     UF_terminate();

NX二次开发-UFUN和NXOpen结合开发中Tag_t对象与TaggedObject对象转换方法的更多相关文章
- NX二次开发-UFUN结合NXOPEN开发_常用代码模板
		hpp //头文件 #include <NXOpen/Part.hxx> #include <NXOpen/PartCollection.hxx> #include <N ... 
- NX二次开发-UDO用户自定义对象(UFUN)【持续完善】
		每当提起UDO总是会让我想起大专毕业那会失业找工作,后来有个宝贵机会去了软件公司上班,拿到了我人生中的第一个NX二次开发项目,一个关于测量汽车前后左右摄像头的项目.当时那个项目就用到了UDO,对于只看 ... 
- NX二次开发-UFUN发射线函数UF_MODL_trace_a_ray的用法
		今天是国庆节,放假休息懒得动,没有出去玩,在家研究一下发射线函数UF_MODL_trace_a_ray.小弟以前在软件公司混的时候,当时我做的那个项目就用到了UF_MODL_trace_a_ray,当 ... 
- NX二次开发-UFUN将工程图转成CGM和PDF文件UF_CGM_export_cgm
		文章转载自唐康林NX二次开发论坛,原文出处: http://www.nxopen.cn/thread-126-1-1.html 刚才有同学问到这个问题,如果是用NXOpen来做,直接录制一下就可以了: ... 
- NX二次开发-UFUN获取NX系统默认导出CGM的选项设置UF_CGM_ask_default_export_options
		文章转载自唐康林NX二次开发论坛,原文出处: http://www.nxopen.cn/thread-126-1-1.html 刚才有同学问到这个问题,如果是用NXOpen来做,直接录制一下就可以了: ... 
- NX二次开发-UFUN获取当前导出CGM选项设置UF_CGM_ask_session_export_options
		文章转载自唐康林NX二次开发论坛,原文出处: http://www.nxopen.cn/thread-126-1-1.html 刚才有同学问到这个问题,如果是用NXOpen来做,直接录制一下就可以了: ... 
- NX二次开发-UFUN修改当前导出CGM文件选项设置UF_CGM_set_session_export_options
		文章转载自唐康林NX二次开发论坛,原文出处: http://www.nxopen.cn/thread-126-1-1.html 刚才有同学问到这个问题,如果是用NXOpen来做,直接录制一下就可以了: ... 
- NX二次开发-使用NXOPEN C++向导模板做二次开发
		版本 NX9+VS2012 1.怎么往VS软件里添加VC,C#,VB向导模板 先到NX安装目录下UGOPEN文件夹里找到这三个文件夹 拷贝到VS的安装目录下 这里有几个注意事项,VS2017,VS20 ... 
- NX二次开发-UFUN计算两点距离UF_VEC3_distance
		NX11+VS2013 #include <uf.h> #include <uf_curve.h> #include <uf_vec.h> UF_initializ ... 
随机推荐
- php上传文件(简易版)
			1.前台form表单处添加 enctype="multipart/form-data" 2. //上传文件保存到目录 header("content-type:text/ ... 
- 【TCP】SYN攻击
			TCP握手协议 在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接.第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确 ... 
- Yii2高级模板的安装
			1.通过composer 安装高级版 C:wampwwwyii>composer create-project --prefer-dist yiisoft/yii2-app-advanced a ... 
- CSS3 @media 查询(制作响应式布局)
			这里简单说明一下@media 查询. 详细说明文档:http://www.runoob.com/cssref/css3-pr-mediaquery.html 使用 @media 查询,你可以针对不同的 ... 
- 【LeetCode 9】回文数
			题目链接 [题解] 还是要注意,取反的时候,-2^31 取反的话会爆掉Int..(因为int的正数最多到2^31-1) [代码] class Solution { public: bool isPal ... 
- BulkLoad加载本地文件到HBase表
			BulkLoad加载文件到HBase表 1.功能 将本地数据导入到HBase中 2.原理 BulkLoad会将tsv/csv格式的文件编程hfile文件,然后再进行数据的导入,这样可以避免大量数据导入 ... 
- CSS:CSS 布局 - 水平 & 垂直对齐
			ylbtech-CSS:CSS 布局 - 水平 & 垂直对齐 1.返回顶部 1. CSS 布局 - 水平 & 垂直对齐 水平 & 垂直居中对齐 元素居中对齐 要水平居中对齐一个 ... 
- springBoot使用PageHelper当超过最大页数后仍然返回数据
			在SpringBoot中使用PageHelper分页插件时,如果设置pagehelper.reasonable=true时,pageNum<=0 时会查询第一页, pageNum>page ... 
- Codeforces 1173B  Nauuo and Chess
			题目链接:http://codeforces.com/problemset/problem/1173/B 思路参考:https://www.cnblogs.com/blowhail/p/1099123 ... 
- ubuntu 搭建嵌入式开发环境tftp的方法
			网上很多安装的时候都要安装tftpd-hpa tftp-hpa xinetd三个安装包,经我测试,xinetd无需安装,安装好前两个后,修改tftpd-hpa的配置文件即可:etc/default/t ... 
