从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中nx_Siemens NX (UG)中对于Python第三方包(函数库)的设置方法相关推荐

  1. python封装c++_用pybind11封装C++实现的函数库

    现有若干用C++编写的函数,为了能够用Python调用它们,可以通过pybind11将它们封装到一个Python模块中,在编写Python程序时只要导入该模块便能使用这些函数. 一.实现步骤 用C++ ...

  2. python用代码安装3.6_Python3.6安装及引入Requests库的实现方法

    本博客可能没有那么规范,环境之类的配置.只是让你直接开始编程写python. 至于各种配置网络上有多种方法. 本文仅代表我的观点的一种方法. 电脑环境:win10 64位 第一步:下载python. ...

  3. Node.js中创建package.json文件,安装第三方包

    在当前项目根目录下打开命令窗口 输入,开启安装向导 npm init 依次输入之后即可生成package.json文件,也可以不完全填写全部信息,不想填的回车可跳过. package name: (包 ...

  4. Cadence Allegro PCB设计88问解析(十四) 之 Allegro中库路径设置方法

    一个学习信号完整性的layout工程师 大家在进行Layout设计时,最重要就是导入网表,放入元器件,然后进行走线.那其中的元器件就是今天和大家分享的一点,不管是阻容感,还是各种IC.连接器都是有封装 ...

  5. python 函数调用列表_在项目列表上调用一个函数的最简洁方法 - python

    在python 2中,我使用map将函数应用于多个项目,例如,删除所有与模式匹配的项目: map(os.remove,glob.glob("*.pyc")) 当然我忽略了os.re ...

  6. NX/UG二次开发-矩阵-UFUN函数UF_mtx***

    以前只是用UFUN函数中的UF_MTX中的矩阵函数,也没具体输出的结果.今天自己通过线性代数中的矩阵变换,自己写了一些变换矩阵,然后在NX中测试是否正确.但测试发现UF_MTX4_vec3_multi ...

  7. python的xlrd怎么安装_python接口测试,第三方包xlrd和xlutils,怎么安装

    第1个:xlrd的下载地址:https://pypi.python.org/pypi/xlrd/0.9.2 安装过程:下载后解压文件夹,使用cd命令行进入该文件夹后,用命令:python setup. ...

  8. python中的counter()、elements()、most_common()和subtract()函数的用法

    python中的counter().elements().most_common()和subtract()函数的用法 counter()方法: class collections.Counter([i ...

  9. 中boxplot函数的参数设置_如何在Python中生成图形和图表

    在本章中,我们将学习如何在Python中生成图形和图表,同时将使用函数和面向对象的方法来可视化数据. Python中常用的一些可视化数据包括以下几种. Matplotlib. Seaborn. ggp ...

最新文章

  1. 【C++】lambda 表达式
  2. 管理不再是交换,而是相互成全!做到这三点,管理更有成效!
  3. cas协议,以及tomcat搭建cas服务器
  4. android中的AIDL进程间通信
  5. 网站的服务器角色选哪个,原神平民开服选什么角色最好-开服必备角色推荐_好特网...
  6. 安装 PHP Memcache 扩展
  7. 数值的加减会改变python中id,在python中调用Nan值并更改为数字
  8. VS2019 WPF制作OTA上位机(一)新建工程
  9. 树形结构 —— 并查集 —— 基本操作
  10. setTimeout还是setInterval?
  11. Sakai3白皮书(中文版)
  12. Playmaker节点工具使用(二)—Odin绘制支持
  13. 文件系统 - 文件类型 - 二进制/文本类型
  14. python爬取豆瓣电影250_python爬取豆瓣电影top250数据存入数据库
  15. 魔性计时器html,PDD西卡脸抽不断 拜年秀播出倒计时1天
  16. android m是什么版本号,Android m是什么版本
  17. 运维祈求不宕机_一份运维监控的终极秘籍!监控不到位,宕机两行泪
  18. 游戏后台之内存管理篇
  19. php 制作在线音乐网站,音乐网站程序,手把手教会你做音乐“网站”
  20. python分钟转化为小时_Python将分钟转为小时和分钟

热门文章

  1. cds大佬座谈会总结
  2. npm install 报错 C:\Program Files\Git\cmd\git.EXE ls-remote -h -t git://github.com/adobe-webplatform解决
  3. 宁乡首届春耕节开幕,在寓教于乐中弘扬传统文化
  4. Markdown Emoji表情语法速查表
  5. SpringMVC工作流程
  6. 又火了一个,看小说也能学 JavaScript?
  7. python画位势高度图_气候变化位势高度
  8. 【吐血整理】互联网大厂面试遇到的100道软件测试面试题+答案
  9. BPM软件是什么?BPM软件跟BPA有关联吗?
  10. 抚顺同洲计算机学校,计算机专业的实习调研报告.docx