Выбор и запуск файла скрипта
В Vissim можно выбрать и выполнить внешние файлы скриптов. Поддерживаются следующие языки скриптов:
- Visual Basic *.vbs
- Javascript *.js
- Python *.py, *.pys (Применить Python как язык скрипта)
Не поддерживаются:
- оболочка wxPython;
- дистрибутив Python anaconda.
|
Рекомендация: В файле сети можно также управлять теми скриптами, которые выполняются во время текущей имитации в нужные моменты времени (Применить файлы скрипта на базе событий). |
Глобальная переменная Vissim может использоваться в скрипте без предварительной инициализации и непрерывно ссылается на программу Vissim, из которой был запущен скрипт. Дополнительно с помощью переменной CurrentScript можно указать на текущий скрипт, открывающий доступ, например, к пользовательским атрибутам.
В начале скрипта не требуется создавать объект Vissim с помощью команды CreateObject, так как Vissim уже запущен. Если в скрипте требуются дополнительные сеансы Vissim, то можно применить опцию CreateObject.
Скрипты могут использовать весь объем команд примененного языка скриптов, например, петли, ответвления, функции ввода и функции вывода.
В скриптах недопустимо наличие глобальных переменных.
Запуск файла скрипта
1. Выберите в меню Операции > Запустить файл скрипта.
Откроется окно.
2. Выберите папку, в которой сохранен файл скрипта.
3. Выберите нужный файл скрипта.
4. Нажмите кнопку Открыть.
Файл скрипта будет выполнен в Vissim.
Примеры файлов скриптов
В указанной далее папке находится сеть Vissim, которая использует файлы скрипта: ..\Examples Training\COM\Drop-off Zone. Пример представлен для Visual Basic Script (VBS) и Python.
С помощью двух следующих скриптов нагрузка первого интервала времени каждого входящего потока уменьшается в два раза.
Пример 1 для файла скрипта *.vbs
For each flow in all_flows
For i = 1 To all_flows.Count
flow.AttValue("Volume(1)") = 0.5 * flow.AttValue("Volume(1)")Next
Пример 2 для файла скрипта *.vbs
all_flows = Vissim.Net.VehicleInputs.GetAll
For i = 0 To UBound (all_flows)
all_flows(i).AttValue("Volume(1)") = 0.5 * all_flows(i).AttValue("Volume(1)")Next
Вышестоящая тема:
