Vissim4.3之API/SDK編程;Vissim編程;


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

大約就是這個樣子.循環是相當的多的....

僅限於做少量的測試.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM