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 ...
随机推荐
- mutable and immutable
employees = ['Corey', 'John', 'Rick', 'Steve', 'Carl', 'Adam'] output = '<ul>\n' for employee ...
- Final 可重入锁 安全发布
无状态对象(既不包含任何域,也不包含任何其他类中域的引用)一定是线程安全的. Final fianl域是不能修改的(但如果final域所引用的对象是可变的,那么这些被引用的对象是可变的) 除非需要可变 ...
- PHP ftp_close() 函数
定义和用法 ftp_close() 函数关闭 FTP 连接. 语法 ftp_close(ftp_connection) 参数 描述 ftp_connection 必需.规定要关闭的 FTP 连接. 实 ...
- 强制位(set uid和set gid)与冒险位(sticky)的作用都有什么
1.set uid(强制位) 只能对文件进行设置 通过对文件设置uid可以使非文件拥有者或文件所属群组的用户具有执行该文件的权限. 例如ping,默认情况下所有用户都可以使用此命令,但当我们查看pin ...
- Github上发布托管和下载
打包托管 远程下载安装 git clone https://github/2008nmj/mnist_python 使用git工具和命令行 Git使用场景 (可以不用上传到托管平台) 写论文 分工合作 ...
- http://elasticsearch-py.readthedocs.io/en/master/api.html
API Documentation All the API calls map the raw REST api as closely as possible, including the disti ...
- Peer模式的多线程程序例子
Peer模式的多线程程序例子 程序的模型大概是这样的.有一个master(),用来分发任务.有N个多线程的slave用来处理任务. 主程序里可以这样调用: 可以看出,上面这段程序还是依赖于Proces ...
- python爬虫 mac下安装使用Fiddler
HTTP代理工具Fiddler Fiddler是一款强大Web调试工具,它能记录所有客户端和服务器的HTTP请求. Getting started 在安装之前需要准备Mono环境 If you don ...
- 关于命令ride.py打不开RF,而是打开pycharm编辑器问题解决思路
自从用RF工具做自动化测试以来,碰到过三次标题中的问题.头两次问别人解决了,第三次就自己动手解决,并记录下来. 第一次碰到这个问题,以为问题很小,没有放在心上,同事帮忙弄出来了. 别人帮忙弄的,记忆力 ...
- 【转】java使用java.lang.management监视和管理 Java 虚拟机
原文地址:https://blog.csdn.net/zhongweijian/article/details/7619383 软件包 java.lang.management 提供管理接口,用于监视 ...