许可优化
许可优化
产品
产品
解决方案
解决方案
服务支持
服务支持
关于
关于
软件库
当前位置:服务支持 >  软件文章 >  日常折腾日记:手动配置UG二次开发环境——使用NX Open C++和Visual Studio

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

阅读数 8
点赞 0
article_banner

一、背景

   最近需要做一些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

        libnxopencpp_cae.lib

        libnxopencpp_cam.lib

        libnxopencpp_diagramming.lib

        libnxopencpp_diagramminglibraryauthor.lib

        libnxopencpp_die.lib

        libnxopencpp_display.lib

        libnxopencpp_drafting.lib

        libnxopencpp_drawings.lib

        libnxopencpp_facet.lib

        libnxopencpp_features.lib

        libnxopencpp_fields.lib

        libnxopencpp_formboard.lib

        libnxopencpp_gateway.lib

        libnxopencpp_geometricanalysis.lib

        libnxopencpp_geometricutilities.lib

        libnxopencpp_issue.lib

        libnxopencpp_layer.lib

        libnxopencpp_layout2d.lib

        libnxopencpp_markup.lib

        libnxopencpp_mechanicalrouting.lib

        libnxopencpp_mechatronics.lib

        libnxopencpp_modldirect.lib

        libnxopencpp_motion.li
    免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删
相关文章
技术文档
QR Code
微信扫一扫,欢迎咨询~
customer

online

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 board-phone 155-2731-8020
close1
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

姓名不为空

姓名不为空
手机不正确

手机不正确

手机不正确
公司不为空

公司不为空

公司不为空