QQ登录

只需一步,快速开始

快捷登录

登录 或者 注册 请先

UG爱好者

查看: 2138|回复: 2
打印 上一主题 下一主题

[原创] python二次开发NX环境搭建

[复制链接]

四级士官

Rank: 3Rank: 3

2

主题

18

帖子

745

积分
跳转到指定楼层
楼主
发表于 2024-2-1 16:52:54 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
  NX10.0以后,NXOpen增加了对Python的支持,Python有多强大不用解释,本来UG自带操作记录编辑器(如下图)可以用来录制操作记录,也能编辑和运行python程序,但没人会用那个编辑器来进行二次开发,为了能更方便的利用Python对UG进行二次开发,最好是设置使用外部Python版本运行NX中的Python脚本,这样不仅可以使用强大的Python第三方库,而且结合IDE的使用,可以让写代码变得稍微轻松点,至少有代码提示。根据NX文档,NX12.0使用的Python版本为3.6.1,所以得在电脑中安装python3.6,小版本无所谓。设置如下:
  打开G:\Program Files\Siemens\NX 12.0\UGII\ugii_env.dat,增加两行,其中,注意根据python3.6及NX的实际安装位置进行相应修改:
  1. <font face="宋体" size="3">UGII_PYTHON_LIBRARY_DIR="D:\Program Files\Python36"
  2. UGII_PYTHONPATH="D:\Program Files\Python36;D:\Program Files\Python36\DLLs;D:\Program Files\Python36\Lib;D:\Program Files\Python36\Lib\site-packages;D:\Program Files\Python36\libs;G:\Program Files\Siemens\NX 12.0\NXBIN\python"</font>
复制代码
  为了验证设置是否有效,新建一个文本,后缀名改为.py,写入代码如下:
  1. <font face="宋体" size="3">import NXOpen

  2. session=NXOpen.Session.GetSession()
  3. lw=session.ListingWindow
  4. lw.Open()
  5. lw.WriteLine('Hello World')</font>
复制代码
  打开NX12.0,Alt+F8,选择刚才的文件,运行,结果如下:
  这就说明设置成功,下面利用python自带的IDLE来测试下代码提示,新建一个文本文档,文件名改为nxopen.pth,打开文件,输入:
G:\Program Files\Siemens\NX 12.0\NXBIN\python(按NX实际安装路径更改)
  然后将nxopen.pth放入D:\Program Files\Python36\Lib\site-packages文件夹中(按python实际安装路径更改),打开IDLE,首先import NXOpen,然后就可以正常提示了
  当然,一般不使用IDLE进行开发,官方推荐是Eclipse+pydev,其实pycharm也是可以的,vscode试了试代码提示出不来,不知道什么原因,pydev代码提示如下:
  1. <font face="宋体" size="3">#nx: threaded
  2. import pydevd
  3. pydevd.settrace()

  4. import NXOpen_UF
  5. import NXOpen
  6. theUfSession: NXOpen_UF.UFSession = NXOpen_UF.UFSession.GetUFSession()
  7. modl: NXOpen_UF.ModlFeatures = theUfSession.ModlFeatures
  8. ui: NXOpen_UF.Ui = theUfSession.Ui
  9. ui.OpenListingWindow()


  10. block_t = modl.CreateBlock(NXOpen_UF.ModlFeatureSigns.NULLSIGN, 0, [0.0, 0.0, 0.0],
  11.                            ["100", "50", "30"])

  12. block_t1 = modl.CreateBlock1(NXOpen_UF.ModlFeatureSigns.NULLSIGN, [
  13.                              100.0, 0.0, 0.0], ["100", "50", "30"])
  14. block_o = NXOpen.TaggedObjectManager.GetTaggedObject(block_t)
  15. block_o1 = NXOpen.TaggedObjectManager.GetTaggedObject(block_t1)


  16. ui.WriteListingWindow(f"{block_t}:{block_o}\n")
  17. ui.WriteListingWindow(f"{block_t1}:{block_o1}\n")</font>
复制代码
  代码前三行是为了调试用的,调试界面如下:
Debug_NXOpen_Python_with_NX12_and_Eclipse_PyDev.zip (866.77 KB, 下载次数: 43)


评分

参与人数 1G币 +50 收起 理由
3D世界网-零 + 50 原创加分!

查看全部评分

版权声明  
本人声明此帖为本人原创帖,未经允许,不得转载!

有奖推广贴子: 

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

 
 
QQ:1359218528
工作时间:
9:00-17:00
 
微信公众号
手机APP
机械社区
微信小程序

手机版|UG爱好者论坛 ( 京ICP备10217105号-2 )    论坛管理员QQ:1359218528

本站信息均由会员发表,不代表本网站立场,如侵犯了您的权利请联系管理员,邮箱:1359218528@qq.com  

Powered by UG爱好者 X3.2  © 2001-2014 Comsenz Inc. GMT+8, 2024-11-16 21:00

返回顶部