基于Visual Studio 2019 和UG12.0的二次开发环境配置

一、前言

本人在最近课题研究之中需要对UG进行开发,实现建模的自动化操作,来验证理论模型。UG提供了强大的API接口模板以供使用者进行二次开发,其中包含VB/C/C++等语言,本文主要用C++对UG进行二次开发。在开发之前需要对二次开发环境进行搭建。本文仅用于经验分享,也欢迎大家前来交流~

二、开发环境搭建

2.1 准备工作

在电脑中提前安装好UG和Visual Studio。本文以Visual Studio 2019 和UG12.0为例。

2.2 配置步骤

废话不多说,我们直接开始配置二次开发环境:

(1)复制UG安装目录中UGOPEN/vs_files文件夹中的VB、VC、VC#三个文件。

(2)粘贴至Visual studio安装目录中。注意:Visual studio根目录本身就存在VB、VC、VC#三个文件,直接粘贴合并即可

(3)复制UG安装目录中UGOPEN/vs_files文件夹中的VC文件,粘贴至Visual studio安装目录Commons7/IDE文件夹中

此步操作的目的是:在进行第2步操作之后,打开Visual studio创建新项目时只有C#和VB两个模板。而真正的VC文件位于Visual studio安装目录Commons7/IDE文件夹中。

(4)将第2步和第3步中分别对应的 VC\vcprojects文件夹中的NX11_NXOpenCPP.vszNX11_Open.vsz进行版本号修改。这里2019版本号用16.0即可。

(5)创建C++项目

出现此向导证明创建成功

补充说明:发生脚本错误处理方法

如果在创建C++模板时出现如上脚本错误,按照如下步骤解决:

打开D:\Visual_studio_RD\VC\VCWizards\NX12_NXOpenCPP\html\1033路径。

依次在三个文件中:把strURL += "1033";这一行注释掉,把它上一行strURL += window.external.GetHostLocale();取消注释。然后查找下一个1033,做同样的修改。每个.htm文件都有两处需要修改。如果是2019版本,则这两行均不要注释(\\)。

再将D:\Visual_studio_RD\VC\VCWizards\NX12_NXOpenCPP\html\1033里面的三个.htm文件做同样的修改,然后打开Visual Studio就可以正常地创建向导了!

(6)环境变量配置

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

在自己常用的盘中创建名为UGOPEN的文件夹,本文实在D盘创建的,位置可根据自己使用方便进行随意创建。

NXOPEN下再新建 startup 和 application 两个文件夹。startup文件夹用来存放菜单文件,application文件夹用来存放对话框文件.dlx和动态链接库文件.dll。

在此电脑上右键 -> 属性 -> 高级系统设置 -> 高级 -> 环境变量 -> 新建系统变量,变量名设为UGII_USER_DIR,变量值设为刚刚新建的那个文件夹,我这里是D:\UG_VS_OPEN_RD\UGOPEN,然后点击确定,环境变量就添加好了。

添加环境变量后打开UG安装根目录中UGLL\menus文件夹中的custom_durs.dat文件。

在文件末尾加入环境变量:UGII_USER_DIR=D:\UG_VS_OPEN_RD\UGOPEN

此步的目的是为了用menuscript脚本创建工具菜单栏。

至此开发环境已配置好

三、开发环境测试

新建一个模型,用以测试开发环境。

3.1 菜单创建

菜单脚本文件的扩展名为:*.men(文本文件)

在startup内创建一个后缀为.men的文本文件,根据一定的关键词编写menuscript脚本,例如:

VERSION  139

EDIT UG_GATEWAY_MAIN_MENUBAR

BEFORE UG_HELP (指菜单在HELP之前)

CASCADE_BUTTON  MYMENU (定义一个下拉菜单的按钮名称)

LABEL mymenutest (显示的按钮名字)

END_OF_BEFORE

MENU MYMENU (在菜单内添加子功能按钮)

BUTTON FUN1

LABEL fun1(子按钮名)

BITMAP fun1.bmp (子按钮图标,非必须)

ACTIONS fun1.py(子按钮 执行文件)

END_OF_MENU

打开UG即可在菜单栏中看到自己定义的菜单栏,如果没有显示,重启电脑即可。

3.2 自定义工具条创建

工具条脚本文件的扩展名为:*.tbr(文本文件)

自定义工具条按钮的方法与菜单基本相同,首先在startup文件夹内创建后缀.tbr的文本文件,写入如下类似的代码

TITLE MYFUNC

VERSION 170

DOCK TOP

BUTTON  FUN1

LABEL fun1(子按钮名)

BITMAP fun1.bmp (子按钮图标,非必须)

ACTION fun1.py(子按钮 执行文件,注意是action没有s)

3.3 功能文件生成

①创建一个C++模板项目:

 do_it()函数是UG公开的的二次开发接口,只需在其中添加相应功能,然后生成.dll文件放入application文件夹中进行调用即可。

测试代码如下:

首先添加头文件:#include <uf_modl_primitives.h>

void MyClass::do_it()
{

	// TODO: add your code here
	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();

}

 ②生成解决方案

生成解决方案后,在刚才创建的C++项目目录中的×64\Debug文件中会生成一个dill文件。将该文件复制进application文件夹内。

注意:如果生成解决方案时出现以下错误,是因为你所编辑代码需要调用该库才能执行。

MFC库安装方法:

打开Visual studio 2019安装包,以管理员身份运行下面程序。

打开后点击修改

在使用C++的桌面开发中勾选适用于最新v142生成工具的C++MFC,然后点击修改即可。

其它库也是一样的安装方法。

3.4 功能测试

UG二次开发逻辑为:在startup文件中创建菜单栏或工具条,在menuscript脚本中给对应按钮添加执行文件链接。从而调用该程序实现二次开发功能。而需要执行的文件则放在application文件夹内。

 

新建一个UG模型,点击添加执行文件链接的按钮,即可执行二次开发功能。

 至此已完成所有二次开发环境的搭建和功能测试~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

造船计划

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值