NX二次开发封装自己的函数及如何导入工程

news2024/9/24 13:18:32

目录

一、概述

二、函数封装

三、函数引用

四、案例——在NX中运行后输出“测试”两字


一、概述

        随着对NX二次开发的学习,我们在各种项目里面会积累很多函数,对于一些经常用到的函数,我们可以考虑将其封装为类库,以后在开发其他新建项目时,只需将我们自己的类库添加到项目中就可以马上使用,大大提高了开发的效率。由于本人不是计算机科班出身,函数的封装不一定好,但是语法逻辑没有问题,可以正常使用。注意:个人建议采用类+命名空间的(Namespace)的方式,避免与其他人封装的函数重复,产生错误;在NX二次开发中建议各模块分类封装。

二、函数封装

UserCustomTree.h

#pragma once//防止头文件重复被引用

#ifndef USERCUSTOMTREE_H  //防止重定义
#define USERCUSTOMTREE_H

#include <NXOpen/BlockStyler_Tree.hxx>//引入头文件
#include <NXOpen/BlockStyler_TreeListMenu.hxx>
#include <NXOpen/BlockStyler_Node.hxx>
#include <NXOpen/BlockStyler_UIBlock.hxx>
#include <NXOpen/BlockStyler_PropertyList.hxx>
#include "uf_ui.h"
#include "uf_ui_ugopen.h"

using namespace std;//命名空间
using namespace NXOpen;
using namespace NXOpen::BlockStyler;

namespace LiangFuns
{
	class UserCustomTree
	{
	public:
	
		//打印输出信息
		static void print();
		static void print(const std::string &, bool ISEnter = true);
		static void print(const char*, bool ISEnter = true);
		static void print(const int &, bool ISEnter = true);
		static void print(const double &, bool ISEnter = true);
	};
}


#endif

UserCustomTree.cpp

#include "UserCustomTree.h"

using namespace LiangFuns;


void UserCustomTree::print()
{
	logical response = 0;
	UF_UI_is_listing_window_open(&response);
	if (!response) UF_UI_open_listing_window();
	UF_UI_write_listing_window("\n");
}
void UserCustomTree::print(const std::string &msg, bool ISEnter)
{
	logical response = 0;
	UF_UI_is_listing_window_open(&response);
	if (!response) UF_UI_open_listing_window();
	UF_UI_write_listing_window(msg.c_str());
	if (ISEnter) UF_UI_write_listing_window("\n");
}
void UserCustomTree::print(const char * msg, bool ISEnter)
{
	logical response = 0;
	UF_UI_is_listing_window_open(&response);
	if (!response) UF_UI_open_listing_window();
	UF_UI_write_listing_window(msg);
	if (ISEnter) UF_UI_write_listing_window("\n");
}
void UserCustomTree::print(const int &i, bool ISEnter)
{
	char msg[50];
	sprintf(msg, "%d", i);
	logical response = 0;
	UF_UI_is_listing_window_open(&response);
	if (!response) UF_UI_open_listing_window();
	UF_UI_write_listing_window(msg);
	if (ISEnter) UF_UI_write_listing_window("\n");
}
void UserCustomTree::print(const double &d, bool ISEnter)
{
	char msg[50];
	sprintf(msg, "%f", d);
	logical response = 0;
	UF_UI_is_listing_window_open(&response);
	if (!response) UF_UI_open_listing_window();
	UF_UI_write_listing_window(msg);
	if (ISEnter) UF_UI_write_listing_window("\n");
}

三、函数引用

1、更改配置为所有配置;字符集改为多字符集;添加封装函数路径至附加包含目录。如图1,2,3所示。

图1 修改配置选项

图2 添加包含目录

图3 修改字符集

2、将封装好的.h和.cpp导入到创建的筛选器中

图4 创建筛选器

3、在要引用的项目中添加#include "UserCustomTree.h"头文件

四、案例——在NX中运行后输出“测试”两字

//用户定义
#include "UserCustomTree.h"

using namespace LiangFuns;

void MyClass::do_it()
{

	// TODO: add your code here
	UserCustomTree::print("测试",1);
}

结果如下图5所示:

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

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

相关文章

从请购到结算,轻松搞定!云迈ERP系统助力企业采购管理全流程!

​在企业的运营过程中&#xff0c;采购管理是至关重要的环节之一。为了确保采购流程的顺畅和高效&#xff0c;许多企业选择引入ERP&#xff08;企业资源规划&#xff09;系统来进行采购管理。那么erp系统中的采购管理都有哪些功能呢&#xff1f; 云迈erp系统中的采购管理模块&a…

虚拟机下载docker

一&#xff0c;Docker简介 百科说&#xff1a;Docker 是一个开源的应用容器引擎&#xff0c;让开发者可以打包他们的应用以及依赖包到一个可移植的容器中&#xff0c;然后发布到任何流行的Linux机器上&#xff0c;也可以实现虚拟化&#xff0c;容器是完全使用沙箱机制&#xff…

大数据导论(2)---大数据与云计算、物联网、人工智能

文章目录 1. 云计算1.1 云计算概念1.2 云计算的服务模式和类型1.3 云计算的数据中心与应用 2. 物联网2.1 物联网的概念和关键技术2.2 物联网的应用和产业2.3 大数据与云计算、物联网的关系 1. 云计算 1.1 云计算概念 1. 首先从商业角度给云计算下一个定义&#xff1a;通过网络…

第二次作业+第三次作业

第二次作业第三次作业 第二次作业 题目&#xff1a; 网站需求&#xff1a; ​ 1.基于域名[www.openlab.com](http://www.openlab.com)可以访问网站内容为 welcome to openlab!!! 2.给该公司创建三个子界面分别显示学生信息&#xff0c;教学资料和缴费网站&#xff0c;基于[ww…

Oracle架构_数据库底层原理、机制 (授人以渔)

目录 系统全局区SGA 高速缓存缓冲区(数据库缓冲区) 日志缓冲区 共享池 其他结构 用户连接进程 用户进程User Process Server Process服务进程 程序全局区PGA Oracle的connect连接和session会话与User Process紧密相关 后台进程 数据库写入进程(DBWn) 检查点(CKPT)…

php isset和array_key_exists区别

在PHP中&#xff0c;可以使用array_key_exists函数或者isset函数来判断一个字典&#xff08;关联数组&#xff09;中是否存在某个下标。 使用 array_key_exists 函数: $myArray array("key1" > "value1", "key2" > "value2",…

PyTorch视觉工具箱:图像变换与上采样技术详解(1)

目录 Pytorch中Vision functions详解 pixel_shuffle 用途 用法 使用技巧 注意事项 参数 数学理论公式 示例代码及输出 pixel_unshuffle 用途 用法 使用技巧 注意事项 参数 数学理论公式 示例代码及输出 pad 用途 用法 使用技巧 注意事项 参数 示例代码…

Verilog基础:强度建模(二)

相关阅读 Verilog基础https://blog.csdn.net/weixin_45791458/category_12263729.html?spm1001.2014.3001.5482 三、拥有单个强度和确定值的net型信号的线与组合&#xff08;线网多驱动&#xff09; 首先来说明一下什么叫信号拥有单个强度和确定值&#xff0c;其实如果一个ne…

使用KTO进行更好、更便宜、更快速的LLM对齐

KTO全称为Kahneman-Tversky Optimisation&#xff0c;这种对齐方法使在我们的数据上对大型语言模型&#xff08;LLM&#xff09;进行对齐变得前所未有地容易和便宜&#xff0c;而且不会损害性能。大型语言模型的成功在很大程度上得益于与人类反馈的对齐。如果ChatGPT曾经拒绝回…

禅道使用教程

禅道的使用 一.禅道的使用1.添加部门和批量添加用户2.以产品经理的身份登录进行使用和操作2.1创建产品2.2创建模块2.3添加产品计划2.4添加产品需求2.5创建项目2.6设置团队 3.项目经理使用禅道3.1关联需求3.2批量分解,给人员分配任务3.3假设项目完成开发,项目经理创建版本 4.测试…

《数字图像处理-OpenCV/Python》连载:傅里叶变换与频域滤波

《数字图像处理-OpenCV/Python》连载&#xff1a;空间滤波之高斯滤波器 本书京东 优惠购书链接 https://item.jd.com/14098452.html 本书CSDN 独家连载专栏 https://blog.csdn.net/youcans/category_12418787.html 第 11 章 傅里叶变换与频域滤波 空间图像滤波是图像与滤波器核…

根据基因名批量查找它的Uniprot编号

背景&#xff1a; 前几天老师交给我一个任务&#xff0c;给我一个基因列表&#xff0c;让我查找它们所编码的蛋白质的蛋白质序列。我上了一下uniprot数据库&#xff0c;发现这个任务可以分成两步&#xff1a; 找到这个基因在Uniprot数据库中所对应的蛋白质编码根据蛋白质编码…

街机模拟游戏逆向工程(HACKROM)教程:[12]68K汇编-程序流控制

在之前的文章中&#xff0c;我们测试过一些简短的一小段程序&#xff0c;这些程序都有一个共同的程序运行流程&#xff0c;就是一句一句地向下执行&#xff0c;比如&#xff1a; movea.l #$325, a0 * ↓move.b #$01, (a0) * ↓move.b #$02, $01(a…

【软件测试常见Bug清单】

软件测试中&#xff0c;bug的类型有很多种&#xff0c;比如&#xff1a;代码错误、界面优化、设计缺陷、需求补充和用户体验等&#xff1b; 一般情况下&#xff0c;需求补充和设计缺陷比较好区分&#xff0c;但是代码错误、界面优化和用户体验区分不是很明显&#xff1b; 下面…

主动轮廓——计算机视觉中的图像分割方法

​ 一、说明 简单来说&#xff0c;计算机视觉就是为计算机提供类似人类的视觉。作为人类&#xff0c;我们很容易识别任何物体。我们可以很容易地识别山丘、树木、土地、动物等&#xff0c;但计算机没有眼睛&#xff0c;也没有大脑&#xff0c;因此它很难识别任何图像。计算机只…

PostgreSQL 的对象层次

所有的数据库离开数据量来谈性能都是耍流氓。 就你那几万条的数据库&#xff0c;用啥都行&#xff0c;典型的就是怎么方便怎么来。 不过 PostgreSQL 上手确实比 MySQL 概念更多。 PostgreSQL 比 MySQL 多了一层。 PostgreSQL 是从PostgreSQL 是从 Database&#xff0c;到 S…

RK3568平台 LT9211转接芯片调试笔记

一.简介 龙讯LT9211是一个高性能转换器&#xff0c;支持MIPI LVDS TTL两两之间转换。 使用此款芯片大部分为MIPI与LVDS进行互相转换。 下图为LT9211的典型应用图&#xff1a; 二.LT9211原理图 三.车载显示器和摄像头系统 四.调试LT9211输出 MIPI数据 &#xff08;1&#xf…

【Linux install】Ubuntu和win双系统安装及可能遇到的所有问题

文章目录 1.前期准备1.1关闭快速启动和安全启动1.1.1 shell命令行进入BIOS1.1.2 windows设置中高级启动1.1.3 在开机时狂按某个键进入BIOS1.1.4 关闭Fast boot和Secure boot 1.2 制作启动盘1.3 划分磁盘空间1.3.1 查看目前的虚拟内存大小 2.开始安装2.1 使用启动盘启动2.1.1 法…

洛谷NOIP2002 普及组 选数 +NOIP1999普及组 回文数

两道日常的练习题&#xff0c;废话不多说&#xff0c;直接上题上代码&#xff1a; 这道题目的难点在于怎样去根据一个不同的k值&#xff0c;通过代码来实现将所有符合题目要求的数字相加并且不重复的功能。下面请看代码&#xff0c;会有详细的讲解&#xff1a; #include<io…

又聊代码重构

今天有幸和一位朋友聊了一下代码的重构。回来之后感觉不够尽兴&#xff0c;所以决定再来输出一篇。 代码来至于今天下午的提交。 重构是对代码的觉知和业务的逻辑的进一步归纳总结 只有开发者对代码的不断觉察和理解&#xff0c;才会产生重构代码的念头。因此&#xff0c;驱动…