
レッスンシリーズ「KOMPAS-3D APIの操作」の内容
テキストオプション( ksTextParam )
ksTextParamインターフェイスは、 ksParagraphParamインターフェイスと出力文字列の配列へのアドオンです。 それを取得するには、定数ko_TextParamを使用してKompasObjectインターフェイスのGetParamStructメソッドを呼び出す必要があります。
ksTextParamインターフェイスにはプロパティがないため、すぐにメソッドの検討に進みます。
GetParagraphParam() -ksParagraphParam段落のパラメーターインターフェイスを返します。 入力パラメーターはありません。
GetTextLineArr() -出力行のksDynamicArrayの動的配列を返します。 入力パラメーターはありません。
Init() -テキストパラメータをリセットします。 入力パラメーターはありません。 成功した場合、trueを返します。
SetParagraphParam-段落パラメーターを設定します。 唯一のパラメーターとして、設定可能なパラメーターを含むksParagraphParamインターフェースを取ります。 成功した場合はtrueを返し、エラーの場合はfalseを返します 。
SetTextLineArr-出力文字列の配列を設定します。 出力行を含むksDynamicArrayインターフェースは、唯一のパラメーターとして受け入れられます。 成功した場合はtrueを返し、エラーの場合はfalseを返します 。
GetTextLineArr()メソッドによって返され、 SetTextLineArrメソッドによって設定される動的配列は、 TEXT_LINE_ARR型です 。 これは、配列の要素がksTextLineParamインターフェイスであることを意味します。
KsTextExメソッド
複数行のテキストを表示するには、 ksDocument2DインターフェイスのksTextExメソッドを使用します。 以下はそのプロトタイプです。
long ksTextEx ( LPDISPATCH txtParam, // ksTextParam long align // );
以下の表は、 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();
この例では、配列をバイパスしませんが、目的のメソッドを1回呼び出します。 彼はNEW_LINEフラグを見つけて、それらを正しく解釈します。 注:このフラグが付いた新しい各行は、個別のksTextLineParamインターフェイスで発行されます。 それらを1つのksTextLineParamに配置すると、COMPASはNEW_LINEフラグを無視します。 次の図は、このプログラムの結果を示しています。

おわりに
このレッスンでは、複数行のテキストを表示する別の方法を検討しました。 これは以前に調べたものよりもやや複雑ですが、文字列の配列を手動で走査する必要はありません。 どちらを使用するかはあなた次第です。
次のレッスンでは、複合行の主題に戻り、段落を使用してそれらを作成する文書化された方法を見ていきます。
継続するには、ブログのニュースに従ってください。
