Exporter-Architektur
Der Exporter ist die Brücke zwischen den Editor-internen Daten von drawtonomy und externen Formaten — OpenDRIVE, OpenSCENARIO, Lanelet2 oder was auch immer Sie als Nächstes anschließen. Verständnis der Pipeline ist Voraussetzung dafür, ein neues Zielformat hinzuzufügen.
Die Pipeline
Abschnitt betitelt „Die Pipeline“Editor-Zustand ──► DrawtonomySnapshot ──► Exporter ──► Datei / Blob (serialisierbar) (rein)1. DrawtonomySnapshot
Abschnitt betitelt „1. DrawtonomySnapshot“Ein Snapshot ist ein einfaches Objekt: eine Liste von Formen plus einen Versionsstempel und einen Zeitstempel. Er ist serialisierbar, hat keine DOM-Referenzen und ist die einzige Eingabe, die der Exporter entgegennimmt.
interface DrawtonomySnapshot { version: string timestamp: string shapes: BaseShape[]}Sie erzeugen einen Snapshot mit createSnapshot(shapes) oder durch
Parsen einer gespeicherten drawtonomy.svg mit
parseDrawtonomySvg(svg).
2. Die Exporter-Module
Abschnitt betitelt „2. Die Exporter-Module“Jedes Zielformat ist eine eigene reine Funktion:
exporter.exportToOpenDrive(snapshot, options) → string(XML)exporter.exportToOpenScenario(snapshot, options) → string(XML)exporter.exportToLanelet2(snapshot, options) → string(OSM-XML)exporter.buildEsminiZip(snapshot, options) → { blob, baseName }
Sie nehmen einen Snapshot entgegen und liefern einen String oder ein Blob. Kein Editor-Zugriff, kein DOM, keine asynchronen Abhängigkeiten. Gleiche Eingabe, gleiche Ausgabe.
3. Hin- und Rückreise
Abschnitt betitelt „3. Hin- und Rückreise“Für Lanelet2 liefert das SDK zusätzlich einen Parser:
exporter.parseOsmXml(osm) → ParsedOsmexporter.osmToShapes(parsed) → BaseShape[]
Das treibt den Ablauf des Lanelet2-Imports an.
Warum reine Funktionen
Abschnitt betitelt „Warum reine Funktionen“Der Exporter durchläuft denselben Codepfad im Browser, in einem Node-CI-Skript, in einer serverseitigen Pipeline oder in einer Browser-Erweiterung. Tests laufen gegen Snapshot-Fixtures ohne Headless-Browser.
Deshalb lebt der Exporter in @drawtonomy/sdk und nicht im Editor
— der Editor hängt vom SDK ab, nicht umgekehrt.
Ein Zielformat hinzufügen
Abschnitt betitelt „Ein Zielformat hinzufügen“Der Exporter ist der Haupterweiterungspunkt für neue Ziele — CARLA, Unity, SUMO, eigene DSLs. Das Rezept:
- Ein neues Modul unter
packages/drawtonomy-sdk/src/exporter/anlegen. DrawtonomySnapshotals Eingabe nehmen, einen String oder ein Blob zurückgeben.- Tests unter
packages/drawtonomy-sdk/__tests__/exporter/mit Snapshot-Fixtures hinzufügen. - Optional einen UI-Einstiegspunkt verkabeln, wenn das Export-Menü des Editors davon wissen soll (viele Anwender werden ihn programmatisch aufrufen).
Die vollständige Entwickleranleitung liegt im öffentlichen Repo: Exporter Developer Guide.
Siehe auch
Abschnitt betitelt „Siehe auch“- Export nach OpenDRIVE / OpenSCENARIO / esmini — der nutzerseitige Ablauf.
@drawtonomy/sdk-Übersicht- Exporter-SDK-API