基于 C++ 的 UG/NX 二次开发环境配置

参考链接,原文更详细:基于 C++ 的 UG/NX 二次开发环境配置

一、配置 Visual Studio

1.1 拷贝 VB、VC、VC

打开NX安装目录下的C:\Program Files\Siemens\NX1926\UGOPEN\vs_files ,里面有三个文件VB、VC、VC# ,如下图所示,右键复制下来。

打开Visual Studio的安装目录D:\ Program Files (x86)\Microsoft VisualStudio\2019\Community ,里面也有**VB、VC、VC#三个文件,在空白处粘贴,之前复制的三个文件会和这个目录下的 VB、VC、VC#**进行合并,如下图所示。

勾选"为所有当前项目执行此操作 ",点击"继续 "

1.2 修改 VC 中的 NXOpenCPP.vsz 和 NXOpen.vsz 版本号

用记事本/Notepad++打开文件夹
D:\ Program Files (x86)\Microsoft VisualStudio\2019\Community\VC\vcprojects

中的NXOpenCPP.vsz和NXOpen.vsz文件,将其中的版本号修改为16.0,然后保存,如下图所示。

根据VS版本不同,修改值可参照下表
修改情况如下图所示:

1.3 修改 VB 中的 NXOpen_VB.vsz 版本号

同理将D:\ Program Files (x86)\Microsoft VisualStudio\2019\Community\VB\vcprojects 文件夹下的NXOpen_VB.vsz文件的版本号也修改为16.0

1.4 修改 VC# 中的 NXOpen_VB.vsz 版本号

同理将D:\VisualStudio\2022\Community\VC#\CSharpProjects文件夹下的NXOpen_VCS.vsz文件的版本号也修改为17.0

1.5 修改 IDE/VC 中的 NXOpenCPP.vsz 和 NXOpen.vsz 版本号

将 NX 安装目录 C:\Program Files\Siemens\NX1926\UGOPEN\vs_files 里面的VC文件右键复制下来,然后粘贴到路径 D:\ Program Files (x86)\Microsoft VisualStudio\2019\Community\Common7\IDE

并同样修改D:\ Program Files (x86)\Microsoft VisualStudio\2019\Community\Common7\IDE\VC\vcprojects 里面的NXOpenCPP.vsz和NXOpen.vsz文件的版本号16.0

1.6 模板向导测试

到这里,打开Visual Studio,创建 VC 项目时就会看到模板向导选项,如下图所示。点击"创建新项目(N)"

选择"NXOpen C++ Wicard",点击"下一步"

点击创建

出现NXOpenCPP Wizard向导界面,说明已经安装成功。

二、添加环境变量

添加环境变量的目的是:NX 在启动后会自动加载我们设置的用户目录,读取里面的菜单文件和动态链接库文件等,从而实现二次开发的功能。

我就是在K盘建立了一个UG_613文件夹,在文件夹下再新建startup和application两个文件夹。

接下来添加环境变量,在搜索栏直接搜索环境变量,点击环境变量

点击"系统变量(S)"下的"新建",变量名设为UG_OPEN_USER_DIR ,变量值设为刚刚新建的那个文件夹,我这里是K:\UG_613 ,然后点击确定,环境变量就添加好了。

三、测试

接下来做一个简单的测试,实现一个方块block的创建。

在之前建立的文件夹K:\UG_613\startup下新建一个menu.men文件

用记事本或Notepad++打开,添加以下内容:

cpp 复制代码
VERSION 120
EDIT UG_GATEWAY_MAIN_MENUBAR

AFTER UG_HELP
	CASCADE_BUTTON MyTOOLS
	LABEL MyTools
END_OF_AFTER

MENU MyTOOLS
	BUTTON MyTOOLS_BUTTON1
	LABEL create_block
	BITMAP block
	ACTIONS create_block.dll
END_OF_MENU

打开Visual Studio,选择"创建新项目(N)",选择"NXOpen C++ Wizard",点击"下一步":

置项目名称"NXOpenCPP_Wizard_613TEST",保存位置为"K:\UG_613\projects**"

在NXOpenCPP Wizard向导页面中,选择"Finish"

打开
NXOpenCPP_Wizard_613TEST.cpp**文件,在头文件处加一行代码

cpp 复制代码
#include <uf_modl_primitives.h>

然后找到do_it()函数,在do_it()函数中添加如下代码:

cpp 复制代码
void MyClass::do_it()
{

	// TODO: add your code here
	//将以下代码复制到你的do_it()函数中
	UF_initialize();
	double origin[3] = { 0.0, 0.0, 0.0 };
	char * edge_len[3] = { "40", "60", "80" };
	tag_t blk_obj_id = NULL_TAG;
	UF_MODL_create_block1(UF_NULLSIGN, origin, edge_len, &blk_obj_id);
	UF_terminate();
}

点击"解决方案'NXOpenCPP_Wizard_613TES',右键,选择"生成解决方案(B)"

生成成功

会在该项目路径K:\UG_613\projects\NXOpenCPP_Wizard_613TEST\x64\Debug 下生成一个NXOpenCPP_Wizard_613TEST.dll 文件,将该.dll文件复制到二次开发目录K:\UG_613\application 下,如图所示:

打开NX软件,点击左上角的文件,选择"新建",

文件名为613test_model.prt点击"确定"

即可得到如下界面

Ctrl+U打开上一步生成的DLL文件(NXOpenCPP_Wizard_613TEST.dll.dll)。

NX 会执行此动态库中的入口函数ufusr

在 NX 建模工作区中生成一个长方体。

相关推荐
SimpleLearingAI2 小时前
C++虚函数详解
开发语言·c++
小柯博客2 小时前
STM32MP2安全启动技术深度解析
c语言·c++·stm32·嵌入式硬件·安全·开源·github
cpp_25012 小时前
P1832 A+B Problem(再升级)
数据结构·c++·算法·动态规划·题解·洛谷·背包dp
结衣结衣.3 小时前
手把手教你实现文档搜索引擎
linux·c++·搜索引擎·开源·c++11
t***5443 小时前
如何在 Dev-C++ 中切换编译器
java·开发语言·c++
大肥羊学校懒羊羊3 小时前
完数与盈数的计算题解
数据结构·c++·算法
澈2073 小时前
构造函数与析构函数完全指南
开发语言·c++
W23035765733 小时前
C++ 高并发线程池实战(二):动态缓存线程池 + 调用者运行拒绝策略完整版实现
开发语言·c++·缓存
t***5444 小时前
如何在 Dev-C++ 中使用 Clang 编译器
开发语言·c++