vissim4.3 是德国PTV公司的一款微观交通模拟软件.
其可以模拟道路车辆,红绿灯运行,可以模拟3D的景象.我这里直说2D
在2D的一段道路上,有车在运动,如何获取车子的坐标信息呢??
根据Vissim文档,可以通过Vissim的COM编程接口进行编程,COM接口可以使用VB(s)/VC/Python/等所有支持COM的语言编程.
其步骤是:1 安装vissim软件,4.3很特殊,有个破解的license,但是要修改时间为2008年,具体可以到 智能交通 论坛下载.
2.安装VB,如果使用VBS可直接开始编程.我使用了VB6进行编程.(没办法,虽然老,但是无法替代啊.)
3.新建立VB工程,默认的exe就可以.
然后在工程->引用 ->浏览 添加 C:\PTV_Vision\VISSIM430\Exe\vissim.exe 这个vissim的可执行文件(其也是COM Server的组件)
然后 整一个按钮,双击开始添加代码
Dim vis As vissim Dim SIM As Simulation Dim vehins As VehicleInputs Dim vehin As VehicleInput Dim vehicles As vehicles Dim vehicle As vehicleSet vis = CreateObject("VISSIM.Vissim") 'NEW Vissimvis.LoadNet "C:\PTV_Vision\VB COM for VISSIM\Demo_VISSIM_CrossTraffic_INP\crossTraffic.inp"Set vehins = vis.Net.VehicleInputsSet vehicles = vis.Net.vehiclesSet SIM = vis.SimulationFor i = 1 To vehins.CountIf True ThenSet vehin = vehins(i) 'or vehins.Item(i)msgbox "VeHins.Count=(" & vehins.Count & ");i =" & imsgbox "VeHin.name=" & vehin.Name & vbCrLf _& "VeHin.ID=" & vehin.ID & vbCrLf _& "VeHin.AttValue(TIMEFROM)=" & vehin.AttValue("TIMEFROM") & vbCrLf _& "VeHin.AttValue(TIMEUNTIL)=" & vehin.AttValue("TIMEUNTIL") & vbCrLf _& "VeHin.AttValue(VOLUME)=" & vehin.AttValue("VOLUME") & vbCrLf & "==============================" & vbCrLfEnd IfNext 'iFor i = 0 To 1000SIM.RunSingleStepIf vehicles.Count > 0 ThenCall ShowAllVehiclesEnd Ifvis.DoEventsNextSIM.StopMsgBox "End() Success"Sub showAllvehiclesDim jFor j = 1 To vehicles.CountSet vehicle = vehicles(j) 'or vehicles.Item(i)msgbox "Vehicles.count=(" & vehicles.Count & ");j=" & jmsgbox "vehicle.name=" & vehicle.Namemsgbox "vehicle.ID=" & vehicle.IDmsgbox "vehicle.AttValue(POINT).X=" & vehicle.AttValue("POINT").Xmsgbox "vehicle.AttValue(POINT).Y=" & vehicle.AttValue("POINT").Ymsgbox "vehicle.AttValue(POINT).Z=" & vehicle.AttValue("POINT").ZSet vehicle = NothingNext End Sub
大约就是这个样子.循环是相当的多的....
仅限于做少量的测试.