UG NX二次开发(C++)-建模-修改NXObject或者Feature的颜色(二)

news2024/12/23 0:25:20

文章目录

  • 1、前言
  • 2、在UG NX中修改Body的颜色操作
  • 3、采用NXOpen(C++)实现
    • 3.1 创建修改对象颜色的方法
    • 3.2 在do_it()中添加调用的代码
    • 3.3 测试效果


1、前言

在UG NX中,改变NXObject和Feature的操作是不相同的,所以其二次开发的代码也不一样,我们上篇文章介绍一下修改特征的颜色,在这篇文章中介绍一下修改NXObject对象的颜色。

2、在UG NX中修改Body的颜色操作

我们仍然以长方体为例,如下图所示:
在这里插入图片描述
在过滤器中设置为:“实体”,默认情况下是选择的特征;
在这里插入图片描述
鼠标在视图区左键选择实体,然后点击右键:
在这里插入图片描述
选择“编辑显示”,弹出编辑显示的对话框
在这里插入图片描述
在颜色中点击颜色框,弹出颜色对话框;
在这里插入图片描述
在对象颜色对话框中,选择需要更改的颜色,点击“确定”
在这里插入图片描述
再点击“确定”,修改实体的颜色如下:
在这里插入图片描述

3、采用NXOpen(C++)实现

3.1 创建修改对象颜色的方法

void UFModel::ModifyNXObjectColor(NXOpen::NXObject* nXObject, int color)
		{			

			NXOpen::Session::UndoMarkId markId4;
			markId4 = theSession->SetUndoMark(NXOpen::Session::MarkVisibilityVisible, "Edit Object Display");

			NXOpen::DisplayModification* displayModification1;
			displayModification1 = theSession->DisplayManager()->NewDisplayModification();

			displayModification1->SetApplyToAllFaces(true);

			displayModification1->SetApplyToOwningParts(false);

			displayModification1->SetNewColor(color);

			std::vector<NXOpen::DisplayableObject*> objects1(1);	
			objects1[0] = dynamic_cast<NXOpen::DisplayableObject*> (nXObject);
			displayModification1->Apply(objects1);

			int nErrs1;
			nErrs1 = theSession->UpdateManager()->DoUpdate(markId4);

			delete displayModification1;
		}

3.2 在do_it()中添加调用的代码

void UFModel::do_it()
		{
			//TaggedObject* masked_obj = select_by_mask();
			//TaggedObject* typed_obj = select_by_type();
			std::vector< NXOpen::TaggedObject* > any_objs = select_any_objects();

			/*Point3d point3D;
			point3D.X = 0;
			point3D.Y = 0;
			point3D.Z = 0;
			char *length[] = {"100","100","100"};
			Body *body = nullptr;
			CreateBlock(&point3D,length,body);	*/


			//Point3d point3D1;
			//point3D1.X = 200;
			//point3D1.Y = 200;
			//point3D1.Z = 200;
			//char* length1[] = { "100","100","100" };
			//NXOpen::Body *body1 = nullptr;
			//CreateBlock1(point3D1, length1, body1);

			//std::vector<NXOpen::Body*>bodies;
			//bodies.push_back(body);
			//bodies.push_back(body1);

			//lw->Open();
			//lw->WriteLine("1111\n");
			//lw->WriteLine(body->JournalIdentifier().GetLocaleText());

			NXObject* nXObject = dynamic_cast<NXOpen::NXObject*>(any_objs[0]);
			Body* body(dynamic_cast<NXOpen::Body*>(workPart->Bodies()->FindObject(nXObject->JournalIdentifier())));
			NXOpen::Features::Feature* feature = body->GetFeatures()[0];

			//NXOpen::NXColor* color(workPart->Colors()->Find("Medium Orange"));
			//ModifyFeatureColor(feature,color);

			ModifyNXObjectColor(body, 108);
		}

3.3 测试效果

原始模型为:
在这里插入图片描述
调用dll
在这里插入图片描述
选择实体对象
在这里插入图片描述
在这里插入图片描述
修改颜色如下:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/484224.html

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

相关文章

企业级信息系统开发讲课笔记4.1 Spring Boot入门程序

文章目录 零、学习目标一、Spring Boot框架概述&#xff08;一&#xff09;由Spring到Spring Boot&#xff08;二&#xff09;Spring Boot框架的核心功能&#xff08;三&#xff09;Spring Boot框架的应用 二、使用Maven方式构建Spring Boot项目&#xff08;一&#xff09;创建…

二维字符数组的三种输入方式浅析(scanf()、gets()和fgets())

二维字符数组的输入 目录 二维字符数组的输入1.scanf函数知识点scanf()关于回车的问题&#xff1a; 2.gets函数3.fgets函数参考链接 1.scanf函数 知识点 按照常规输入数组的办法&#xff0c;通过 for 循环实现 将整个字符串输入时&#xff0c;在数组名前不加&&#xff0…

Java 基础进阶篇(二)—— static 静态关键字与单例模式

文章目录 一、static 静态关键字1.1 静态成员变量与实例成员变量1.2 静态成员方法与实例成员方法1.3 static 访问注意事项1.4 内存使用情况 二、工具类三、代码块四、单例模式4.1 饿汉单例4.2 懒汉单例 一、static 静态关键字 static&#xff1a;代表静态的意思&#xff0c;可…

Java 基础进阶篇(六)—— 接口详解

文章目录 一、接口概述二、接口的基本使用三、接口从 JDK 8 开始新增的方法四、接口的注意事项&#xff08;了解&#xff09;补充&#xff1a;接口与接口的关系 一、接口概述 规范的基本特征是约束和公开。 接口就是一种规范&#xff0c;其约束别人必须干什么事情。 所以&…

【五一创作】Matlab 绘制风速、风向统计玫瑰花图【优化】

在之前&#xff0c;有个博客专门讲matlab 绘制风速、风向统计玫瑰花图&#xff1b;这里面存在不少细节问题&#xff0c;目前对该部分代码做了优化。以前的博客链接见下&#xff1a; Matlab 绘制风速、风向统计玫瑰花图 最近接了一个任务&#xff0c;需要绘制风速、风向的统计玫…

Java 基础进阶篇(五)—— 抽象类与模板方法设计模式

文章目录 一、抽象类、抽象方法概述二、抽象类的特征三、模板方法设计模式3.1使用场景3.2 实现步骤3.3 写作文案例 补充&#xff1a;final 和 abstract 是什么关系? 一、抽象类、抽象方法概述 在 Java 中 abstract 是抽象的意思&#xff0c;可以修饰类、成员方法。 abstract …

Java 基础进阶篇(七)—— 面向对象三大特征之三:多态

文章目录 一、多态的概述二、多态中成员访问特点 ★三、多态的优势与劣势四、多态下的类型转换4.2 自动类型转换&#xff08;从子到父&#xff09;4.2 强制类型转换&#xff08;从父到子&#xff09;4.3 instanceof 关键字 一、多态的概述 多态&#xff1a;是指执行同一个行为…

Java 基础进阶篇(四)—— 权限修饰符、final 关键字与枚举

文章目录 一、权限修饰符二、final 关键字2.1 final 作用2.2 final 修饰变量举例2.3 常量 三、枚举3.1 枚举的格式3.2 枚举的特征3.3 枚举的应用 一、权限修饰符 权限修饰符 用于约束成员变量、构造器、方法等的访问范围。 权限修饰符&#xff1a; 有四种作用范围由小到大 (p…

Java 基础进阶篇(三)—— 面向对象的三大特征之二:继承

文章目录 一、继承概述二、内存运行原理 ★三、继承的特点四、继承后&#xff1a;成员变量和方法的访问特点五、继承后&#xff1a;方法重写六、继承后&#xff1a;子类构造器的特点七、继承后&#xff1a;子类构造器访问父类有参构造器八、this、super 总结 一、继承概述 Jav…

机器学习之利用SMO算法求解支持向量机—基于python

大家好&#xff0c;我是带我去滑雪&#xff01; 本期将讨论支持向量机的实现问题&#xff0c;我们知道支持向量机的学习问题可以化为求解凸二次规划问题。这样的凸二次规划问题具有全局最优解&#xff0c;并且有许多最优化算法可以用于这一问题的求解。但是当训练样本容量很大…

【C++】 探索程序 详细解读程序在运行过程中都发生了什么

目录 头文件-源代码 头文件重复包含 问题 解决方案 程序生成过程 预处理Preprocessi 编译Compilation 汇编Assembly 链接Linking 编译期-运行期 编译期确定 运行期确定 编译期错误 运行期错误 类和对象 宏 宏的其他用法 inline内联 头文件-源代码 头文件&…

Vue简介和常用指令

概述&#xff1a; MVVM思想&#xff1a;视图层数据和数据模型里面的数据发生变化都会影响到另一边的数据&#xff0c;通过ViewModel自动实现。 Vue入门案例 步骤&#xff1a; 上面提到了数据模型和试图层的数据是关联的&#xff0c;此处数据模型里面el的值就是选择了哪一个视…

jQuery引入----练习

jQuery引入----练习 html <!DOCTYPE html> <html><head><title>jQuery引入</title><!-- css样式引入 --><link rel"stylesheet" href"../css/a.css"><!-- jquery函数库引入 --><script type"tex…

Linux基础IO【深入理解文件系统】

✨个人主页&#xff1a; 北 海 &#x1f389;所属专栏&#xff1a; Linux学习之旅 &#x1f383;操作环境&#xff1a; CentOS 7.6 阿里云远程服务器 文章目录 &#x1f307;前言&#x1f3d9;️正文1、磁盘文件2、磁盘概念2.1、基本结构2.2、数据存储 3、磁盘信息3.1、分区意义…

【C++初阶】类与对象:6大默认成员函数------拷贝构造和赋值运算符重载

一.拷贝构造函数 A.概念 拷贝构造函数&#xff1a;只有单个形参&#xff0c;该形参是对本类类型对象的引用(一般常用const修饰)&#xff0c;在用已存在的类类型对象创建新对象时由编译器自动调用。 B.特性 1. 拷贝构造函数是构造函数的一个重载形式&#xff1b; 2. 拷贝构造函…

shell的基础学习二

文章目录 一、Shell 数组二、Shell 基本运算符三、Shell echo命令四、Shell printf 命令五、Shell test 命令总结 一、Shell 数组 数组中可以存放多个值。Bash Shell 只支持一维数组&#xff08;不支持多维数组&#xff09;&#xff0c;初始化时不需要定义数组大小&#xff08…

【五一创作】【Simulink】基于FCS-MPC的三相并网逆变器控制(Stateflow)

上次写了一篇【Simulink】基于FCS-MPC的三相并网逆变器控制&#xff08;Matlab Function&#xff09;&#xff0c;控制部分用 Matlab Function 写的&#xff0c;因实验室一般用 Stateflow&#xff0c;所以这篇把 Matlab Function 改成 Stateflow. 原理 电路原理图&#xff1a;…

如何批量查询快递的签收状态?

如果一次性网购大量快递&#xff0c;我们就得经常进入快递或网购平台查询物流&#xff0c;随时查看快递单号的物流状态。如果快递公司少&#xff0c;查询起来比较容易&#xff0c;但是如果快递公司很多&#xff0c;每次都要人工查询就是一件很麻烦的事情了。今天&#xff0c;小…

数据库相关知识

一.1 数据库 与Sybase不同&#xff0c;一个用户就对应于一个数据库。 create user CBMAIN identified by "sunline" default tablespace CBMAIN_DATA  -- 表空间 temporary tablespace CBMAIN_TEMP; -- 临时表空间 一.2 表空间 表空间由一个或多个物理文件组成&…

js使用splice方法删除数组元素可能导致的问题

splice() 方法通过删除或替换现有元素或者原地添加新的元素来修改数组&#xff0c;并以数组形式返回被修改的内容。此方法会改变原数组。 JavaScript 遍历数组并通过 splice 方法删除该数组符合某些条件的元素将会导致哪些问题&#xff1f; 导致的问题 当使用 splice 方法从 …