Scripting in Vissim

Hinweis: Vissim-Demo-Versionen unterstützen nicht das Ausführen von Skripten über die COM-Schnittstelle.

Hinweis: Microsoft ersetzt VBS  VBScript deprecation: Timelines and next steps

Einsatzzweck der Scripting-API mit dem Zusatzmodul COM-Schnittstelle

Vissim verfügt über eine Scripting-API, die das Zusatzmodul COM-Schnittstelle verwendet ( Wikipedia: Component Object Model, (Übersicht Zusatzmodule). Dies können Sie beispielsweise für folgende Zwecke einsetzen:

  • Vorbereitung und Nachverarbeitung von Daten
  • Effizient den Ablauf für die Untersuchung von Szenarien steuern
  • Steuerungsalgorithmen einbinden, die Sie selbst definiert haben
  • Zugriff auf alle Attribute der Netzobjekte
Möglichkeiten, die COM-Schnittstelle für die Interaktion mit Vissim zu verwenden

Sie können Skripte extern und intern verwenden. Die beiden Möglichkeiten unterscheiden sich in folgenden technischen Aspekten:

  • Externe Skripte (Anforderungen und Hinweise für externe Skripte): Vissim startet und steuert ein externes Skript über COM. Dabei sind Ihr eigenes Skript und Vissim zwei separate Windows-Prozesse, die über COM miteinander kommunizieren. Sie können jede Programmiersprache verwenden, die COM unterstützt, beispielsweise Python, C++, Java

  • Interne Skripte (Anforderungen und Hinweise für interne Skripte): Sie können Skripte direkt ausführen oder zu bestimmten Zeitpunkten während des Simulationslaufs:

  • ►  Wählen Sie im Menü Aktionen > Ereignisbasierte Skripte.

oder

  • ►  Wählen Sie im Menü Aktionen > Skriptdatei ausführen.

Ausschließlich Python-Skripte und VBS-Skripte werden unterstützt. Interne Skripte werden innerhalb des aktuellen Vissim-Prozesses ausgeführt. Dadurch ist die Geschwindigkeit, mit der interne Skripte ausgeführt werden, in der Regel höher als bei externen Skripten. Es gelten Einschränkungen (Anforderungen und Hinweise für interne Skripte).

Video: Scripting in PTV Vissim using the COM interface

Hinweis: Die Wiedergabe des Videos in Vollansicht ist nur in Google Chrome und Microsoft Edge möglich. Zur Ansicht in anderen Browsern klicken Sie auf den Titel des Videos in der Voransicht.

Einführung in COM-Programmierung und COM API-Referenz

Eine Einführung in die COM-Programierung, Informationen zu den verfügbaren Funktionen und den zugehörigen Kommandos finden Sie in englischer Sprache in der Vissim - COM API reference, die Sie im Browser anzeigen können:

  • ►  Wählen Sie im Menü Hilfe > COM-Hilfe.

Beispiele dazu finden Sie standardmäßig in folgendem Verzeichnis:

  • ..\Benutzer\Öffentlich\Öffentliche Dokumente\PTV Vision\ PTV Vissim 2025\Examples Training\COM\

Anforderungen und Hinweise für externe Skripte

Um Vissim zu starten und mit Vissim zu interagieren, können Sie jede Programmiersprache verwenden, die COM unterstützt. Informationen und Beispiele finden Sie standardmäßig in folgendem Verzeichnis:

..\Benutzer\Öffentlich\Öffentliche Dokumente\PTV Vision\ PTV Vissim 2025\Examples Training\COM\Basic Commands.

Python-Versionen

Verwenden Sie die Python-Version Ihrer Wahl, mindestens Python 3.9 64-Bit.

Vissim verwendet für die mit Vissim ausgelieferten Beispiele das Python-Paket pywin32, um COM in Python zu unterstützen.

Anforderungen und Hinweise für interne Skripte

Vissim unterstützt als interne Skripte ausschließlich Python- und VBS-Skripte.

Ein Beispiel finden Sie standardmäßig in folgendem Verzeichnis:

..\Examples Training\COM\Drop-off Zone.

Die globale Variable Vissim ist in den Skripten direkt verfügbar und ist eine IVissim-Schnittstelle, die auf die Vissim-Instanz verweist, die das Skript gestartet hat. Informationen finden Sie in der Vissim- COM API reference.

Das interne Skript wird direkt aus Vissim im Vissim-Prozess ausgeführt. Deshalb brauchen Sie Vissim nicht manuell zu starten. Bei Bedarf können Sie weitere Instanzen von Vissim starten. Dafür müssen Sie über entsprechende Lizenzen verfügen. In Bezug auf weitere, gestartete Instanzen von Vissim behandelt Vissim das Skript als externes Skript.

Zusätzlich können Sie die Variable CurrentScript verwenden, um einen Verweis auf das aktuelle Skript zu erstellen, beispielsweise, um dort auf benutzerdefinierte Attribute zuzugreifen.

Das Debuggen interner Skripte ist schwieriger als das Debuggen externer Skripte, da Vissim die Skripte selbst startet, Sie selbst können ein internes Skript nicht direkt in einem Debugger starten.

Abhängig vom Anwendungsfall kann es sinnvoll sein, das Skript zunächst als externes Skript zu schreiben und es anschließend in ein internes Skript zu konvertieren.

Sie können zudem die Funktion IVissim.Log verwenden, um Debug-Meldungen in die Liste Meldungen von Vissim zu schreiben.

Python als Teil der Vissim-Installation

Standardmäßig ist im Vissim-Installationsverzeichnis Python im folgenden Verzeichnis installiert:

..\Exe\Python

Diese Installation wird von jedem Python-Skript verwendet, das innerhalb von Vissim ausgeführt wird. Deshalb müssen Sie Python nicht manuell installieren, um interne Skripte auszuführen. .Vissim verwendet das Python-Paket pywin32, um COM in Python zu unterstützen.

Hinweis: Verändern Sie nicht das mit Vissim installierte Python, installieren Sie beispielsweise nicht zusätzliche Pakete, um diese in internen Skripten verfügbar zu machen. Veränderungen können Probleme verursachen, beispielsweise:

  • Unerwünschtes Verhalten von Vissim
  • Fehlerhafte Installation von Updates
  • Fehlerhafte Installation neuerer Versionen von Vissim
  • Unvollständige Deinstallation von Vissim
Zusätzliche Pakete in internen Skripten

1.  Zeigen Sie im Windows Explorer das Verzeichnis an, in dem die Python-Version mit Vissim installiert wurde.

Dies ist standardmäßig das Verzeichnis ..\Exe\Python.

2.  Klicken Sie mit der rechten Maustaste auf die Datei python.exe und wählen Sie im Kontextmenü Eigenschaften > Details.

3.  Ermitteln Sie die Produktversion, die dort angezeigt ist.

Für Vissim 2026 ist dies beispielsweise Python 3.13.

4.  Laden Sie von https://www.python.org/ dieselbe Hauptversion herunter, beispielsweise Python 3.13.* in 64 Bit für Vissim 2026.

5.  Installieren Sie diese Python-Version außerhalb des Vissim-Installationsverzeichnisses auf Ihrem Computer.

6.  Erstellen Sie eine dedizierte virtuelle Umgebung venv für diese Installation in einem Verzeichnis außerhalb des Vissim-Installationsverzeichnisses und außerhalb des Python-Installationsverzeichnisses, beispielsweise in Ihrem Home-Verzeichnis:

py.exe -3.13 -m venv "C:\Users\<name>\python313_venv_vissim"

7.  Installieren Sie die gewünschten Pakete in dieser venv, beispielsweise pandas:

C:\Users\<name>\python313_venv_vissim\Scripts\pip.exe install pandas

8.  Fügen Sie in Ihrem internen Skript den Pfad zum venv-Verzeichnis am Anfang des Skripts zur sys.path-Liste hinzu, beispielsweise:

import sys

sys.path.append(r"C:\Users\<name>\python313_venv_vissim\Lib\site-packages")

Hinweise:

  • Durch diese Pfadangabe findet Python die zusätzlichen Pakete, die Sie anschließend importieren. Importieren Sie Pakete erst nach diesem Schritt, der Pfad zum venv-Verzeichnis muss vor dem Import eingegeben sein.
  • Verweisen Sie sys.path nicht direkt auf die separate Python-Installation. Erstellen Sie stattdessen ein dediziertes venv und lassen Sie sys.path darauf verweisen. Andernfalls versuchen Ihre Skripte möglicherweise, inkompatible Basisbibliotheken zu laden, die sowohl im Vissim-Installationsverzeichnis als auch in Ihrer eigenen Python-Installation enthalten sind.
  • Installieren Sie pywin32 nicht in Ihrem venv, da es standardmäßig bereits im Vissim-Installationsverzeichnis verfügbar ist. Die Installation kann Inkompatibilitäten verursachen.

Über die COM-Schnittstelle auf Attribute zugreifen

Sie können auf alle Attribute der Netzobjekte mit der Methode AttValue lesend zugreifen. Schreibender Zugriff ist nicht auf alle Attribute möglich. In der COM-Hilfe gibt für jedes Attribut die Zeile Editable mit dem Wert True oder False an, ob auf das Attribut schreibend zugegriffen werden kann oder nicht.