我试图从西门子NX服务器(在同一台机器上,即本地主机上)获取会话对象。我在pythonnet中使用python3.6,因为远程连接(显然)只通过.NET工作--我对pythonnet非常陌生(到目前为止只尝试了这一功能)。
我需要通过远程的会话对象,因为我想从界面获取一些用户输入,因此通过run_journal批处理不是一个选项。
这种方法是基于我在这里发现的:https://github.com/pythonnet/pythonnet/issues/276,但是我得到了错误"TypeError: No方法匹配给定的GetObject参数“
import NXOpen
import clr
import System
theSession = System.Activator.GetObject(NXOpen.Session, "http://localhost:4574/Session")我也用同样的错误尝试过GetObject(type(NXOpen.Session), ...)。
如何将NXOpen对象类型输入到GetObject函数中?
或者,是否有更好的方法可以使用Python远程连接到西门子NX会话?
服务器是西门子\NX 12.0\UGOPEN\SampleNXOpenApplications.NET\RemotingExample\Server中找到的示例NXOpen .NET远程服务器。
发布于 2020-10-01 06:18:15
虽然晚了,但看来我还是找到了解决办法。首先,当我为所有用户安装python时,我在NXOpen模块目录中复制了所有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()https://stackoverflow.com/questions/59216947
复制相似问题