NX二次开发-外部模式环境设置详解
适用版本:NX6以上
NX二次开发程序有三种运行模式:交互模式、外部模式(批处理模式)和远程模式。我们偶尔会遇到需要开发外部模式程序的情况,如一些批量处理功能、使用Winform界面的外部处理功能等。与在NX中启动的交互模式不同,外部模式的运行环境需要注意进行一些设置,本技巧对这些设置进行说明。
简单的外部模式程序
使用VS创建一个简单的外部模式程序,运行程序后获取NXOpen的会话(Session对象),入口函数代码如下:
解决未加载程序集异常
此时如果我们生成程序后直接运行(生成目录只有我们的程序,没有复制NXOpen的DLL),程序会抛出未加载程序异常:
不难理解,我们的程序要调用NXOpen的功能,首先得NXOpen的DLL支持。在交互模式中,因为我们是直接在NX中执行程序的,所以相关的库NX都可以自动找到,而外部环境中需要我们的程序自己加载。
这时我们可以选取以下其中一种方法:
1.将NXOpen相关的DLL文件复制到生成目录中,或在VS的引用项中选择复制到生成目录:
2.将程序复制到NX安装目录下的NXBINmanaged(NX11以下为UGIImanaged)中。
解决未加载DLL异常
再次运行程序,程序依然会抛出异常:
但可以看到这次程序已经可以顺利找到并调用NXOpen的方法了,只是NXOpen内部依然不能正常运行。这是因为NXOpen内部是通过DllImport调用内核的相关代码的,但是显然我们程序的运行目录中并没有这些DLL。通常NX会在特定环境变量中搜索这些需要的库,因此我们只需要对这些环境变量进行设置即可。必须要设置:
-
UGII_BASE_DIR:设置为NX的安装根目录;
-
PATH:在其中添加 %UGII_BASE_DIR%NXBINmanaged(NX11以下为:%UGII_BASE_DIRUGIImanaged%)
可以直接设置系统环境变量或通过批处理设置环境变量并运行程序:
保存为批处理文件并运行,程序运行成功:
使用run_managed程序运行
上文中提到我们需要在程序的目录中包含NXOpen相关的DLL文件,但我们能不能像普通的交互程序一样不做这一步?因为我们的程序包要带着NXOpen的库这听起来不合理,明明机器上已经安装了NX应该能找到相关的库;而把程序放在库所在的文件夹下的方案看上去又不太方便二次开发程序的管理。
这时其实西门子已经提供了一个方便的解决方法,即在NXBIN或UGII目录下的run_managed.exe程序。通过这个程序启动我们开发的外部程序即可自动设置环境变量和加载相关的DLL,不需要做其他的操作。我们只需要创建一个批处理运行相关的命令即可:
通过以上提供的方法,就可以正确设置外部环境,运行环境并成功地运行程序。
能科科技股份有限公司,成立于2006年12月,2016年10月在上交所上市(股票代码:603859.SH)致力成为制造业企业的数字化转型合作伙伴,围绕工业互联网经营生态,围绕全流程数字孪生组织能力,以生产力中台为基础,建设新时代企业应用服务基础设施,赋能客户实现智能制造转型与数字化运作。
上海联宏创能信息科技有限公司,是能科科技全资子公司,专注为汽车、轨道交通、通用机械、消费电子、航空航天、船舶等机械制造业领域内的广大用户提供面向工业4.0的全产品生命周期的数字化产品工程解决方案及全方位资深咨询服务。
免责声明:
1、本站所有资源文章出自互联网收集整理,本站不参与制作,如果侵犯了您的合法权益,请联系本站我们会及时删除。
2、本站发布资源来源于互联网,可能存在水印或者引流等信息,请用户擦亮眼睛自行鉴别,做一个有主见和判断力的用户。
3、本站资源仅供研究、学习交流之用,若使用商业用途,请购买正版授权,否则产生的一切后果将由下载用户自行承担。
4、侵权违法和不良信息举报 举报邮箱:cnddit@qq.com
还没有评论,来说两句吧...