Python 如何正确调用 vissim 的 GetResult?

问答 浅唱 ⋅ 于 2019-04-11 16:22:26 ⋅ 最后回复由 青牛 2019-04-12 09:46:33 ⋅ 4616 阅读

这是源代码

coding=utf-8

import win32com.client as COM
vissim_com=COM.Dispatch("Vissim.Vissim")
vissim_com.LoadNet('D:\vissim\test\21.inp')
vissim_com.LoadLayout('D:\vissim\test\vissim.ini')
vnet=http://vissim_com.Net
sim=vissim_com.Simulation
eval=vissim_com.Evaluation
datapoints=vnet.Datacollections
datapoint1=datapoints.GetDataCollectionByNumber(1)
ptime=7201
stime=5
sim.Period=ptime
sim.Resolution=stime
sim.Speed=0
a=[]
for i in range(3600):
sim.RunSingleStep
volume1=datapoint1.GetResult('NVEHICLES','SUM',0)

不知道为什么,出现错误:

File "D:/Control/testvissim.py", line 23, in

volume1=datapoint1.GetResult('NVEHICLES','SUM',0)

File "", line 3, in GetResult

File "D:\anaconda\lib\site-packages\win32com\client\dynamic.py", line 287, in ApplyTypes

result = self.oleobj.InvokeTypes(*(dispid, LCID, wFlags, retType, argTypes) + args)

pywintypes.com_error: (-2147352567, '发生意外。', (0, None, 'Method call only possible during a simulation run.', 'VISSIMCOM.HLP', 131200, -2147467259), None)

成为第一个点赞的人吧 :bowtie:
回复数量: 1
  • 青牛 海汼部落创始人,80后程序员一枚,曾就职于金山,喜欢倒腾技术做产品
    2019-04-12 09:46:33

    这个问题的描述是说 这个方法必须在运行计算的时候才能调用 也就是说你的方法中没有进行计算

暂无评论~~
  • 请注意单词拼写,以及中英文排版,参考此页
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`, 更多语法请见这里 Markdown 语法
  • 支持表情,可用Emoji的自动补全, 在输入的时候只需要 ":" 就可以自动提示了 :metal: :point_right: 表情列表 :star: :sparkles:
  • 上传图片, 支持拖拽和剪切板黏贴上传, 格式限制 - jpg, png, gif,教程
  • 发布框支持本地存储功能,会在内容变更时保存,「提交」按钮点击时清空
Ctrl+Enter