找回密码
 立即注册

QQ登录

只需一步,快速开始

微信扫码登录

搜索
查看: 2867|回复: 4

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

[复制链接]

2

主题

16

回帖

745

积分

四级士官

积分
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,选择刚才的文件,运行,结果如下:
1.png
  这就说明设置成功,下面利用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,然后就可以正常提示了
2.png
  当然,一般不使用IDLE进行开发,官方推荐是Eclipse+pydev,其实pycharm也是可以的,vscode试了试代码提示出不来,不知道什么原因,pydev代码提示如下:
3.png
  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>
复制代码
  代码前三行是为了调试用的,调试界面如下:
4.png
Debug_NXOpen_Python_with_NX12_and_Eclipse_PyDev.zip (866.77 KB, 下载次数: 58)


评分

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

查看全部评分

8

主题

642

回帖

8159

积分

少校

积分
8159
发表于 2024-2-2 10:06:40 | 显示全部楼层
大佬666

1

主题

2

回帖

50

积分

上等兵

积分
50
发表于 2024-4-7 07:22:34 | 显示全部楼层
未来可期

1

主题

31

回帖

241

积分

一级士官

积分
241
发表于 5 天前 | 显示全部楼层
6666漂亮

6

主题

245

回帖

1777

积分

六级士官

积分
1777
发表于 昨天 14:40 | 显示全部楼层
6666666666666
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

咨询QQ:1359218528|发帖须知!|Archiver|手机版|小黑屋|UG爱好者论坛 ( 京ICP备10217105号-2 )

GMT+8, 2025-1-22 12:21

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表