مرجع
آخر الزيارات

STL

1٬162 كلمة•0 مشاهدة•🗒️ منذ 16 ساعة
باختصار: STL هو صيغة ملفات أصلية لبرامج التصميم بمساعدة الحاسوب (CAD) الخاصة بالطباعة المجسمة ستيريوليثغرافي التي ابتكرتها شركة (3 دي سيستمز). تتناول المقالة 10 أقسام، منها «endfacet»، «نبذة تاريخية» و«الثنائية».
المحتويات
  1. endfacet
  2. نبذة تاريخية
  3. الثنائية
  4. endsolid name
  5. solid name
  6. أسكي
  7. REAL32[3] – Vertex 3 - 12 bytes
  8. المتجه العمودي للوجه
  9. end
  10. UINT8[80] – Header - 80 bytes
STL

تعريفًا بالموضوع، STL هو صيغة ملفات أصلية لبرامج التصميم بمساعدة الحاسوب (CAD) الخاصة بالطباعة المجسمة ستيريوليثغرافي التي ابتكرتها شركة (3 دي سيستمز). ويذكر تشاك هال، مخترع الطباعة المجسمة ومؤسس شركة (3 دي سيستمز)، أن امتداد الملف هو اختصار لكلمة (stereolithography)، على الرغم من أنه يُشار إليه كذلك باسم "لغة المثلثات القياسية" أو "لغة الفسيفساء القياسية" . ونتناول فيما يلي مزيدًا من التفاصيل.

علاوةً على ذلك، يصف ملف STL سطحاً مثالثة خاماً وغير منظم عبر المتجه متجه وحدة ورؤوس المثلثات (المرتبة وفق قاعدة اليد اليمنى ) باستخدام نظام نظام إحداثيات ديكارتية ثلاثي الأبعاد. وكانت المواصفات الأصلية تفرض أن تكون جميع إحداثيات STL أرقاماً موجبة، إلا أن هذا القيد لم يعد مفروضاً، وأصبح من الشائع العثور على إحداثيات سالبة في ملفات STL اليوم. ولا تحتوي ملفات STL على معلومات حول المقياس (scale)، وتعتبر الوحدات فيها عشوائية. وتصف ملفات STL هندسة السطح فقط لجسم ثلاثي الأبعاد دون أي تمثيل للون أو الملمس أو سمات نموذج (CAD) الشائعة الأخرى. ويحدد تنسيق STL كلاً من تمثيلات أسكي وملف ثنائي. وتُعد الملفات الثنائية أكثر شيوعاً نظراً لكونها أكثر صغراً في الحجم.

ومن جهة أخرى، يُستعمل STL على نطاق واسع في النماذج الأولية السريعة، وطباعة ثلاثية الأبعاد، وتصنيع بمساعدة الحاسوب، كما تدعمه الكثير من الحزم البرمجية الأخرى.

endfacet

وفي هذا السياق، حيث يمثل كل من n أو v حسابات الفاصلة المتحركة بتنسيق إشارة-العلامة-e-الإشارة-أسيًا، مثلًا: 2.648000e-002. وينتهي الملف بـ:

نبذة تاريخية

وفي هذا الصدد، ابتكرت مجموعة ألبرت الإستشارية تنسيق STL لصالح شركة 3 دي سيستمز في سنة 1987. وقد طُوّر هذا التنسيق لأولى الطابعات ثلاثية الأبعاد التجارية التابعة لشركة (3 دي سيستمز). ومنذ إصداره الأولي، ظل التنسيق دون تغيير نسبيّاً لمدة 22 عاماً.

من جهة ثانية، وفي عام 2009، قُدّم مقترح لتحديث التنسيق أُطلق عليه اسم (STL 2.0)، والذي تطور لاحقاً ليصبح .

الصياغة

الثنائية

ومن ناحية أخرى، نظرًا لأن ملفات STL بتنسيق أسكي قد تكون كبيرة الحجم، يوجد إصدار ثنائي (ملف ثنائي) من STL. يحتوي ملف STL الثنائي على ترويسة بطول 80 حرفًا تتجاهل عمومًا، ولكن يجب ألا يبدأ أبدًا بالتمثيل النصي لكلمة solid بتنسيق أسكي، لأن ذلك قد يؤدي ببعض البرامج إلى الخلط بينه وبين ملف ASCII STL. ويلي الرأس عدد صحيح غير موقع (عدد صحيح (علوم حاسوب)) بطول 4 بايت وبترتيب البايتات الأصغر أولا يشير إلى عدد الأوجه المثلثية في الملف. وتتبع ذلك البيانات التي تصف كل مثلث على حدة، وينتهي الملف ببساطة بعد المثلث الأخير.

ومن جهة أخرى، تُمثَّل أرقام الفاصلة العائمة كأرقام فاصلة عائمة وفق معيار أي إي إي إي 754 ويُفترض أن تكون بترتيب البايتات الأصغر أولاً (ترتيب البايتات)، على الرغم من أن هذا لم يُذكر صراحة في الوثائق.

من جانب آخر، يوصف كل مثلث عبر 12 رقماً من أرقام الفاصلة العائمة بعرض 32 بت: 3 للمتجه العمودي (normal) ثم 3 لكل من إحداثيات X/Y/Z لكل رأس – تماماً كما هو الحال في إصدار أسكي من STL. ويلي ذلك عدد صحيح غير موقع بطول 2 بايت ("short") يمثل "عدد بايتات السمات" (attribute byte count) – وفي التنسيق القياسي، يجب أن يكون هذا الرقم صفراً لأن أغلب البرامج لا تفهم أي شيء آخر.

endsolid name

وعلى صعيد آخر، يوحي هيكل التنسيق بوجود احتمالات أخرى (مثل الأوجه التي تحتوي على أكثر من حلقة loop واحدة، أو الحلقات التي تضم أكثر من ثلاثة رؤوس)، على الرغم من أن وصف تنسيق الملف يشير فقط إلى فسيفساء (رياضيات) المثلثية.

كذلك، ويمكن استخدام (المسافات، وعلامات الجدولة، والأسطر الجديدة) في أي مكان في الملف باستثناء داخل الأرقام أو الكلمات. وتعد المسافات بين facetو normal وبين outer وloop إلزامية.

solid name

  • facet normal ni nj nk
  • outer loop
  • vertex v1x v1y v1z
  • vertex v2x v2y v2z
  • vertex v3x v3y v3z
  • endloop

علاوةً على ذلك، حيث يمثل (اسم) name سلسلة نصية اختيارية (وعلى الرغم من ذلك، إذا حُذف الاسم name، فيجب أن تظل هناك مسافة بعد كلمة solid لضمان التوافق مع بعض البرامج). يتجاهل البرنامج بقية السطر، ويُستعمل أحياناً لتخزين البيانات الوصفية (مثل اسم الملف، المؤلف، تاريخ التعديل، إلخ). ويستمر الملف بعدد من المثلثات، يُمثَّل كل منها على النحو التالي:

أسكي

يبدأ ملف STL بتنسيق ASCII بالسطر التالي:

REAL32[3] – Vertex 3 - 12 bytes

UINT16 – Attribute byte count - 02 bytes

المتجه العمودي للوجه

ومن جهة أخرى، يجب أن يكون ناظم سطح المتجه العمودي للوجه في كل من إصداري أسكي والثنائي من STL عبارة عن متجه وحدة يتجه نحو الخارج من الجسم الصلب. وفي أغلب البرمجيات، يمكن ضبط هذا المتجه على القيمة (0,0,0)، حيث يقوم البرنامج تلقائياً بحساب المتجه العمودي بناءً على ترتيب رؤوس المثلث باستخدام قاعدة اليد اليمنى، أي تُدرج الرؤوس بترتيب عكس عقارب الساعة عند النظر إليها من الخارج.

  • انظر كذلك
  • طباعة ثلاثية الأبعاد
  • سوليد ووركس
  • 3 دي سيستمز
  • ستيريوليثغرافي

في هذا الإطار، وتقوم بعض أدوات تحميل ملفات STL بالتحقق من مطابقة المتجه العمودي الموجود في الملف مع المتجه الذي تحسبه باستخدام قاعدة اليد اليمنى، وتنبّه المستعمل في حال عدم التطابق. بينما قد تتجاهل برمجيات أخرى المتجه العمودي للوجه تماماً وتعتمد فقط على قاعدة اليد اليمنى. وبالرغم من ندرة تحديد متجه عمودي لا يمكن حسابه باستخدام قاعدة اليد اليمنى، إلا أنه ولضمان قابلية النقل الكاملة للملف، يجب أن يوفر الملف كلاً من المتجه العمودي للوجه وترتيب الرؤوس بشكل مناسب. ويُعد برنامج سوليد ووركس استثناءً ملحوظاً، حيث يستعمل المتجه العمودي لإضافة تأثيرات التظليل.

end

إضافةً إلى ذلك، البت 15 يكون 1 إذا كان اللون صالحاً، أو 0 إذا كان اللون غير صالح (كما هو الحال في ملفات STL العادية).

  • البتات 0–4 هي مستوى كثافة اللون الأزرق (0–31).
  • البتات 5–9 هي مستوى كثافة اللون الأخضر (0–31).
  • البتات 10–14 هي مستوى كثافة اللون الأحمر (0–31).

وفي هذا السياق، تستعمل الحزم البرمجية الكاميرا التصويرية (VisCAM) والعرض الصلب (SolidView) بايتات "عدد بايتات السمات" (attribute byte count) الاثنين في نهاية كل مثلث لتخزين لون النموذج اللوني أحمر أخضر أزرق بعرض 15 بت:

وعلى صعيد آخر، يستعمل برنامج (Materialise Magics) الرأس (header) المكون من 80 بايتاً في بداية الملف لتمثيل اللون العام للجزء بأكمله. وفي حال استخدام اللون، يجب أن يتضمن الرأس في مكان ما سلسلة أسكي النصية COLOR= تليها أربعة بايتات تمثل الأحمر والأخضر والأزرق وتجميع ألفا (الشفافية) في نطاق 0–255. وهذا هو لون الجسم بأكمله، ما لم يتم تجاوزه عند كل وجه. كما يتعرف برنامج (Magics) كذلك على وصف المادة؛ وهي خاصية أكثر تفصيلاً للسطح. فمباشرة بعد تحديد COLOR=RGBA، يجب أن توجد سلسلة ASCII أخرى هي ،المواد= تليها ثلاثة ألوان (3×4 بايت): الأول هو لون انعكاس عشوائي (الانعكاس المنتشر)، والثاني هو لون (اللمعان المرآوي)، والثالث هو الضوء المحيط (ambient light). وتُفضل إعدادات المادة على إعدادات اللون. أما لون كل وجه فيُمثَّل في بايتي "عدد بايتات السمات" كما يلي:

وفي هذا الصدد، ينعكس ترتيب الألوان الأحمر/الأخضر/الأزرق داخل هذين البايتين في هذين النهجين؛ لذا، ورغم أنه كان من السهل جعل هذه التنسيقات متوافقة، فإن عكس ترتيب الألوان يعني أنها ليست كذلك – والأسوأ من ذلك أن قارئ ملفات STL العام لا يمكنه التمييز بينهما تلقائياً. كما لا توجد طريقة لجعل الأوجه شفافة بشكل انتقائي لعدم وجود قيمة "ألفا" لكل وجه، رُغم أن هذا ليس مهماً في سياق آلات النمذجة السريعة الحالية.

  • البتات 0–4 هي مستوى كثافة اللون الأحمر (0–31).
  • البتات 5–9 هي مستوى كثافة اللون الأخضر (0–31).
  • البتات 10–14 هي مستوى كثافة اللون الأزرق (0–31).

ومن ناحية أخرى، يوجد على الأقل نوعان من الاختلافات غير القياسية في تنسيق STL الثنائي لإضافة معلومات الألوان:

وفي هذا الصدد، البت 15 يكون 0 إذا كان لهذا الوجه لونه الفريد الخاص، أو 1 إذا كان سيتم استخدام لون الجسم العام.

UINT8[80] – Header - 80 bytes

  • UINT32 – Number of triangles - 04 bytes
  • foreach triangle - 50 bytes
  • REAL32[3] – Normal vector - 12 bytes
  • REAL32[3] – Vertex 1 - 12 bytes
  • REAL32[3] – Vertex 2 - 12 bytes

ما رأيك في هذه المقالة؟

📝 هل في هذه المقالة خطأ؟

إذا وجدت معلومة تحتاج تصحيحاً أو إضافة، أو أردت حذف المقالة، أرسل لنا طلباً وسنراجعه.