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 vehicle Set vis = CreateObject("VISSIM.Vissim") 'NEW Vissim vis.LoadNet "C:\PTV_Vision\VB COM for VISSIM\Demo_VISSIM_CrossTraffic_INP\crossTraffic.inp" Set vehins = vis.Net.VehicleInputs Set vehicles = vis.Net.vehicles Set SIM = vis.Simulation For i = 1 To vehins.Count If True Then Set vehin = vehins(i) 'or vehins.Item(i) msgbox "VeHins.Count=(" & vehins.Count & ");i =" & i msgbox "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 & "==============================" & vbCrLf End If Next 'i For i = 0 To 1000 SIM.RunSingleStep If vehicles.Count > 0 Then Call ShowAllVehicles End If vis.DoEvents Next SIM.Stop MsgBox "End() Success" Sub showAllvehicles Dim j For j = 1 To vehicles.Count Set vehicle = vehicles(j) 'or vehicles.Item(i) msgbox "Vehicles.count=(" & vehicles.Count & ");j=" & j msgbox "vehicle.name=" & vehicle.Name msgbox "vehicle.ID=" & vehicle.ID msgbox "vehicle.AttValue(POINT).X=" & vehicle.AttValue("POINT").X msgbox "vehicle.AttValue(POINT).Y=" & vehicle.AttValue("POINT").Y msgbox "vehicle.AttValue(POINT).Z=" & vehicle.AttValue("POINT").Z Set vehicle = Nothing Next End Sub
大約就是這個樣子.循環是相當的多的....
僅限於做少量的測試.