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

news2024/9/28 5:50:14

文章目录

  • 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.coloradmin.cn/o/486386.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

华硕ROG|玩家国度冰刃6双屏GX650RX Windows11原厂预装系统 工厂模式恢复安装带ASUSRecevory一键还原

华硕ROG|玩家国度 冰刃6双屏 GX650RX Windows11原厂预装系统 工厂模式恢复安装带ASUSRecevory一键还原 文件地址&#xff1a;https://pan.baidu.com/s/1snKOsH3OMl3GZLqeAf-GLA?pwd8888 华硕工厂恢复系统 &#xff0c;安装结束后带隐藏分区以及机器所有驱动软件 需准备一个…

【告警通知】Java项目统一异常捕获处理【钉钉告警推送消息】

基础描述 在实际业务中&#xff0c;很多时候都是被动获取系统业务异常&#xff0c;如通过业务部门或者通过客户反馈说某个功能不行时&#xff0c;这样显得系统很被动和呆板在SpringBoot中有统一异常处理可以来实现&#xff0c;当我们检测到非业务异常时&#xff0c;比如空指针…

《SpringBoot中间件设计与实战》第2章 服务治理,超时熔断

需求背景 在流量较大的场景下,举个例子,用户在电商平台下单后开始跳转到在线收银台进行支付。由于支付渠道和网络环境随时都有可能发生问题,那么你该怎么保证支付系统的可靠性呢? 保证支付系统的可靠性需要考虑的点非常多,但这里有一个最直接和重点的内容就支付响应时长…

【王道·计算机网络】第三章 数据链路层【未完】

一、功能 研究思想&#xff1a;水平方向个数据链路层的差距 1.1 数据链路层基本概念 结点&#xff1a;主机、路由器链路&#xff1a;网络中两个节点之间的物理通道&#xff0c;传输介质包含&#xff1a;双绞线、光纤、微波。分为&#xff1a;有线链路、无线链路数据链路&…

TIM输入不捕获-STM32

TIM输入不捕获-STM32 IC(Input Capture) 输入捕获 输入捕获模式下&#xff0c;当通道输入引脚出现指定电平跳变时&#xff0c;当前CNT的值将被锁存到CCR中&#xff0c;可用于测量PWM波形的频率、占空比、脉冲间隔、电平持续时间等参数 每个高级定时器和通用定时器都拥有4个输入…

【Linux】进程学习(2)---理解进程操作

文章目录 查看进程通过系统目录查看通过ps命令查看 通过系统调用获取进程标识符通过系统调用创建进程初识fork函数fork函数的返回值 进程状态阻塞与运行状态Linux内核源码中的进程状态运行状态-R浅度睡眠状态-S深度睡眠状态-D暂停状态-T僵尸状态-Z死亡状态-X 查看进程 通过系统…

操作系统引导(开机过程)

操作系统安装在C盘中&#xff0c;其一步步启动的过程如下&#xff1a; 操作系统要启动&#xff0c;操作系统的数据需要先被放入主存里。 如图所示&#xff0c;计算机的主存由RAM和ROM组成&#xff0c;ROM芯片被集成在电脑主板上&#xff0c;里面存储的是BIOS&#xff08;Basic…

【组合数学算贡献+枚举】CF816div2 C. Monoblock

题解都看了半天才懂 Problem - C - Codeforces 题意&#xff1a; 思路&#xff1a; 一开始的思路是这样的&#xff1a; 只能说&#xff0c;想到了更换枚举对象&#xff0c;然后组合数学算贡献 也想到了修改操作与&#xff08;a[i]和a[i-1]&#xff09;有关 但是我想的是枚…

在Linux上搭建gitlab以及自动化编译部署的完整流程

一、安装gitlab 首先下载gitlab的安装包&#xff0c;地址如下&#xff1a; https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/ubuntu/pool/bionic/main/g/gitlab-ce/ 然后安装下载的包即可&#xff0c;一般还需要安装openssh-server等依赖包&#xff0c;在安装gitlab包之前可以…

【MongoDB】二、MongoDB数据库的基本操作

【MongoDB】二、MongoDB数据库的基本操作 实验目的实验内容任务一&#xff1a;&#xff08;1&#xff09;创建数据库newdb&#xff08;2&#xff09;在数据库newdb中创建集合mycollection&#xff08;3&#xff09;在集合mycollection中插入以下数据&#xff1a;&#xff08;4&…

如何安装 Auto GPT 4:分步指南

动动发财的小手&#xff0c;点个赞吧&#xff01; 您对尝试最新最好的文本生成技术感到兴奋吗&#xff1f; Auto GPT 4 因其令人印象深刻的功能而广为人知&#xff0c;但启动和运行它似乎令人望而生畏。幸运的是&#xff0c;我们在这里[1]提供安装 Auto GPT 4 的分步指南。 1. …

快手sig3 48位-unidbg

研究某手app的小伙伴都了解sig3有两个版本&#xff0c;低版本的是42位&#xff0c;高版本的48位。 废话不多说&#xff0c;先抓个包&#xff1a; 上一个当前最新版本的48位sig3&#xff0c;我们以搜索接口为例&#xff0c;效果如图&#xff1a; 在上面可以看到使用unidbg的方式…

【深度学习】计算机视觉(11)——Faster RCNN(工具篇)

文章目录 1 gcc编译报错1.1 错误提示“ld: cannot find -lm/-lc/-lpthread”1.2 解决方法&#xff1a;安装glibc工具1.3 解决方法&#xff1a;修改sources.list1.4 解决方法&#xff1a;软连接 2 Permission denied3 运行报错3.1 module tensorflow has no attribute 3.2 No mo…

火山 xl,xa,xg,xk,xh,xm 六神签名参数

火山 xl,xa,xg,xk,xh,xm 六神签名参数 27/100 发布文章 weixin_38819889 未选择任何文件 new 纯属技术研究&#xff0c;如有侵权&#xff0c;请联系删除。 抓个包&#xff0c;在火山最新的15.6版本中&#xff0c;已经新增加了2个参数x-helios&#xff0c;x-medusa 前段时间do…

IDEA Java 第一个mybatis入门程序

文章目录 准备mysql 开始新建maven项目maven添加引用mybatis配置文件工具类创建实例类添加mappermappermapper.xml 测试类 发现问题org.apache.ibatis.binding.BindingException: Type interface com.cpyy.mapper.UserMapper is not known to the MapperRegistry.The error may…

[计算机图形学]动画与模拟:欧拉方法、刚体与流体(前瞻预习/复习回顾)

一、前言 这是本专栏的倒数第二篇文章了&#xff0c;为什么不是最后一篇&#xff1f;因为我要单独写一篇总结哈哈&#xff0c;不管怎么说&#xff0c;从今年的3.13的MVP变换开始写&#xff0c;写到现在&#xff0c;也是一个很大的工程了&#xff0c;我很高兴能在大二下学期的期…

使用ffmpeg拼接两张图片

最近在工作中遇到了一个需求&#xff0c;就是需要将两张图片拼接在一起&#xff0c;作为一个封面图。如果只是临时拼接一张&#xff0c;我们可以只用photoshop之类的图片编辑工具&#xff0c;将两张图片拼接在一起。而我们的需要是需要实现自动化&#xff0c;由于之前使用过ffm…

KALI入门到高级【第六章】

预计更新第一章 入门 1.1 什么是Kali Linux&#xff1f; 1.2 安装Kali Linux 1.3 Kali Linux桌面环境介绍 1.4 基本命令和工具 第二章 信息收集 1.1 网络扫描 1.2 端口扫描 1.3 漏洞扫描 1.4 社交工程学 第三章 攻击和渗透测试 1.1 密码破解 1.2 暴力破解 1.3 漏洞利用 1.4 特…

Linux网络编程:基础知识

1. MAC地址和IP地址 IPV4&#xff1a;32位&#xff1b;8B 4 32bit IPV6:128位&#xff1b;4B 32 128bit&#xff0c;图中IPV6补全为&#xff1a;fe80:0000:0000:0000:6e3f:77c3:ceca:b5a7 MAC&#xff1a;48位; 4B 12 48bit (图中IPV6和MAC地址使用的16进制表示法&a…

QTDAY4

定时闹钟 widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QTimer> //定时器类 #include <QTime> //时间类 #include <QTimerEvent> //定时器事件类 #include <QDateTime> //日期时间类 #include <QText…