KOMPAS-3D APIの操作→レッスン2→設計の描画



また、CAD CAD COMPASS APIについてです。 VNII Signal JSCのソフトウェアエンジニア、Sergey Norseevによる新しい記事、「DelphiでのCOMPASSのアプリケーション開発」の著者。 最初の記事はここで読むことができます

図面を設計するには、いくつかのインターフェイスが使用されます。


基本設計オプション


ksSheetParインターフェースへのポインターは、ドキュメントのパラメーターを記述するksDocumentParamインターフェースのGetLayoutParam()メソッドによって返されます。

ksSheetParインターフェイスには2つのプロパティがあります。


これらのプロパティの目的を理解するには、KOMPASで図面を開く(または新規作成する)必要があります。 図面ツリーでスプレッドシートリストを展開します。 ドキュメントシートのプロパティを含む行が開きます。


ドキュメントツリー(画像はクリック可能)

以前のバージョンでは、ツリーではなくドキュメントマネージャーが使用されていました
これらのプロパティの目的を理解するには、KOMPASで図面を開く(または新規作成する)必要があります。 メニュー項目「Service / Document Manager」を選択します。 ドキュメントマネージャーウィンドウが表示されます。


ドキュメントマネージャー

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

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


ウィンドウ「デザイン」

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


設計ダイアログ

shtTypeプロパティには、Number列の値が含まれ、適切な外観を決定します。 たとえば、ドキュメント「Design Drawing。 最初のシート。 GOST 2.104-2006”(上図で強調表示) shtTypeプロパティの値は1に等しく、ドキュメントの場合は表紙。 GOST 2.104-2006。」- 42など

ksSheetParインターフェースには2つのメソッドしかありません。


シートサイズのタイプ(標準または非標準)は、図面の作成時にksDocumentParamインターフェイスのプロパティで設定されます。 最初は、標準サイズのシートでの作業を検討します。

標準シート


標準シートのパラメーターは、 ksStandartSheetインターフェースによって記述され、3つのプロパティがあります。


以下は、フレームと空のタイトルブロックで空の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インターフェイスによって記述されます。


以下は、シートサイズ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」)。

第三部。

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

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


All Articles