Python-VISSIM-COM接口

Python-VISSIM-COM接口,python,python-3.x,Python,Python 3.x,我是Python新手,Python Vissim连接有问题。问题是,当我开始运行python文件时,Vissim开始打开并加载我的模型(网络和布局)。加载完成后,Vissim自动关闭。我不知道我做错了什么?我希望有人能在这个问题上帮助我 这是我的密码: import win32com.client as com 类别COM: #region Vissim connection Inpx_path = '' Layx_path = '' def __init__(self):

我是Python新手,Python Vissim连接有问题。问题是,当我开始运行python文件时,Vissim开始打开并加载我的模型(网络和布局)。加载完成后,Vissim自动关闭。我不知道我做错了什么?我希望有人能在这个问题上帮助我

这是我的密码:

import win32com.client as com
类别COM:

#region Vissim connection

 Inpx_path = ''
 Layx_path = ''

 def __init__(self):
     self.Inpx_path = r'D:\\User\\Model\\Hein.inpx'
     self.Layx_path = r'D:\\User\\Model\\Hein.layx'

 def startVissim(self):
     try:
         Vissim = com.dynamic.Dispatch('Vissim.Vissim.110') 
         return Vissim
     except Exception as e: 
         print(e)


 def loadNetwork(self, vissim):
     try:
         Net = vissim.LoadNet(self.Inpx_path)
         return Net
     except Exception as e: 
         print(e)


 def loadLayout(self, vissim):
     try:
         Layout = vissim.LoadLayout(self.Layx_path)
         return Layout
     except Exception as e: 
         print(e)

vissim = COM().startVissim()
net = COM().loadNetwork(vissim)
layout = COM().loadLayout(vissim)

注意:vissim、net和layout不属于COM类

根据我在PTV COM培训课程中的记忆,尝试以下步骤可能会有所帮助:

  • 复制您正在使用的Vissim版本的桌面快捷方式
  • 右键单击新的快捷方式,转到属性,并将-automation添加到目标的末尾,如下所示
  • 使用此快捷方式打开Vissim的实例,然后尝试运行代码。它应该在已经打开的实例中打开模型,并在代码完成后保持打开状态


    如果没有帮助,我建议通过技术支持或LinkedIn上“PTV Vissim论坛”的帖子与PTV取得联系

    在代码末尾,尝试调用“vissim”对象(新行如下所示)。这在我的代码中起作用,防止它关闭。我相信它使程序处于等待下一个命令的等待状态;否则,软件到达代码末尾并关闭

    vissim = COM().startVissim()
    net = COM().loadNetwork(vissim)
    layout = COM().loadLayout(vissim)
    
    vissim ## new line of code
    

    这是脚本结束时的预期行为,因此Vissim将关闭。出于评估目的,您也许可以在程序结束时进行一次while循环,这样从技术上讲,程序将继续运行,因此vissim不会关闭

    但是,上述方法将不再允许您使用python与模拟交互。如果真的需要,我只是出于评估的目的使用它

    如果您希望保持Vissim运行并且仍然能够与之交互,我建议使用pythonidle。您可以每次手动在其中键入所有代码,或者只导入脚本文件。Python实例仍在运行,因此Vissim应用程序不会关闭,您仍然可以通过Python调用COM函数与Vissim交互

    要导入脚本文件,请执行以下操作:

    from foo import *
    
    假设您共享的上述脚本文件名为foo.py,并且您位于同一目录中,则应该加载Vissim,而不是关闭,并允许您添加其他代码