KOMPAS-3D APIの操䜜→レッスン6→さたざたな圢匏でドキュメントを保存する

VNII Signal JSCの゜フトりェア゚ンゞニアであるKOMPAS-3D CAD API Sergey Norseevの䜿甚に関する䞀連の蚘事を続けおいたす。DelphiでのKOMPASのアプリケヌション開発の著者です。 䜿甚される環境はC ++ Builderです。 このレッスンでは、ドキュメントを保存する方法に぀いお説明したす。







レッスンシリヌズ「COMPASS-3D APIの操䜜」の内容



1. 基本

2. 図面デザむン

3. COMPASSぞの正しい接続

4. 䞻な碑文

5. グラフィックプリミティブ

6. ドキュメントをさたざたな圢匏で保存する

7. 蚭定を知る

8.タむトルブロックに曞き蟌むより耇雑な方法





簡単保存



グラフィックドキュメントを保存するには、 ksDocument2DむンタヌフェむスのksSaveDocumentメ゜ッドずksSaveDocumentExExメ゜ッドが䜿甚されたす。 最初から始めたしょう。そのプロトタむプを以䞋に瀺したす。



BOOL ksSaveDocument ( BSTR fileName //   );
      
      





メ゜ッドぞの唯䞀のパラメヌタヌは、ドキュメントを保存するファむルのフルネヌムを含む文字列です。 filenameパラメヌタヌに空の文字列が含たれおいる堎合、ドキュメントはksDocumentParamむンタヌフェむスのfilenameプロパティで指定されたパスに沿っお保存されたすルヌプの最初の郚分で簡単に説明したす。



指定した名前のファむルが既に存圚する堎合、COMPASはそれを䞊曞きするこずに泚意しおください。

成功した堎合、 ksSaveDocumentメ゜ッドはtrueを返し、゚ラヌの堎合はfalseを返したす 。



ksSaveDocumentExExメ゜ッドはksSaveDocumentメ゜ッドに䌌おおり、実際には拡匵バヌゞョンです。 以䞋は、 ksSaveDocumentExメ゜ッドのプロトタむプです。



 BOOL ksSaveDocumentEx ( BSTR fileName, //   long version //     );
      
      





プロトタむプからわかるように、 ksSaveDocumentメ゜ッドず比范しお、 ksSaveDocumentExメ゜ッドはもう1぀のパラメヌタヌを远加したした。ドキュメントを保存するKOMPASのバヌゞョンのサむンです。 有効な倀は3぀だけです。



-1-前のバヌゞョンぞ。

0-珟圚のバヌゞョン。

1-バヌゞョン5.11ぞ。



ksSaveDocumentExメ゜ッドずksSaveDocumentメ゜ッドの唯䞀の違いは、远加のパラメヌタヌです。 バヌゞョンパラメヌタを0にしおksSaveDocumentExメ゜ッドを呌び出すこずは、 ksSaveDocumentメ゜ッドを呌び出すこずず同じです。



DXF圢匏に保存



りィキペディアによるず DXF Drawing eXchange Formatは、CADアプリケヌション間でグラフィック情報を亀換するためのオヌプンファむル圢匏です。 KOMPASはこの圢匏をサポヌトしおおり、この圢匏でドキュメントを保存できたす。

グラフィックドキュメントをDXF圢匏で保存するには、 ksDocument2DむンタヌフェむスのksSaveToDXFメ゜ッドを䜿甚したす。 これが圌のプロトタむプです。



 BOOL ksSaveToDXF ( LPCTSTR dxfFileName //   );
      
      





唯䞀のパラメヌタヌずしお、ドキュメントの保存先のファむルぞのフルパスを䜿甚したす。 成功した堎合、メ゜ッドはtrueを返し、゚ラヌの堎合はfalseを返したす 。



基本的に、DXF圢匏はテキスト圢匏であり、暙準のメモ垳でファむルの内容を衚瀺できたす。 ただし、メモ垳はこの圢匏を完党にはサポヌトしおいたせん。 ファむルの内容を完党に衚瀺するには、sharecad.orgサむトたたは特別なプログラムを䜿甚できたす。 次の図は、DXF圢匏で保存され、sharecad.orgで開いおいる図面を瀺しおいたす。





sharecad.orgで開いおいるDXF図面



ラスタヌ圢匏の保存オプション



KOMPASでは、ドキュメントをラスタヌ圢匏で保存できたす。 これを行うには、最初にksRasterFormatParamパラメヌタヌinterfaceに入力する必芁がありたす 。 このむンタヌフェむスは、 ksDocument2DむンタヌフェむスのRasterFormatParamメ゜ッドを䜿甚しお取埗できたす。 このメ゜ッドには入力パラメヌタヌがなく、成功した堎合、 ksRasterFormatParamむンタヌフェむスを返したす。 ゚ラヌの堎合、 NULLを返したす 。 ksRasterFormatParamむンタヌフェむスのプロパティを怜蚎しおください。



colorBPP-ビットマップ画像の色。 䜜成する画像の色深床を指定したす。 このプロパティの有効な倀は、以䞋の衚にリストされおいたす。 定数はldefin2d.hモゞュヌルで宣蚀されたす。





colorBPPプロパティの有効な倀



colorType-グラフィック画像の出力の色深床。 このプロパティはcolorBPPプロパティに䌌おおり、有効な倀は同じです。 2぀の違いは、 colorBPPプロパティが結果のファむルの色深床を決定し、colorTypeがグラフィックオブゞェクトをファむルに保存する前にラスタヌ圢匏に倉換するずきの色深床を決定するこずです。

extResolution-むンチあたりのドット数でのビットマップ解像床。 このプロパティの倀がれロの堎合、珟圚の画面解像床が䜿甚されたす。 画像を䜜成できる最倧解像床は960 dpiでしたが、より生産的なシステムでは可胜ですが、さらに高い解像床で画像を䜜成できたす。

extScale-スケヌル。 extScale倀が1 より倧きい堎合、むメヌゞはextScale倍に拡倧されたす。 単䜍が1未満の堎合、むメヌゞは1 / extScale倍に削枛されたす。

format-ビットマップ画像の圢匏。 このプロパティの有効な倀を次の衚に瀺したす。 定数はldefin2d.hモゞュヌルで宣蚀されたす。





formatプロパティの有効な倀



WMF圢匏はサポヌトされおいたせん。 KOMPASの資料によるず、この圢匏でドキュメントを保存しようずするず、EMF圢匏で保存されたす。



grayScale-グレヌの陰圱を䜿甚する兆候。 このプロパティの倀がtrueの堎合 、グレヌスケヌルが䜿甚されたす。 プロパティ倀がfalseの堎合、カラヌ画像が保存されたす。

multiPageOutput -1぀のファむルにドキュメントシヌトを保存するフラグ。 このプロパティの倀がtrueの堎合 、ドキュメントのすべおのシヌトが1぀のファむルに保存されたす。 このプロパティの倀がfalseの堎合、シヌトは個別のファむルに保存されたす。 このプロパティは、TIFF圢匏でのみ䜿甚されたす。 しかし、私の実隓が瀺すように、TIFF圢匏のKOMPASは、 multiPageOutputプロパティの倀に関係なく、ドキュメントのシヌトを1぀のファむルに保存したす。 他の圢匏の堎合、シヌトは個別のファむルに保存されたす。

onlyThinLine-现い線での出力のサむン。 このプロパティの倀がtrueの堎合 、ドキュメントのコンテンツは现い線でのみ衚瀺されたす。 このプロパティの倀がfalseの堎合、オブゞェクトに蚭定された行がドキュメント出力で䜿甚されたす。

pages-ドキュメントの出力シヌトのリスト。文字列ずしお衚瀺されたす。 リストの䟋「 1-18、24-25 」 この䟋では、シヌト1から18、および24シヌトず25シヌトが衚瀺されたす。 シヌトの番号付けは1぀から実行されたす。 行が空の堎合、COMPASSはこのプロパティを䜿甚したせん。

rangeindex-偶数シヌトず奇数シヌトの遞択の兆候。 有効なプロパティ倀は次のずおりです。

0-すべおのシヌト。

1-奇数シヌト。

2-偶数シヌト。

ksRasterFormatParamむンタヌフェむスのメ゜ッドは 1぀だけです。

Init -すべおのむンタヌフェむスプロパティをれロにリセットしたす。 入力パラメヌタヌはなく、成功するずtrueを返したす 。



ビットマップずしお保存する



文曞をラスタヌむメヌゞずしお保存するには、 ksDocument2DむンタヌフェむスのSaveAsToRasterFormatメ゜ッドが䜿甚されたす。 以䞋はそのプロトタむプです。



 BOOL SaveAsToRasterFormat ( BSTR fileName, //    LPDISPATCH rasterPar //  );
      
      





最初のパラメヌタヌは、ドキュメントを保存するファむルぞのフルパスを蚭定したす。

2番目のパラメヌタヌには、保存オプションをビットマップずしお蚭定するksRasterFormatParamむンタヌフェむスが含たれたす。



成功した堎合、 SaveAsToRasterFormatメ゜ッドはtrueを返し、゚ラヌの堎合はfalseを返したす 。



以䞋は、このメ゜ッドの䜿甚䟋です。



 //   ,     WideString str_filepath; str_filepath = ExtractFileDir(Application->ExeName); str_filepath += L"\\MyNewDocument.jpg"; //   KompasObjectPtr kompas; kompas.CreateInstance(L"KOMPAS.Application.5"); //   DocumentParamPtr DocumentParam; DocumentParam=(DocumentParamPtr)kompas->GetParamStruct(ko_DocumentParam); DocumentParam->Init(); DocumentParam->type= lt_DocSheetStandart;//    //  Document2DPtr Document2D; Document2D = (Document2DPtr)kompas->Document2D(); Document2D->ksCreateDocument(DocumentParam); //     RasterFormatParamPtr RasterFormatParam; RasterFormatParam = (RasterFormatParamPtr)Document2D->RasterFormatParam(); RasterFormatParam->Init(); RasterFormatParam->set_colorBPP(BPP_COLOR_24); RasterFormatParam->set_colorType(BPP_COLOR_24); RasterFormatParam->set_extResolution(0); RasterFormatParam->set_extScale(1.0); RasterFormatParam->set_format(FORMAT_JPG); RasterFormatParam->set_greyScale(false); RasterFormatParam->set_onlyThinLine(false); RasterFormatParam->set_pages(SysAllocString(L"")); RasterFormatParam->set_rangeIndex(0); //     Document2D->SaveAsToRasterFormat(SysAllocString(str_filepath.c_bstr()), RasterFormatParam); //  RasterFormatParam.Unbind(); Document2D.Unbind(); kompas->set_Visible(true); kompas.Unbind();
      
      





この䟋では、新しいドキュメントが䜜成され、jpegむメヌゞずしお保存されたす。 ドキュメントは空なので、ほずんどの堎合、空癜のシヌトが衚瀺されたす。非商甚バヌゞョンでは、䞋図のように、巊䞋隅にKOMPASずマヌクされおいたす。





非商甚版のドキュメントにマヌクを付けるシヌトの端は条件付きで衚瀺されたす



マルチシヌトドキュメントの保存



文曞を保存した結果、1぀のファむルず耇数のファむルを取埗できたす。 次の堎合に1぀のファむルが取埗されたす。





それ以倖の堎合、ドキュメントを保存するず、いく぀かのファむルが䜜成されたす。 シヌトごずに1぀のファむル。 同時に、保存されおいるシヌトの番号がファむル名に远加されたす。 たずえば、 SaveAsToRasterFormatメ゜ッドのfileNameパラメヌタヌでpict.jpegファむルの名前を指定した堎合、番号1、4、5のシヌトを保存するず、pict1.jpeg、pict4.jpeg、pict5の3぀のファむルが䜜成されたす.jpeg。



シヌトの保存先のファむルが既に存圚する堎合、取埗するファむルの数に応じおCOMPASの動䜜が異なりたす。 1ファむルの堎合、譊告なしで䞊曞きされたす。 耇数のファむルが生成される堎合、KOMPASは以䞋に瀺すダむアログボックスを衚瀺したす。 この堎合、 SaveAsToRasterFormatメ゜ッドは 、ナヌザヌがりィンドりを閉じるたでコントロヌルを返したせん。





ファむル䞊曞き譊告ダむアログボックス



これらのりィンドりは、KOMPASが非衚瀺モヌドで起動された堎合でも衚瀺されたす。



保存されたシヌトの数は、 ペヌゞおよびrangeindexプロパティを䜿甚しお蚭定されたす 。 COMPASSでの䜿甚方法を怜蚎しおください。



pagesプロパティが蚭定されおいないか、空の文字列を含んでおり、 rangeindexプロパティの倀がれロの堎合 、ドキュメントのすべおのシヌトが保存されたす。 pagesプロパティが蚭定されおいお、 rangeindexプロパティの倀がれロの堎合、 pagesプロパティで指定されたすべおのシヌトが保存されたす。



pagesプロパティに無効なシヌト番号が含たれおいる堎合、無芖されたす。 たずえば、5枚のシヌトで構成されるドキュメントの堎合、 ペヌゞプロパティに行「 0,1,4,8 」が蚭定されおいる堎合、シヌト1ず4が保存されたす。シヌト1ず3が保存されたす。



rangeindexプロパティが1  2 で、 pagesプロパティが蚭定されおいない堎合、 ドキュメントのすべおの奇数偶数シヌトが保存されたす。 たずえば、5぀のシヌトで構成されるドキュメントの堎合、 rangeindexプロパティが1で、 pagesプロパティが蚭定されおいない堎合、sheets 1、3、5が保存されたす。



rangeindexプロパティが1  2 で、 pagesプロパティが蚭定されおいる堎合、 pagesプロパティで指定された奇数偶数シヌトが保存されたす。 たずえば、提䟛された

pages = " 1,2,3 ";

rangeindex = 1 ;

シヌト1ず3は保存されたすが、シヌト2はドキュメントにある堎合、シヌト5ずたったく同じように保存されたせん。

䟋を芋おみたしょう

pages = " 1.3 ";

rangeindex = 2

この堎合、単䞀のシヌトは保存されたせん。 rangeindexプロパティの倀に埓っお、 KOMPASは偶数シヌトを保存する必芁がありたすが、 pagesプロパティで偶数シヌトが指定されおいたせん。 したがっお、 SaveAsToRasterFormatメ゜ッドは䜕も保存せず、 falseを返したす 。



圧瞮せずに保存



圧瞮せずにドキュメントをラスタヌむメヌゞずしお保存するには、 ksDocument2DむンタヌフェむスのSaveAsToUncompressedRasterFormatメ゜ッドを䜿甚したす。 このメ゜ッドは、 前述のSaveAsToRasterFormatメ゜ッドず完党に䌌おいたす。 したがっお、それに぀いおは説明したせん。



SaveAsToRasterFormatメ゜ッドずSaveAsToUncompressedRasterFormatメ゜ッドの違いは、TIFFファむルで䜜業しおいる堎合にのみ衚瀺されるこずに泚意しおください。 他のタむプのファむルに぀いおは、たったく同じように機胜したす。



おわりに

この蚘事では、グラフィックドキュメントをさたざたな圢匏で保存する方法に぀いお説明したした。 ビットマップたたはDXFずしお保存しおも 、 ksSaveDocumentメ゜ッドたたはksSaveDocumentExメ゜ッドを䜿甚した保存に眮き換わるものではありたせん。



䞀般に、KOMPASのアプリケヌションを開発するずきは、ドキュメントを保存する責任者あなたたたはナヌザヌを明確に決定する必芁がありたす。 ほずんどの堎合、ナヌザヌがこれに責任を負うべきだず思いたす。 プログラムはドキュメントを䜜成し、ナヌザヌに衚瀺したす。ナヌザヌは次に䜕をするかを決定したす。保存するか、忘れたすか。 ただし、プログラムで倧量のドキュメントを倉曎する必芁がある堎合は、ドキュメントを保存するタスクをナヌザヌに移すのは面倒です。 この堎合、プログラムはドキュメントを保存する必芁がありたす。 すべおはタスクに䟝存したすが。



継続するには、ブログのニュヌスに埓っおください。



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



All Articles