4

我正在尝试从 Siemens NX 服务器(在同一台机器上,即本地主机上)获取 Session 对象。我正在将 python 3.6 与 pythonnet 一起使用,因为远程连接(显然)只能通过 .NET 工作——我对 pythonnet 非常陌生(到目前为止只尝试过这个功能)。

我需要通过远程的 Session 对象,因为我想从界面中获取一些用户输入,因此不能通过 run_journal 进行批处理。

该方法基于我在此处找到的内容:https ://github.com/pythonnet/pythonnet/issues/276 ,但我收到错误“ TypeError: No method matches given arguments for GetObject

import NXOpen
import clr
import System

theSession = System.Activator.GetObject(NXOpen.Session, "http://localhost:4574/Session")

我也尝试过GetObject(type(NXOpen.Session), ...)同样的错误。

如何将 NXOpen 对象类型输入 GetObject 函数?

或者,有没有更好的方法可以使用 Python 远程连接到 Siemens NX Session?

该服务器是在 \Siemens\NX 12.0\UGOPEN\SampleNXOpenApplications.NET\RemotingExample\Server 中找到的示例 NXOpen .NET 远程服务器

4

1 回答 1

2

晚了,但似乎我终于找到了解决方案。首先,当我为所有用户安装 python 时,我复制了 NX python 模块目录中的所有 NXOpen 库(我不使用 IDE,只使用 Notepad++)。

这是一个工作示例,在python.exe file.py.NET 远程服务器上运行良好。

import clr
from System import Activator

import sys
import math

# Managed NXOpen DLL's goes also in this directory
sys.path.append('C:/Siemens/NX 11/NXBIN/python')

clr.AddReference('NXOpen')
import NXOpen

def main() : 

    m_Session = Activator.GetObject(NXOpen.Session, "http://127.0.0.1:4567/NXOpenSession")
    m_WorkPart = m_Session.Parts.Work

    print(m_Session.Parts.Display.FullPath)

if __name__ == '__main__':
    main()
于 2020-10-01T06:18:15.683 回答