بنية المُصدِّر
المُصدِّر هو الجسر بين بيانات drawtonomy داخل المحرر والصيغ الخارجية — OpenDRIVE وOpenSCENARIO وLanelet2 أو أيًا كان ما تضيفه لاحقًا. فهم خط الأنابيب شرط مسبق لإضافة صيغة هدف جديدة.
خط الأنابيب
Section titled “خط الأنابيب”حالة المحرر ──► DrawtonomySnapshot ──► المُصدِّر ──► ملف / blob (قابل للتسلسل) (نقي)1. DrawtonomySnapshot
Section titled “1. DrawtonomySnapshot”اللقطة كائن عادي: قائمة أشكال بالإضافة إلى ختم إصدار وطابع زمني. قابلة للتسلسل، ولا تحتوي مراجع DOM، وهي المدخل الوحيد الذي يأخذه المُصدِّر.
interface DrawtonomySnapshot { version: string timestamp: string shapes: BaseShape[]}تبني لقطة بـ createSnapshot(shapes)، أو بتحليل drawtonomy.svg محفوظ بـ parseDrawtonomySvg(svg).
2. وحدات المُصدِّر
Section titled “2. وحدات المُصدِّر”كل صيغة هدف هي دالة نقية منفصلة:
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 }
تأخذ لقطة، وتُعيد سلسلة أو blob. لا وصول إلى المحرر، ولا DOM، ولا تبعيات غير متزامنة. المدخل نفسه، المخرج نفسه.
3. الدورة الكاملة
Section titled “3. الدورة الكاملة”لـ Lanelet2، تُشحن SDK محللًا أيضًا:
exporter.parseOsmXml(osm) → ParsedOsmexporter.osmToShapes(parsed) → BaseShape[]
هذا ما يُشغّل تدفق استيراد Lanelet2.
لماذا الدوال النقية
Section titled “لماذا الدوال النقية”يُشغّل المُصدِّر مسار الشيفرة نفسه في المتصفح، وفي نص CI لـ Node، وفي خط أنابيب على الخادم، وفي ملحق متصفح. تجري الاختبارات على ملفات لقطة ثابتة دون متصفح بدون رأس.
لهذا يعيش المُصدِّر في @drawtonomy/sdk وليس داخل المحرر — فالمحرر يعتمد على SDK، لا العكس.
إضافة صيغة هدف
Section titled “إضافة صيغة هدف”المُصدِّر هو نقطة التوسعة الرئيسية للأهداف الجديدة — CARLA وUnity وSUMO وDSL مخصصة. الوصفة:
- أضف وحدة جديدة تحت
packages/drawtonomy-sdk/src/exporter/. - خذ
DrawtonomySnapshotكمدخل وأعد سلسلة أو blob. - أضف اختبارات تحت
packages/drawtonomy-sdk/__tests__/exporter/باستخدام ملفات لقطة ثابتة. - وصل نقطة دخول لواجهة المستخدم إن أردت أن تعرف قائمة Export في المحرر بها (اختياري — كثير من المستخدمين سيستدعونها برمجيًا).
دليل المطوّر الكامل في المستودع العام: دليل مطوّر المُصدِّر.
انظر أيضًا
Section titled “انظر أيضًا”- التصدير إلى OpenDRIVE / OpenSCENARIO / esmini — التدفق الذي يراه المستخدم.
- نظرة عامة على
@drawtonomy/sdk - واجهة API لـ Exporter SDK