العمل مع KOMPAS-3D API → الدرس 12 → الخطوط المركبة

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




محتوى سلسلة الدرس "العمل مع KOMPAS-3D API"


  1. الأساسيات
  2. تصميم رسم
  3. اتصال صحيح بـ KOMPAS
  4. النقش الرئيسي
  5. البدائيون الرسم
  6. حفظ مستند بتنسيقات مختلفة
  7. التعرف على الإعدادات
  8. طرق كتابة أكثر تعقيدًا في كتلة العنوان
  9. قراءة خلايا الترجمة
  10. أحرف خاصة بما في ذلك سلسلة
  11. تسميات نصية بسيطة
  12. سلاسل مركبة

على الرغم من أن الطرق الموصوفة لبناء الانحرافات والكسور غير موثقة ، إلا أنها ، كما تظهر تجربتي ، تعمل بشكل صحيح على الإصدارات الحديثة من KOMPAS (تم فحصها في 15 و 16 و 17). ولكن قد يتغير هذا السلوك في الإصدارات المستقبلية.

سيتم وصف الطرق "الصحيحة" لبناء السلاسل المركبة في الدروس التالية.

مائل وجريء وتسطير


يتم التحكم في الأنماط المائلة والجريئة والمسطرة بواسطة الأعلام الموضحة في الجدول أدناه. يتم تعريفها في ملف الرأس ldefin2d.h .



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

Document2D->ksText(100, 100, 0, 0, 0, 0 , SysAllocString(L" ")); Document2D->ksText(100, 90, 0, 0, 0, ITALIC_OFF , SysAllocString(L"  ")); Document2D->ksText(100, 80, 0, 0, 0, BOLD_ON , SysAllocString(L" ")); Document2D->ksText(100, 70, 0, 0, 0, UNDERLINE_ON, SysAllocString(L" ")); 

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

يرجى ملاحظة ما يلي: افتراضيًا ، يعرض KOMPAS النص بخط مائل. لذلك ، لإلغاء الخط المائل ، نستخدم علامة ITALIC_OFF . يوضح الشكل أدناه خطوط الإخراج بواسطة هذا البرنامج.



لا يؤثر الاستخدام المتزامن للعلامات المزدوجة (على سبيل المثال ، BOLD_ON و BOLD_OFF ) على عرض السلسلة. يتم عرضه كما سيتم عرضه إذا لم يتم تعيين أي من هذه العلامات.

الانحرافات العلوية والسفلية


يتم تعيين الانحرافات العلوية والسفلية باستخدام الأعلام الموضحة في الجدول أدناه.



فيما يلي مثال على برنامج يوضح إخراج خط يحتوي على انحرافات علوية وسفلية.

 double x = 100.0; double y = 100.0; BSTR str = SysAllocString(L"  "); long itext = Document2D->ksText(x, y, 0, 0, 0, 0, str); SysFreeString(str); x += Document2D->ksGetTextLengthFromReference(itext) + 2.0; str = SysAllocString(L" "); itext = Document2D->ksText(x, y, 0, 0, 0, UPPER_DEVIAT, str); SysFreeString(str); double dx1 = Document2D->ksGetTextLengthFromReference(itext); str = SysAllocString(L" "); itext = Document2D->ksText(x, y, 0, 0, 0, LOWER_DEVIAT, str); SysFreeString(str); double dx2 = Document2D->ksGetTextLengthFromReference(itext); x += max(dx1, dx2); str = SysAllocString(L"  "); Document2D->ksText(x, y, 0, 0, 0, 0, str); SysFreeString(str); 

في هذا المثال ، في كل مرة نقوم فيها بإعادة حساب إحداثيات نقاط الربط للخطوط المعروضة من أجل معرفة مكان إخراجها. للقيام بذلك ، استخدم طريقة ksGetTextLengthFromReference الموضحة في الدرس السابق. يرجى ملاحظة: يتم إعادة حساب الإحداثيات الأفقية فقط ، ولا يتغير العمودي. يحدد KOMPAS نفسه إزاحة الخط الرأسي المطلوب. يوضح الشكل أدناه الخط المركب الذي تم إنشاؤه بواسطة هذا البرنامج.



الكسر


يتم تعيين عرض الكسر من خلال العلامات المدرجة في الجدول أدناه.



فيما يلي مثال على برنامج يوضح إخراج كسر في سلسلة نصية.

 double x = 100.0; double y = 100.0; BSTR str = SysAllocString(L"  "); long itext = Document2D->ksText(x, y, 0, 0, 0, 0, str); SysFreeString(str); x += Document2D->ksGetTextLengthFromReference(itext) + 2.0; str = SysAllocString(L""); itext = Document2D->ksText(x, y, 0, 0, 0, NUMERATOR, str); SysFreeString(str); double dx1 = Document2D->ksGetTextLengthFromReference(itext); str = SysAllocString(L""); itext = Document2D->ksText(x, y, 0, 0, 0, DENOMINATOR, str); SysFreeString(str); double dx2 = Document2D->ksGetTextLengthFromReference(itext); x += max(dx1, dx2); str = SysAllocString(L"  "); Document2D->ksText(x, y, 0, 0, 0, 0, str); SysFreeString(str); 

من السهل ملاحظة أن هذا المثال مشابه للمثال السابق. في الواقع ، لا يختلف ناتج الانحرافات والكسور إلا في الأعلام المستخدمة. يوضح الشكل أدناه نتيجة البرنامج.



الخلاصة

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

للمتابعة ، تابع أخبار المدونة.

سيرجي نورسيف ، دكتوراه ، مؤلف كتاب "تطوير التطبيقات لـ COMPAS في دلفي".

Source: https://habr.com/ru/post/ar424509/


All Articles