日常折腾日记:手动配置UG二次开发环境——使用NX Open C++和Visual Studio

本文详细介绍如何在UG NXOpen环境下进行二次开发,包括环境搭建、配置步骤及基本示例代码。适合初学者快速入门。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、背景
最近需要做一些CAD软件二次开发的工作,所以这两天花了些时间了来入门。之前几乎没用过这个软件,以前用过Pro/E,但是的它界面实在是太难看了,这促使我有了学习UG的动力。折腾数日,这几天的收获主要是了解了一些UG开发的基本的概念,和有了初步的二次开发思路。本文并没有太高级的内容,只是记录了本人的这两天的经历和学习思路。

本人使用了UG12.0VS2019,在64位的WIN10系统上。

关于UG软件的介绍网上很多,这里只说一下UG提供的一些编程开发接口,这一块搞清楚很有必要,否则看文档会晕的。这里是官方文档
UG提供了很多种开发接口,包括NX Open、GRIP、SNAP、KF等。其他几个都比较小众,最强大也好用的就是NX Open系列。这个系列里面大概分三类,它们可以相互兼容,可以同时使用。

  1. Open C:原来的名字叫UF(User Function),处于NX Open系列的最底层,使用C语言,国内很多比较早的书和教程都用这个,但是由于它是C语言,很多东西都比较原始,开发难度比较大。
  2. Open C++:基于Open C做了封装,使用C++语言。结合了C++面向对象的优势,相较之下好用一些,但同时失去了少量的功能性,经常与Open C同时使用。
  3. NX Open:基于Open C,提供了多种语言可供选择(C++、JAVA、Python、.NET等等)。相较前两个更加完善。本人选择了这个系列的NX Open C++(JAVA和Python可能会更方便些,可惜资料不多)。
    官方手册里给的结构图:
    在这里插入图片描述

还有一个要搞清楚的概念是,UG支持两种形式的二次开发程序,分别是内部模式外部模式(这个概念在Pro/E二次开发里面叫做异步模式和同步模式)。内部模式就是指以动态链接库的形式嵌入到UG的主程序里使用,我们做二次开发的输出文件是*.dll形式的动态链接库,这种文件不能直接运行,必须嵌入到其他程序中使用。外部模式的程序可以独立地运行,通过调用UG的库来实现功能,这种输出文件是*.exe形式的可执行文件。本人使用的是外部模式,内部模式开发也类似,配置稍有不同。二者的功能可以完全一样,不同的地方在于程序入口,。

二、UG安装目录结构
网上的资料对这方面的描述,都是直接使用了UG专门为VS提供的项目模板,这个方法也是官方手册上提供的唯一方案,可能是考虑客户的方便吧。但是它对UG和VS版本有要求,对于有强迫症的我来说,重新让我装一个低版本的VS并不是个好的解决方案。网上有的教程说UG只能用对应版本,其实不是的,只是项目模版对VS版本有要求,折腾一下把环境搭好了代码一样写的。
先看一下UG的目录结构:
我的机子上安装目录是:C:\Program Files\Siemens\NX 12.0
里面是这样的:(可能会少些文件夹,我只装了建模部分和二次开发接口部分,大概5个G,全装的话应该要20G)
在这里插入图片描述
其中

  1. NXBIN:是UG主程序文件夹,UG主要的可执行程序都在这里;
  2. UGOPEN:是UG二次开发编程接口所在的目录,里面是Open C的库(libxxx.lib,*.dll)和头文件(主要形式是uf_xxx.h),一些例子程序(有JAVA、C++、Python、.NET,附带说明,可以参考一下),以及一个名叫NXOpen的目录,是NX Open系列头文件(以命名空间_开头的文件)的所在位置;
  3. UGOPENPP:是Open C++的所在目录,里面头文件形式为*.hxx。

三、开始动手
首选要安装一个VS,我用的是2019版(与2017兼容),其他版本也可以。UG版本12.0(64位)。操作系统是WIN10。要注意的是不同UG版本的目录结构有些差异,但是要找的这些库和头文件都是类似的,可以用everything辅助查找一下。UG安装过程中如果选自定义安装的话,一定要勾选编程开发接口那一项。安装好这两个软件之后:

  1. 打开VS,依次点菜单 文件-新建-空项目,在源文件那里新建一个ugtest.cpp的空文件,然后在项目名称那里右键-属性
    在这里插入图片描述
  2. 注意项目配置,要选Debug(或release,Debug是指开发阶段的配置,开发完成后要发布的话要配置的是Release),平台一定要选x64,因为UG12.0提供的都是64位版本的库。看情况而定,如果是较旧版的UG可能是32位的。
    在这里插入图片描述
  3. 然后就是配置属性常规页,配置类型我这里选的是应用程序(*.exe)。按个人需求,如果开发内部模式的程序一定要选动态库(*.dl)。这一步是告诉编译器我们要输出的文件是哪种类型。
    在这里插入图片描述
  4. 接着点C/C++页,在附加包含目录里加入两个存放头文件的路径(在VC++目录页的包含目录那里加也可以,区别是一个针对全局的配置,一个是针对该项目的配置)。这一步的目的是告诉编译器应该在哪里找我们用的头文件。
    在这里插入图片描述
  5. 再接着,在链接器页,在附加库目录里添加UGOPEN文件夹。这一步是为了让编译器能找到要用的*.lib文件(这个并不是静态库文件,而是动态链接库的导出库文件,添加之后可以让程序在需要时自动加载dll文件。同样,在VC++目录页库目录配置效果相同)。
    在这里插入图片描述
  6. 下一步,在链接器-输入页,加上在NXOPEN目录里所有的*.lib文件名。这一步的目的是告诉编译器,我们的程序要用到哪些动态库,如果少加会报错,“无法解析的外部符号…”。我添加项的如下:
    libameopencpp.lib
    libanimationdesigneropencpp.lib
    liblinedesigneropencpp.lib
    libmfgmlpopencpp.lib
    libnxopencpp.lib
    libnxopencpp_annotations.lib
    libnxopencpp_assemblies.lib
    libnxopencpp_bodydes.lib
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值