因为工作上需要做FreeCAD二次开发,要学习点Python,也就顺便玩玩NX是怎么用Python开发的,断断续续看了很久,也没搞出来。
今晚突然有想法,就又来搞搞看。
首先声明这个不是我想出来的,是在网上参考大神的文章,照着做出来的。
参考资料
https://zhuanlan.zhihu.com/p/343432265
http://www.nxopen.cn/thread-1224-1-1.html
API
https://docs.plm.automation.siemens.com/data_services/resources/nx/11/nx_api/custom/en_US/nxopen_python_ref/index.html
https://community.sw.siemens.com/s/question/0D54O000061xInoSAE/configuring-pycharm-for-nxopen-in-python
可以说我是完全按照这篇文章一模一样做的,就连NX的版本和Python的版本都是一模一样按照他这个去下载安装的,我就是想看看照着到底能不能做出来。
最后是照着做出来了,但是还是有些问题没解决。
环境搭建步骤
1.安装NX1953
2.查找NX1953是用哪个版本的Python解释器
3.去官网下载Python3.8.3版本安装包
https://www.python.org/downloads/
https://www.python.org/downloads/release/python-383/
4.安装Python3.8.3
5.安装Pycharm
6.写bat脚本(这个是重点)
rem the nx installation dir. if there are spaces in the path, it needs to be quoted like here - quotes around the whole equation SET "UGII_BASE_DIR=D:Program FilesSiemensNX1953" rem these two are not used by nx, just for setting the path SET UGII_ROOT_DIR=%UGII_BASE_DIR%UGII SET UGII_NXBIN_DIR=%UGII_BASE_DIR%NXBIN rem the installed python interpreter, version 3.6 for nx12 SET PYTHON=D:Python38 SET INTERPRETER=%PYTHON%;%PYTHON%DLLs;%PYTHON%Lib;%PYTHON%Libsite-packages SET PYTHONPATH=%INTERPRETER%;%UGII_BASE_DIR% xbinpython SET PATH=%PATH%;%UGII_NXBIN_DIR%;%UGII_ROOT_DIR% start "" "D:PyCharminpycharm64.exe"
这里更改要注意的地方可能就是路径带空格的,要不要用引号括起来,我没测试,大家要测试下。
装NX1847以下版本的,类似NX 11路径都是有空格的
7.以管理员双击启动脚本(Pycharm就自动启动,自动配置好环境了)
我的因为之前就打开过了,所有已经有一个带代码的py文件了,你们第一次打开应该是需要新建一个py的,新建的时候选择我们装的那个python解释器就行了。
创建完可能就是这个样子
8.Pycharm自动加载NX的pyd库,识别里面的类和方法(这个过程,我的很慢,我等了一个多小时才全部加载出所有pyd里的方法)
9.开始写代码自动提示代码(演示下提示代码)
问题点:
1.pyd下面的类和方法好像没有完全识别出来,只能往下调一层或者两层,在往下调好像就出不来的。
UF的往下就调不出来了
2.所有的操作都是基于这三句的,但是拿workPart就调不出方法了,不提示了,这不是很操蛋,没办法像VS那样去提示
3.在Pycharm中没办法像VS那样设断点单步调试,没办法添加进程,而且py脚本在NX中只能在录制操作记录里执行(以我目前想到的添加进程调试方法,只能用VS2017或者2019打开py文件,然后添加进程到NX,在点击按钮执行
py文件,进入断点开始单步调试,目前我做FreeCAD添加进程调试就是这样做的,也很不方便,VS也不识别提示py代码)
或者手动添加一个按钮去执行
其实我是比较期望实现,在Pycharm中写代码一执行,不但可以提示代码,最好还能单步调试,跟PyQt或者PySide结合开发对话框,用BlockUI现在肯定是可以的了。
还可以直接在NX里创建块,可视化实时操作。我以前在CATIA小狼的视频里看到过,他在CATIA中的实现。
https://www.bilibili.com/video/BV1Qj411f7Ky?from=search&seid=1690453761214189993
不知道NX能不能实现,没查到相关资料
总而言之,用Python做NX开发挺不好弄的,很多UFUN的功能NXOpen Python封装不全,Python脚本语言执行很慢,py代码是公开的,编译成pyc也可以被反编译回去,可能要做成pyd库去用。
pyc反编译网址 https://tool.lu/pyc/
而且也很难成为主流,出去找二次开发工作的话,肯定是首选C++,其次C# .net开发
暂时研究到这里,后续有进展在补充到下面
程序员阿飞
2021年4月14日