
また、CAD CAD COMPASS APIについてです。 VNII Signal JSCのソフトウェアエンジニア、Sergey Norseevによる新しい記事、「DelphiでのCOMPASSのアプリケーション開発」の著者。 最初の記事はここで読むことができます 。
図面を設計するには、いくつかのインターフェイスが使用されます。
- ksSheetPar-次のような基本的な設計オプションを設定します。使用された設計ライブラリとこのライブラリの特定の設計
- ksStandartSheet-標準シートのパラメーターを設定します。 シートのサイズ、タイトルブロックの方向、および多重度を決定します。
- ksSheetSize-非標準シートのパラメーター(サイズ)を設定します。
この記事では、標準シートと非標準シートの両方で図面を作成する問題について検討します。
基本設計オプション
ksSheetParインターフェースへのポインターは、ドキュメントのパラメーターを記述するksDocumentParamインターフェースのGetLayoutParam()メソッドによって返されます。
ksSheetParインターフェイスには2つのプロパティがあります。
- layoutNameは、デザインライブラリの名前です。 通常、これはKOMPASディレクトリのSysサブディレクトリに格納されているgraphic.lytライブラリです。
- shtType-指定されたデザインライブラリのスタンプのタイプ( タイトルブロック )。
これらのプロパティの目的を理解するには、KOMPASで図面を開く(または新規作成する)必要があります。 図面ツリーでスプレッドシートリストを展開します。 ドキュメントシートのプロパティを含む行が開きます。

ドキュメントツリー(画像はクリック可能)
以前のバージョンでは、ツリーではなくドキュメントマネージャーが使用されていました
これらのプロパティの目的を理解するには、KOMPASで図面を開く(または新規作成する)必要があります。 メニュー項目「Service / Document Manager」を選択します。 ドキュメントマネージャーウィンドウが表示されます。
ドキュメントマネージャー
「設計ライブラリ」列の行は、 「layoutName」フィールドに示されているライブラリの名前です。 shtTypeプロパティは、Appearance列の値を設定します。 現在のデザインライブラリのこのプロパティの有効な値を表示するには、ドキュメントマネージャーウィンドウの行をダブルクリックします。 目の前にウィンドウが表示されます。

ドキュメントマネージャー
「設計ライブラリ」列の行は、 「layoutName」フィールドに示されているライブラリの名前です。 shtTypeプロパティは、Appearance列の値を設定します。 現在のデザインライブラリのこのプロパティの有効な値を表示するには、ドキュメントマネージャーウィンドウの行をダブルクリックします。 目の前にウィンドウが表示されます。
shtTypeプロパティは、 「シート」リストの下のGOSTで列の値を設定します。 現在のデザインライブラリのこのプロパティの有効な値を表示するには、ドキュメントツリーの行でマウスの左ボタンをダブルクリックします。 目の前にウィンドウが表示されます。

ウィンドウ「デザイン」
「ライブラリ」列の行は、 「layoutName」フィールドに示されているライブラリの名前です。
[タイトル]フィールドの右側にある[...]ボタンをクリックします。 目の前にウィンドウが表示されます。

設計ダイアログ
shtTypeプロパティには、Number列の値が含まれ、適切な外観を決定します。 たとえば、ドキュメント「Design Drawing。 最初のシート。 GOST 2.104-2006”(上図で強調表示) shtTypeプロパティの値は1に等しく、ドキュメントの場合は表紙。 GOST 2.104-2006。」- 42など
ksSheetParインターフェースには2つのメソッドしかありません。
- Init() -プロパティ値をデフォルト値にリセットします。
- GetSheetParam() -インターフェイスksStandartSheet (標準サイズのシートの場合)またはksSheetSize (カスタムサイズのシートの場合)へのポインターを返します。
シートサイズのタイプ(標準または非標準)は、図面の作成時にksDocumentParamインターフェイスのプロパティで設定されます。 最初は、標準サイズのシートでの作業を検討します。
標準シート
標準シートのパラメーターは、 ksStandartSheetインターフェースによって記述され、3つのプロパティがあります。
- direct-タイトルブロックの位置( FALSE-シートの短辺に沿って、 TRUE-長辺に沿って);
- format-シート形式( 0 -A0、1-A1、2-A2、3-A3、4-A4、5 -A5);
- 乗算 -シート形式の多重度。
以下は、フレームと空のタイトルブロックで空のA4図面を作成するプログラムのソースコードです。
KompasObjectPtr kompas; // kompas.CreateInstance(L"KOMPAS.Application.5"); // DocumentParamPtr DocumentParam; DocumentParam=(DocumentParamPtr)kompas->GetParamStruct(ko_DocumentParam); DocumentParam->Init(); DocumentParam->type= lt_DocSheetStandart;// SheetParPtr SheetPar; SheetPar = (SheetParPtr)DocumentParam->GetLayoutParam(); SheetPar->layoutName[0] = L'0'; SheetPar->shtType = 1; // // StandartSheetPtr StandartSheet; StandartSheet = (StandartSheetPtr)SheetPar->GetSheetParam(); StandartSheet->direct = false; // StandartSheet->format = 4; //4 StandartSheet->multiply = 1; // // Document2DPtr Document2D; Document2D = (Document2DPtr)kompas->Document2D(); Document2D->ksCreateDocument(DocumentParam); // kompas->Visible = true; kompas.Unbind();
空の文字列がksSheetParインターフェースのlayoutNameプロパティで指定されているという事実に注目します。 このプロパティでgraphic.lytライブラリへのフルパスを指定すると、プログラムは正しく動作しません。 以下は、作成された図面の外観です。

標準サイズの図面枠を設計します。 最初のシート。 GOST 2.104-2006
カスタムシート
カスタムシートオプションは、次のプロパティを持つksSheetSizeインターフェイスによって記述されます。
- height-ミリメートル単位のシートの高さ。
- width-ミリメートル単位のシートの幅。
以下は、シートサイズ300x300ミリメートルの空の図面と空のタイトルブロックを作成するプログラムのソースコードです。
KompasObjectPtr kompas; // kompas.CreateInstance(L"KOMPAS.Application.5"); // DocumentParamPtr DocumentParam; DocumentParam=(DocumentParamPtr)kompas->GetParamStruct(ko_DocumentParam); DocumentParam->Init(); DocumentParam->type = lt_DocSheetUser; // SheetParPtr SheetPar; SheetPar = (SheetParPtr)DocumentParam->GetLayoutParam(); SheetPar->layoutName[0] = L'0'; SheetPar->shtType = 1; // // SheetSizePtr SheetSize; SheetSize = (SheetSizePtr)SheetPar->GetSheetParam(); SheetSize->Init(); SheetSize->width = 300; SheetSize->height = 300; // Document2DPtr Document2D; Document2D = (Document2DPtr)kompas->Document2D(); Document2D->ksCreateDocument(DocumentParam); // kompas->Visible = true; kompas.Unbind();
カスタムサイズのシートに描画を作成するには、 ksDocumentParamインターフェイスのtypeプロパティで値lt_DocSheetUserを指定する必要があることに注意してください。 その後、 ksSheetParインターフェイスのGetSheetParam()メソッドは、 ksSheetSizeインターフェイスへのポインタを返します。
次の図は、このプログラムの結果を示しています。

300 x 300 mmの寸法のシートの設計図面枠
カスタムサイズのシートを使用する場合、メインラベルの多くのフォーマットが特定のサイズのシート用に設計されていることを覚えておく必要があります。 COMPASSシステムが設計されていないシートにタイトルブロックを適合させようとすると、何も良い結果が得られません。 そのような結果の1つを下の図に示します。

寸法が100〜100 mmのシートの図面枠を設計します。 スタンプの一部がシートを超えました
この例では、サイズ100x100ミリメートルのシートが作成され、タイプ1の主な表記がそれに適用されました(「設計図面。最初のシート。GOST2.104-2006」)。
第三部。
