当前位置: 首页 > article >正文

UG NX二次开发(C++)-用UF_OBJ_cycle_objs_in_part遍历对象

文章目录

  • 1、前言
  • 2、在UG NX中创建多个体
  • 3、创建UF_OBJ_cycle_objs_in_part的使用函数
    • 3.1 首先声明函数:
    • 3.2定义函数代码
    • 3.3 函数调用代码
    • 3.4 测试结果


1、前言

UG NX二次开发中,比如体、面、边等,在NXOpen中可以通过Collection来实现,但是采用遍历对象的方式也能实现,这就要需要UF_OBJ_cycle_objs_in_part的函数。本文就介绍一下这个方法的使用。

2、在UG NX中创建多个体

打开UG NX软件,在UG NX视图区创建多个特征,如下图所示:
在这里插入图片描述

这个三维模型中,包含了三个长方体和三个圆柱体。

3、创建UF_OBJ_cycle_objs_in_part的使用函数

3.1 首先声明函数:

void GetAllNXObjectsByUFun(int type,int *count,std::vector<Body*>*bodies);

3.2定义函数代码

void UFModel::GetAllNXObjectsByUFun(int type, int *count, std::vector<Body*>* bodies)
		{
			*count= 0;
			tag_t solidTag = NULL_TAG;		
			int num = 0;
			workPart = theSession->Parts()->Work();
			bodies->clear();		
			UF_OBJ_cycle_objs_in_part(workPart->Tag(),type,&solidTag);
			while (solidTag!=NULL_TAG)
			{
				int type1;
				int subType;

				UF_OBJ_ask_type_and_subtype(solidTag, &type1, &subType);
				if (type1 == UF_solid_type)
				{
					if (subType == UF_solid_body_subtype)
					{
						num++;
						NXObject* nXObject(dynamic_cast<NXObject*>(NXObjectManager::Get(solidTag)));
						Body* body(dynamic_cast<Body*>(workPart->Bodies()->FindObject(nXObject->JournalIdentifier())));
						bodies->push_back(body);
					}
				}
				solidTag = UF_OBJ_cycle_all(workPart->Tag(), solidTag);
			}	
			*count = num;
		}

3.3 函数调用代码

void UFModel::do_it()
		{
			
			int type = UF_solid_type;
			int count = 0;
			std::vector<Body*>bodies;

			GetAllNXObjectsByUFun(type,&count,&bodies);
			lw->Open();
			for (int i = 0; i < bodies.size(); i++) {

				Body *body = bodies[i];
				char st1[133];
				int tagInt = (int)body->Tag();
					sprintf_s(st1,"%d获取的体JournalIdentifier = %s\n",i, body->JournalIdentifier().GetLocaleText());

				lw->WriteLine(st1);
			}		
		}

生成dll,并用NXOpen执行来测试:
在这里插入图片描述

3.4 测试结果

在这里插入图片描述
在这里插入图片描述

所有体对象都被读取出来了。


http://www.kler.cn/news/17663.html

相关文章:

  • 顺序表的基本操作(初始化,增,删,查,改等等)
  • 【c语言】字符串匹配(搜索) | API仿真
  • Nginx快速入门
  • I.MX6Q-SDB开发板移植ubuntu
  • MySQL5.7和MySQL8.0的区别是什么
  • 华为OD机试 - 优选核酸检测点(Python)
  • 操作系统(2.7)--进程
  • DAY 55 mysql数据库管理
  • 计算机专业还有前途吗?从业9年的程序员告诉你优缺点
  • MySQL知识学习04(MySQL事务隔离级别详解)
  • Elasticsearch --- 数据同步、集群
  • APP渗透—MobSF安全评估、frida、r0capture抓包
  • 倒排索引(Inverted Index)
  • Unity——Mirror学习(01)
  • c#笔记-运算符
  • 网卡丢失导致集群异常
  • Linux日志文件处理
  • 程序员找工作难吗?我用亲身经历来告诉大家
  • 基于哈希表的用户管理系统
  • 操作系统——存储管理方式
  • Python机器学习入门 -- 支持向量机学习笔记
  • 基于改进的离散PSO算法的FJSP的研究(Python代码实现)
  • 优秀的B树(B-Tree)文章索引
  • C++类的静态成员详解:成员函数非静态成员函数的非法调用
  • Java 版 spring cloud 工程系统管理 +二次开发 工程项目管理系统源码
  • axios使用笔记
  • 【五一创作】网络协议与攻击模拟-01-wireshark使用-捕获过滤器
  • 【学习笔记】「JOISC 2022 Day1」错误拼写
  • git 撤销add/commit,以及更换源命令
  • Unity VFX -- (4)创建burst粒子效果