KOMPAS-3D API → पाठ 14 → मल्टीलाइन टेक्स्ट के साथ कार्य करें

पिछले पाठ में, हमने देखा कि पैराग्राफ का उपयोग करके बहु-पंक्ति पाठ कैसे प्रदर्शित किया जाए। वर्णित विधि को आउटपुट स्ट्रिंग्स के सरणी के मैनुअल ट्रैवर्सल की आवश्यकता होती है। इस पाठ में, हम इस दोष के बिना एक वैकल्पिक तरीके से देखेंगे। यह ksTextParam इंटरफ़ेस और ksTextEx विधि पर आधारित है।



सबक श्रृंखला की सामग्री "KOMPAS-3D API के साथ कार्य करना"


  1. मूल बातें
  2. ड्राइंग डिजाइन
  3. KOMPAS से सही संबंध
  4. मुख्य शिलालेख
  5. ग्राफिक आदिम
  6. विभिन्न स्वरूपों में एक दस्तावेज़ सहेजना
  7. सेटिंग्स जानने के लिए
  8. शीर्षक ब्लॉक में अधिक परिष्कृत लेखन विधियाँ
  9. कैप्शन कोशिकाओं को पढ़ना
  10. एक स्ट्रिंग सहित विशेष वर्ण
  11. सरल पाठ लेबल
  12. यौगिक तार
  13. पैराग्राफ
  14. बहुस्तरीय पाठ

पाठ विकल्प ( ksTextParam )


KsTextParam इंटरफ़ेस ksParagraphParam इंटरफ़ेस और आउटपुट स्ट्रिंग्स की एक सरणी पर एक ऐड-ऑन है। इसे प्राप्त करने के लिए, आपको निरंतर ko_Textranaram के साथ KompasObject इंटरफ़ेस के गेटप्रमस्ट्रोक्ट विधि को कॉल करना होगा
KsTextParam इंटरफ़ेस में गुण नहीं हैं, इसलिए हम तुरंत इसके तरीकों पर विचार करने के लिए आगे बढ़ते हैं।
GetParagraphParam () - ksParagraphParam पैराग्राफ का पैरामीटर इंटरफ़ेस लौटाता है। इसका कोई इनपुट पैरामीटर नहीं है।
GetTextLineArr () - ksDynamicArray के आउटपुट लाइनों का एक गतिशील सरणी देता है। इसका कोई इनपुट पैरामीटर नहीं है।
Init () - टेक्स्ट पैरामीटर्स को रीसेट करता है। इसका कोई इनपुट पैरामीटर नहीं है। यदि सफल हो, तो सही है।
SetParagraphParam - पैराग्राफ पैरामीटर्स सेट करता है। एकमात्र पैरामीटर के रूप में, यह ksParagraphParam इंटरफ़ेस को स्वीकार करने योग्य मापदंडों से युक्त है। यदि सफल हो, तो सही , और त्रुटि के मामले में, गलत लौटाता है
SetTextLineArr - आउटपुट स्ट्रिंग्स की एक सरणी सेट करता है। एकमात्र पैरामीटर के रूप में, यह ksDynamicArray इंटरफ़ेस लेता है जिसमें आउटपुट लाइनें होती हैं। यदि सफल हो, तो सही , और त्रुटि के मामले में, गलत लौटाता है
GetTextLineArr () विधि द्वारा सेट की गई डायनामिक सरणी और SetTextLineArr विधि द्वारा सेट TEXT_LINE_ARR प्रकार की है। इसका अर्थ है कि सरणी के तत्व ksTextLineParam इंटरफेस हैं।

KsTextEx विधि


बहु-पंक्ति पाठ प्रदर्शित करने के लिए, ksDocument2D इंटरफ़ेस के ksTextEx विधि का उपयोग करें। नीचे इसका एक प्रोटोटाइप है:

long ksTextEx ( LPDISPATCH txtParam, //  ksTextParam long align //   ); 

नीचे दी गई तालिका संरेखित पैरामीटर के लिए मान्य मान दिखाती है।



यदि सफल, ksTextEx विधि उत्पन्न पाठ के लिए पूर्णांक सूचक लौटाता है। और एक त्रुटि के मामले में - शून्य

उदाहरण


निम्नलिखित एक प्रोग्राम का एक स्निपेट है जो ksTextEx विधि का उपयोग करके बहुस्तरीय पाठ आउटपुट प्रदर्शित करता है।
 //  DynamicArrayPtr items; items = static_cast<DynamicArrayPtr>(kompas->GetDynamicArray(TEXT_ITEM_ARR)); items->ksClearArray(); DynamicArrayPtr lines; lines = static_cast<DynamicArrayPtr>(kompas->GetDynamicArray(TEXT_LINE_ARR)); lines->ksClearArray(); //   TextLineParamPtr lineParam; lineParam = static_cast<TextLineParamPtr>(kompas->GetParamStruct(ko_TextLineParam)); lineParam->Init(); TextItemParamPtr itemParam; itemParam = static_cast<TextItemParamPtr>(kompas->GetParamStruct(ko_TextItemParam)); itemParam->Init(); TextItemFontPtr itemFont = static_cast<TextItemFontPtr>(itemParam->GetItemFont()); //   BSTR str = SysAllocString(OLESTR(" ")); itemParam->set_s(str); items->ksAddArrayItem(-1, itemParam); lineParam->SetTextItemArr(items); lines->ksAddArrayItem(-1, lineParam); lineParam->Init(); SysFreeString(str); str = NULL; itemFont->set_bitVector(NEW_LINE | ITALIC_OFF); str = SysAllocString(OLESTR("  ")); itemParam->set_s(str); items->ksAddArrayItem(-1, itemParam); lineParam->SetTextItemArr(items); lines->ksAddArrayItem(-1, lineParam); lineParam->Init(); SysFreeString(str); str = NULL; itemFont->set_bitVector(NEW_LINE | ITALIC_ON | BOLD_ON); str = SysAllocString(OLESTR(" ")); itemParam->set_s(str); items->ksAddArrayItem(-1, itemParam); lineParam->SetTextItemArr(items); lines->ksAddArrayItem(-1, lineParam); lineParam->Init(); SysFreeString(str); str = NULL; itemFont->set_bitVector(NEW_LINE | BOLD_OFF | UNDERLINE_ON); str = SysAllocString(OLESTR(" ")); itemParam->set_s(str); items->ksAddArrayItem(-1, itemParam); lineParam->SetTextItemArr(items); lines->ksAddArrayItem(-1, lineParam); lineParam->Init(); SysFreeString(str); str = NULL; itemParam.Unbind(); lineParam.Unbind(); itemFont.Unbind(); items.Unbind(); //    ParagraphParamPtr paragraphParam; paragraphParam= static_cast<ParagraphParamPtr>(kompas->GetParamStruct(ko_ParagraphParam)); paragraphParam->Init(); paragraphParam->set_x(100.0); paragraphParam->set_y(100.0); paragraphParam->set_width(60.0); paragraphParam->set_hFormat(2); //    TextParamPtr textParam = static_cast<TextParamPtr>(kompas->GetParamStruct(ko_TextParam)); textParam->SetParagraphParam(paragraphParam); textParam->SetTextLineArr(lines); //  Document2D->ksTextEx(textParam, 1); lines->ksDeleteArray(); lines.Unbind(); paragraphParam.Unbind(); textParam.Unbind(); //   kompas->set_Visible(true); kompas.Unbind(); 


इस उदाहरण में, हम सरणी को बायपास नहीं करते हैं, लेकिन वांछित विधि को एक बार कॉल करते हैं। वह NEW_LINE झंडे पाता है और उन्हें सही ढंग से व्याख्या करता है। कृपया ध्यान दें: इस ध्वज के साथ प्रत्येक नई पंक्ति एक अलग ksTextLineParam इंटरफ़ेस में जारी की गई है। यदि आप उन्हें एक ksTextLineParam में रखते हैं , तो COMPAS NEW_LINE ध्वज की उपेक्षा करेगा। नीचे दिया गया आंकड़ा इस कार्यक्रम का परिणाम दिखाता है।



निष्कर्ष

इस पाठ में, हमने बहु-पंक्ति पाठ प्रदर्शित करने के लिए एक वैकल्पिक तरीका देखा। यह कुछ हद तक अधिक जटिल है जो हमने पहले जांच की थी, लेकिन इसमें किसी प्रकार के तार के मैनुअल ट्रैवर्सल की आवश्यकता नहीं होती है। कौन सा उपयोग करना है यह आप पर निर्भर है।

अगले पाठ में, हम यौगिक लाइनों के विषय पर लौटेंगे और पैराग्राफ का उपयोग करके उन्हें बनाने के लिए प्रलेखित तरीके को देखेंगे।

जारी रखने के लिए, ब्लॉग की खबरों का पालन करें।

सर्गेई नोरसेव, पीएचडी, "डेल्फी में कम्पास के लिए अनुप्रयोग विकास" पुस्तक के लेखक।

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


All Articles