本文通过举四个例子来告诉大家在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对象转换方法的更多相关文章

  1. NX二次开发-UFUN结合NXOPEN开发_常用代码模板

    hpp //头文件 #include <NXOpen/Part.hxx> #include <NXOpen/PartCollection.hxx> #include <N ...

  2. NX二次开发-UDO用户自定义对象(UFUN)【持续完善】

    每当提起UDO总是会让我想起大专毕业那会失业找工作,后来有个宝贵机会去了软件公司上班,拿到了我人生中的第一个NX二次开发项目,一个关于测量汽车前后左右摄像头的项目.当时那个项目就用到了UDO,对于只看 ...

  3. NX二次开发-UFUN发射线函数UF_MODL_trace_a_ray的用法

    今天是国庆节,放假休息懒得动,没有出去玩,在家研究一下发射线函数UF_MODL_trace_a_ray.小弟以前在软件公司混的时候,当时我做的那个项目就用到了UF_MODL_trace_a_ray,当 ...

  4. NX二次开发-UFUN将工程图转成CGM和PDF文件UF_CGM_export_cgm

    文章转载自唐康林NX二次开发论坛,原文出处: http://www.nxopen.cn/thread-126-1-1.html 刚才有同学问到这个问题,如果是用NXOpen来做,直接录制一下就可以了: ...

  5. NX二次开发-UFUN获取NX系统默认导出CGM的选项设置UF_CGM_ask_default_export_options

    文章转载自唐康林NX二次开发论坛,原文出处: http://www.nxopen.cn/thread-126-1-1.html 刚才有同学问到这个问题,如果是用NXOpen来做,直接录制一下就可以了: ...

  6. NX二次开发-UFUN获取当前导出CGM选项设置UF_CGM_ask_session_export_options

    文章转载自唐康林NX二次开发论坛,原文出处: http://www.nxopen.cn/thread-126-1-1.html 刚才有同学问到这个问题,如果是用NXOpen来做,直接录制一下就可以了: ...

  7. NX二次开发-UFUN修改当前导出CGM文件选项设置UF_CGM_set_session_export_options

    文章转载自唐康林NX二次开发论坛,原文出处: http://www.nxopen.cn/thread-126-1-1.html 刚才有同学问到这个问题,如果是用NXOpen来做,直接录制一下就可以了: ...

  8. NX二次开发-使用NXOPEN C++向导模板做二次开发

    版本 NX9+VS2012 1.怎么往VS软件里添加VC,C#,VB向导模板 先到NX安装目录下UGOPEN文件夹里找到这三个文件夹 拷贝到VS的安装目录下 这里有几个注意事项,VS2017,VS20 ...

  9. NX二次开发-UFUN计算两点距离UF_VEC3_distance

    NX11+VS2013 #include <uf.h> #include <uf_curve.h> #include <uf_vec.h> UF_initializ ...

随机推荐

  1. Internet History 课程笔记

    课程地址:https://www.coursera.org/learn/internet-history 科学|上网可解决视频加载不出来的问题 Week 1 High Stakes Research ...

  2. linux给用户赋予root权限

    1.到/etc目录下 2.使用 vi sudoers 3.将username添加到sudoers

  3. PHP ftp_delete() 函数

    定义和用法 ftp_delete() 函数删除 FTP 服务器上的一个文件. 如果成功,该函数返回 TRUE.如果失败,则返回 FALSE 和一个警告. 语法 ftp_delete(ftp_conne ...

  4. 基础课(一)Cisco Packet Tracer Student模拟器简单的运用

    一.相同设备之间用交叉线,不同设备之间用直通线 如上图中的简单的两个PC机相连,交叉线相连的两个PC机是能ping同,直通线相连的两台PC机不通,ipconfig可以查看本机设备的网络配置 time= ...

  5. iptables对请求的URL作IP访问控制

    服务器运行环境是Tomcat,现在要实现的目的是,只允许特定的IP访问某个目录,一种方法是在tomcat配置文件server.conf中,使用RemoteAddrValve对虚拟主机做访问控制.另外一 ...

  6. PHP base64_decode+gzinflate压缩和解密代码图文教程

    今天碰到的这个问题,是我在更换一个WP主题是遇到.目前的情况如下,我想要把如下的超链接去掉,后台代码找到了在sidebar1.php文件中. 打开此文件发现是一长串的字符: 经过百度.google后, ...

  7. php中如何实现多进程

    php中如何实现多进程 一.总结 一句话总结: php多进程需要pcntl,posix扩展支持 可以通过 php - m 查看,没安装的话需要重新编译php,加上参数--enable-pcntl,po ...

  8. 架构-软件系统体系结构-B/S架构:B/S架构

    ylbtech-架构-软件系统体系结构-B/S架构:B/S架构 B/S架构即浏览器和服务器架构模式.它是随着Internet技术的兴起,对C/S架构的一种变化或者改进的架构.在这种架构下,用户工作界面 ...

  9. Python 工匠

    https://github.com/piglei/one-python-craftsman/blob/master/zh_CN/7-two-tips-on-loop-writing.md

  10. CSP2019总结

    CSP2019总结 前言 赛前停课集训了两个星期,自认为已经准备充分了,结果... 不知道有没有写挂分,即使一分没挂,满打满算也只有400出头,还是太菜了. Day0 晚上复习了一会,打了会游戏就睡了 ...