从NX 10开始,NX Open增加了对Python的支持,使得NX脚本语言的多元性进一步得到扩充。但对于大多数用户来说,选择Python作为脚本语言,主要是想利用Python社区提供的各种函数库或功能包,比如在科学计算和数据处理中常用的numpy、scipy、matplotlib、scipy等等。然而遗憾的是,NX中的Python只包含Python的基本功能,不能自行安装其他函数库或功能包,这使得Python存在的意义大为降低。不过NX提供选择其它Python解释器作为NX的解释器,这样就可以解决这个问题。

在Siemens的论坛上,有一个帖子详细解释了这个设置的方法:

其实这个方法在NX 10的说明页面里有,但后续版本不知道移到哪里去了……

下面是从NX 10说明页面复制的设置方法,其中ugii_env.dat文件可以通过在NX的安装目录里搜索定位

Using external Python distribution

The Python distribution included in NX is Python 3.3.2 with the PLY extension module included. If you use other Python extension modules, you can set up NX to use a Python distribution that you install that includes the other extension modules.

Specify the external Python distribution for NX to use with the UGII_PYTHON_LIBRARY_DIR and UGII_PYTHONPATH environment variables. You can set these environment variables in your site, group, or user environment variable customization in your ugii_env.dat file.

The UGII_PYTHON_LIBRARY_DIR variable specifies the directory that contains the Python shared library. The location of this shared library depends on how Python was installed on the system. For example, if you installed Python 3.3.2 on Windows for all users, the Python shared library (Python33.dll) is in the directory %SystemRoot%\System32. If you installed Python 3.3.2 locally, the Python shared library is in the directory \DLLs.

The UGII_PYTHONPATH variable specifies the directories that the Python interpreter searches to find Python modules, including the NX Open Python extension modules. When you set this variable, include the location of the NX Open Python extension modules in addition to any other extension modules you are using. For example, if you installed Python 3.3.2 on Windows, UGII_PYTHONPATH should be set as follows:

UGII_PYTHONPATH=;\DLLs;\Lib;\Lib\site-packages;%UGII_BASE_DIR%\ugii\python;

You can override the UGII_PYTHONPATH and UGII_PYTHON_LIBRARY_DIR settings by using the Override Python Parameters command in NX. If you override the UGII_PYTHONPATH variable, do not include the Python33.zip file in your UGII_PYTHONPATH setting, since it is not needed and conflicts with your external Python distribution.

上面论坛帖子也是基于NX 10进行的设置,经亲测,在NX 12上可以使用。对于Python,不论是使用Anaconda(不推荐,后面解释),还是自行安装的numpy,都可以用。为了避免设置中出现问题,建议阅读这个帖子的所有回帖。

需要提示的是,这里面还是有很多技巧的,否则经常不能使用,以下是本人设置的经验:

1、需要通过NX帮助查看当前版本支持的Python版本,最好使用相同的版本,例如NX 12支持Python 3.6.1,那么Python版本最好为3.6。以下链接是NX 12的版本支持信息,其它版本的信息也可以在类似分类页面中找到:

2、上文链接中nxopen库文件所在位置在不同版本NX中位置会发生变化,比如在NX 12中,这个文件夹在NX安装目录中的NXBIN文件夹中,而对于NX 10,python在UGII文件夹里。我们可以在NX安装目录下搜索“Python*.zip”进行定位。

3、如果NX或第三方Python的安装路径里面包含空格,在ugii_env.dat中设定环境变量时,相关路径需要用英文双引号括起来。

4、在使用Anaconda提供的Python时,调用numpy或者基于numpy的函数库时,可能会提示numpy加载出错,错误信息大概是这个样子:

ImportError:

Importing the multiarray numpy extension module failed. Most likely you are trying to ...

这个是因为找不到mkl的相关动态链接库,这里没有找到很好的解决方法。网上提供的一种方法是把Anaconda使用的所有与mkl相关的dll文件(可以通过在Anaconda目录下搜索mkl_avx.dll文件定位)复制到numpy的目录中(例如Anaconda3\Lib\site-packages\numpy\core),这样的做法numpy可以正常载入,但是可能不会随着Anaconda软件库的更新而自动替换相关文件,会有潜在的风险。这也是不建议直接使用Anaconda的原因。

5、在使用numpy或者其它基于numpy的第三方包时,NX可能会崩溃……不过在上文论坛帖子的回帖中提到了一种解决办法,

这种方法是在python脚本首行添加

#nx: threaded

注意上面一行中的空格不能有增减。此语句使得NX支持多线程,但是也带来一个问题,即当脚本修改了以后,必须重启NX后才能正常载入新脚本,否则老脚本还是会被调用。这确实有些麻烦,只是权宜之计,不过一旦脚本改好了,这也不是什么大问题了吧……

下面我将我自己电脑上ugii_env.dat文件内容粘上来。这里使用的是NX 12(不是默认安装目录),Python使用的是官方的Python,numpy等第三方包通过https://www.lfd.uci.edu/~gohlke/pythonlibs/提供的预编译包进行安装。如果使用的是Anaconda,根据下面的方法进行相应的修改,并按上文方法复制mkl的相关文件,也是可以用的。

PYTHONPATH=C:\Python36;C:\Python36\Lib;C:\Python36\libs;C:\Python36\DLLs;C:\Python36\Lib\site-packages;"C:\Program Files\Siemens\NX120\NXBIN\python"

UGII_PYTHON_HOME=C:\Python36

UGII_PYTHON_DLL=python36.dll

UGII_PYTHON_LIBRARY_DIR=C:\Python36

UGII_PYTHONPATH=C:\Python36;C:\Python36\Lib;C:\Python36\libs;C:\Python36\DLLs;C:\Python36\Lib\site-packages;"C:\Program Files\Siemens\NX120\NXBIN\python"

TCL_LIBRARY=C:\Python36\tcl\tcl8.6

NX 对Python的支持也是近几年的事,也许以后就不用这么麻烦了吧……

python二次开发ug_Siemens NX (UG)中对于Python第三方包(函数库)的设置方法相关推荐

  1. Python 二次开发 SAP2000 概述

    目 录 Blog Links 一.前言 二.pywin32库 三.帮助文档 四.访问SAP2000 4.1 ProgID 五.文件 5.1 新建 5.2 打开 5.3 保存 5.4 退出 六.视图 6 ...

  2. 【NX二次开发】NX内部函数,libufunx.dll文件中的内部函数

    本文分为两部分:"带参数的函数"和 "带修饰的函数". 浏览这篇博客前请先阅读: [NX二次开发]NX内部函数,查找内部函数的方法 带参数的函数: void e ...

  3. python二次开发攻略-ABAQUS Python二次开发攻略

    第一部分 引言 第1章 Abaqus二次开发简介 12 1.1 为什么是Python 12 1.2 Python.FORTRAN与Abaqus 13 1.3 基于Python二次开发 14 第2章 P ...

  4. abaqus python二次开发攻略_基于CAE二次开发进行弹簧批量建模

    一. 为什么要进行弹簧批量建模 当一个公司或者学者从事科研任务时,往往通过有限元进行建模分析,建模的时间通常与工作效率挂钩.例如ABAQUS/CAE建模,想必很多老用户都有某种共同的感受,那就是实体模 ...

  5. abaqus python二次开发攻略_Abaqus二次开发Python脚本二次开发

    在上一篇博文中简要介绍了Abaqus中FORTRAN子程序二次开发,那么这次将对Abaqus的Python脚本二次开发进行概述. 就像在上一篇博文中提到的,基于Python的脚本开发又可以细分为如下三 ...

  6. abaqus python二次开发攻略.pdf 百度云_ABAQUS Python二次开发攻略 CAE分析大系

    内容推荐 本书是作者结合自己多年Abaqus 使用经验,在汲取国内外大量资料的基础上编写的一本Python 二次开发知识点笔记.内容涉及开发环境的搭建.Python 基础语法知识.Abaqus Pyt ...

  7. 迈德威视工业相机python二次开发,修改相机参数

    迈德威视工业相机python二次开发,修改相机参数 1. 调用官方给的参考例程grab.py 例程下载地址:https://www.mindvision.com.cn/rjxz/list_12.asp ...

  8. 国产微观交通仿真软件TESS NG V2.1 Python二次开发接口版本发布

    来源:上海济达交通科技有限公司 上海济达交通科技有限公司是国产TESS NG微观交通软件研发商.2022年9月26日,上海济达交通科技有限公司正式发布了TESS NG的V2.1 Python二次开发接 ...

  9. 你好五一、你好TESS NG python二次开发接口

    今天是五一劳动节,国产微观交通仿真软件TESS NG的python开发接口内测版今天发布.         4月1日到今天5月1日一个月时间,疫情将我"封"在出租里,我将TESS ...

最新文章

  1. python使用numpy中的flatten函数将2D numpy数组拉平为1Dnumpy数组、使用np.linalg.matrix_rank函数计算2D numpy数组的秩(rank)
  2. 安装numpy/scipy/scikit-learn的方法
  3. 2014.12.10 OC基础复习
  4. OpenGL ES之GLSL实现仿抖音“灰度滤镜”和“颠倒滤镜”效果
  5. ASP.NET MVC Action Filters
  6. mysql definer设置为root_mysql如何修改所有的definer
  7. 爬虫笔记八——Scrapy实战项目
  8. Bitcoin Cash和Bitcoin Core到底谁是分叉币
  9. html5网页设计教程电子书,HTML5教程(使用HTML5设计网络富客户端应用)
  10. Scala的函数式编程
  11. 如何解决远程windows服务器安装matlab出现License Manager Error-103问题
  12. JavaMail实践--实现邮件发送
  13. 怎么删除内网计算机IP地址,如何能在局域网中隐藏电脑及IP地址
  14. d3力导向图增加节点_在D3力导向图中突出显示所选节点,其链接及其子节点
  15. 测试驱动开发(TDD)在海外组的实践总结
  16. 梦幻西游新资源的提取一
  17. 【12c】12c RMAN新特性之recover table(表级别恢复)
  18. 数据结构——查找最全总结(期末复习必备)
  19. gophish配合邮件服务器,【CS】Cobalt Strike发送钓鱼邮件
  20. 下一代 Web 应用模型 —— Progressive Web App

热门文章

  1. java中斜杠/和反斜杠\
  2. 微信小程序播放视频 禁止快进
  3. kvm启动流程-006
  4. oracle(知识点速查)
  5. 【爬树合集】难啃的骨头——红黑树
  6. 跟我学Python图像处理丨图像特效处理:毛玻璃、浮雕和油漆特效
  7. 【计算机网络】(二)网络技术与应用
  8. 如何使用WGCLOUD实时监控网站状态并告警
  9. 基于网络爬虫的新闻实时监测分析可视化系统(Java+MySQL+Web+Eclipse)
  10. 软件测试入门全流程精华总结【必看 知识点很全】