我正在尝试从 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?
服务器是示例 NXOpen .NET 远程服务器,位于\Siemens\NX 12.0\UGOPEN\SampleNXOpenApplications.NET\RemotingExample\Server
最佳答案
晚了,但似乎我终于找到了解决方案。首先,当我为所有用户安装 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()
关于python - 从 python (NXOpen) 连接到 Siemens NX 服务器; pythonnet GetObject 类型错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59216947/