KOMPAS-3D APIの操作→レッスン4→タイトルブロック

VNII Signal JSCのソフトウェアエンジニアであるKOMPAS-3D CAD API Sergey Norseevの使用に関する一連の記事を続けています。DelphiでのKOMPASのアプリケーション開発の著者です。 使用される環境はC ++ Builderです。 KOMPAS APIの基本描画設計に関する以前のレッスンでは、KOMPASは実行されていないと想定し、CreateInstanceメソッドを使用して独自に開始しました。 次のレッスン「 KOMPASへの正しい接続」では 、すでに実行中のKOMPASの存在を確認し、接続しました。 このレッスンでは、メインの描画キャプションを記入する方法を示します。







KOMPASの主な碑文は、 ksStampインターフェースによって記述されます。 それへのポインターを取得するには、ksDocument2DksSpcDocument 、およびksDocumentTxtインターフェースGetStamp()およびGetStampEx() メソッド が使用されます。



GetStampExメソッドの唯一のパラメーターは、 タイトルブロックインターフェイスが要求されるシート番号です。 シート番号は1から始まります。 GetStampメソッドにはパラメーターがありません。 図面または仕様の最初のシートのタイトルブロックインターフェイスを返します。



ksStampインターフェースの説明に進む前に、 ksTextItemParamインターフェースを簡単に見てみましょう



行コンポーネント



ksTextItemParamインターフェイスは、テキスト文字列コンポーネントを設定します。 「コンポーネント」とは、文字列または特殊文字を意味します。 KompasObjectインターフェースのGetParamStructメソッドを使用して、このインターフェースを取得できます。 そのためには、定数ko_TextItemParamを唯一のパラメーターとしてこのメ​​ソッドに渡す必要があります。

ksTextItemParamインターフェースのプロパティは 3つだけです。





KOMPAS-3D v17のドキュメントでは、ksTextItemParamインターフェイス 「テキストドキュメント(ksDocumentTxtインターフェイス)/ ksDocumentTxt-メソッド/テキスト要素パラメーターインターフェイス/」という見出しで説明されています





SDKのテキスト要素パラメーターインターフェイスの説明



しかし、 typeプロパティを説明するとき、定数SPECIAL_SYMBOLは言及されていません。 (数値はありませんが)セクション「パラメーター構造と定数/テキストパラメーター構造/ TextItemParam-テキストコンポーネントのパラメーター構造」に記載されています。





SDKのテキスト文字列コンポーネントのパラメーター構造の説明



typeプロパティには3つの値(FONT_SYMBOL、FRACTION_TYPE、SUM_TYPE)もありますが、それらの目的はまだわかりませんでした。 実験が示したように、これらの定数を使用したksTextItemParamインターフェイスの動作は、 typeプロパティのゼロ値と変わりません。 確かに、私は主要な碑文のコンテキストでテストしましたが、これが独自のいくつかの制限を課す可能性があります。

ここで、 ksTextItemParamインターフェイスのメソッドを検討します。





主な碑文



上記のように、メインラベルはksStampインターフェイスによって記述されます。 このインターフェイスには興味深いプロパティがないため、すぐにメソッドの検討に進みます。





これはksStampインターフェースメソッドの不完全なリストですが、それらはタイトルブロックを扱うのに十分なものです。 ただし、多くのポイントを作成する必要があります。



  1. タイトルブロックのすべてのセルに番号が付けられます。 KOMPASのドキュメントにはこれらの番号は含まれていませんが、主要な碑文の状態標準仕様(GOST 2.104-68およびGOST 2.104-2006)への参照があります。 また、タイトルブロックのセルの番号はページで表示できます 。 以下の図は、実験的に得られたフォーム2aおよび2bの主な銘のセル番号を示しています。







    最初のシート







    2枚目以降のシート

  2. ksTextLineメソッドは、タイトルブロックに行を書き込む唯一の方法ではありません。 それに加えて、 ksStampインターフェイスには同じことを行うksSetStampColumnTextメソッドがあります。 唯一の違いは、セット文字列がksTextItemParamインターフェイスの形式ではなくksDynamicArray動的配列の形式で設定されることです。 この記事では考慮しません。


タイトルブロックの編集



メインの碑文を埋めるには、いくつかの連続した段階があります。



  1. ksTextItemParamインターフェイスへのポインターを取得します。 これを行うには、 ksKompasObjectインターフェイスのGetParamStructメソッドを使用します。 ksTextItemParamインターフェース 、タイトルブロックに書き込まれた文字列を表すために必要です。
  2. ドキュメントインターフェイス仕様のGetStampまたはGetStampExメソッドを使用して、 ksStamp タイトル ブロックインターフェイスへのポインターを取得します。
  3. ksStampインターフェースのksOpenStamp()メソッドを呼び出します。 そこで、タイトルブロックの編集モードに入ります。
  4. タイトルブロックに書き込む行を準備します。 文字列は、インターフェイスksTextItemParamとして表される必要があります。
  5. 行を書き込むセルを選択します。 セルを選択するには、 ksStampインターフェイスのksColumnNumberメソッドを使用します。
  6. ksStampインターフェイスのksTextLineメソッドを呼び出して、選択したセルに行を書き込みます。
  7. タイトルブロックに書き込まれたすべての行について、手順4〜6を繰り返します。
  8. ksStampインターフェースのksCloseStampメソッドでタイトルブロックを閉じます。




以下は、タイトルブロックを操作する方法を示すプログラムの抜粋です。



//    TextItemParamPtr TextItemParam; TextItemParam = (TextItemParamPtr)kompas->GetParamStruct(ko_TextItemParam); //    StampPtr Stamp; Stamp = (StampPtr)Document2D->GetStamp(); //   Stamp->ksOpenStamp(); Stamp->ksColumnNumber(1); TextItemParam->s = SysAllocString(L""); Stamp->ksTextLine(TextItemParam); Stamp->ksColumnNumber(3); TextItemParam->s = SysAllocString(L""); TextItemParam->type = SPECIAL_SYMBOL; TextItemParam->iSNumb = 51; Stamp->ksTextLine(TextItemParam); Stamp->ksColumnNumber(110); TextItemParam->set_s(SysAllocString(L" ..")); TextItemParam->type = 0; Stamp->ksTextLine(TextItemParam); //   Stamp->ksCloseStamp();
      
      





このプログラムの結果、次の図に示す主な碑文が表示されます。





ソフトウェアによって取得された主な碑文。



上記のプログラムフラグメントについて2つのコメントを作成します。



  1. この例では、KOMPASへの接続と図面の作成を担当するコードは示されていません。 コードを理解しやすくするために削除しました。 KOMPASに接続して図面をカスタマイズする方法(主要な碑文の形式の選択を含む)は、サイクルの以前の記事で説明しました。
  2. 上記のコードを注意深く見ると、文字列がsプロパティに値を割り当てることによってksTextItemParamインターフェースに設定されている場合と、別場合にはset_sメソッドを呼び出すことによって設定されていることがわかります。 実際には、COMテクノロジーでは、すべてのプロパティがメソッドの形式で表されます(ルール、インストール、および読み取り)。 これらのメソッドの名前は次のように形成されます。

    get_ <プロパティ名>

    set_ <プロパティ名>

    プログラムでは、これらのアプローチ(プロパティへの値の割り当てまたは対応するメソッドの呼び出し)のいずれかを使用できます。


おわりに

この記事では、主な碑文を記入する方法を学び、文字列と特殊文字を表現するためのインターフェースの1つに精通しました。 シリーズの後続の記事では、他のインターフェースを紹介します。



継続するには、ブログのニュースに従ってください。



Sergey Norseev、「DelphiでのCOMPASのアプリケーション開発」の著者。



All Articles