ما هو ملف E57؟
الملف ذو الامتداد .e57 هو تنسيق ملف مضغوط محايد من قبل البائع يُستخدم لتخزين وتبادل بيانات التصوير ثلاثي الأبعاد (3D) مثل السحب النقطية والصور والبيانات الوصفية. غالبًا ما يتم إنشاء مثل هذه البيانات باستخدام أنظمة مثل الماسحات الضوئية الليزرية. تم تطويره من قبل اللجنة الفرعية للتشغيل البيني للبيانات التابعة للجنة ATSM E57 لأنظمة التصوير ثلاثية الأبعاد. E57 هو مصدر مفتوح ويخزن بيانات النقاط ثلاثية الأبعاد وسماتها (مثل اللون والشدة) والصور ثنائية الأبعاد كما تم التقاطها بواسطة نظام التصوير ثلاثي الأبعاد.
تنسيق ملف E57
تتوفر مواصفات تنسيق ملف E57 على موقع ATSM ويمكن الرجوع إليها كمرجع للمطور. الورقة المفاهيمية والتفاصيل الفنية لتنسيق ملف E57 متاحة كمواد مرجعية بواسطة Daniel Huber. يتم حفظ البيانات في ملف E57 في هيكل شجرة هرمي قائم على XML كما هو موضح في الصورة التالية. عند المستوى المنخفض ، يتم حفظ ملفات E57 كملفات ثنائية مضغوطة لجعل حجم الملف مضغوطًا.
هيكل ملف E57
هيكل ملف E57 كما هو موضح في الجدول التالي.
هيكل الملف |
---|
رأس |
قسم ثنائي (نقاط) |
قسم ثنائي (نقاط) |
… |
… |
قسم ثنائي (صورة) |
قسم XML |
رأس E57
رأس E57 عبارة عن بنية ثنائية صغيرة مكونة من 48 بايت تحتوي على معلومات مهمة على مستوى الملف ، مثل رقم الإصدار وموقع قسم XML. يمكن تمثيلها بشكل عملي على النحو التالي.
struct E57FileHeader {
char fileSignature[8];
uint32_t majorVersion;
uint32_t minorVersion;
uint64_t filePhysicalLength;
uint64_t xmlPhysicalOffset;
uint64_t xmlLogicalLength;
uint64_t pageSize;
}
التسلسل الهرمي لـ XML
يصف قسم XML لملف E57 التسلسل الهرمي للشجرة باستخدام مجموعة فرعية من XML القياسي. يعتمد هذا على ثمانية أنواع من عناصر E57 حيث يتم بناء كل عنصر باستخدام مجموعة من اللبنات الأساسية. خمسة من هذه العناصر E57 هي أنواع طرفية وثلاثة منها غير طرفية.
أنواع المحطات
“عدد صحيح” - عدد صحيح بعلامة يصل حجمه إلى 63 بت
“Float” - يخزن رقم فاصلة عائمة مفردة أو مزدوجة الدقة بتنسيق IEEE 754-1985
“ScaledInteger” - يخزن رقمًا به جزء كسري كعدد صحيح جنبًا إلى جنب مع المقياس والإزاحة
“سلسلة” - تخزن البيانات النصية بترميز UTF-8 وتدعم الأحرف الدولية
“Blob” - يخزن كتلة مبهمة من البيانات الثنائية التي يفسرها القارئ اعتمادًا على السياق.
الأنواع غير الطرفية
“الهيكل” - يحتوي على مجموعة غير مرتبة من عناصر E57 من أي نوع. هيكل E57 مشابه لبنية في لغة البرمجة سي.
“Vector” - يحتوي على قائمة مرتبة بالعناصر ذات النوع المتماثل إلى حد كبير. تسمح العلامة الموجودة في العنصر بتقييد العناصر بطريقة متطابقة تمامًا إذا رغبت في ذلك.
“CompressedVector” - يحتوي على قائمة مرتبة من العناصر ذات النوع المتماثل ، والتي يتم ضغطها بتنسيق ثنائي. كما هو الحال مع نوع بيانات Blob ، يتم تقسيم تمثيل CompressedVector إلى جزء XML وجزء ثنائي.