サイトアイコン CAD日記

DWGのサムネイル

DWGdirectの話。

DWG内のサムネイルを何とかして残しておく方法はないか。

この命題に一応の決着がついたので記しておく。

DWGdirectライブラリを使った自作アプリで、

任意のDWGを開いて、何らかの編集をして保存する。

これによって、DWG内のサムネイルが消えてしまっていた。

サムネイルの絵が変更できなくてもいいから、

せめて最初の状態が保持できないかということ。

キーワードをあげておこう。

1.setRetainOriginalThumbnailBitmap

2.writeFile の弟4パラメータ

3.gsBitmapDevice

3.が難関だった。

ExSystemServices と ExHostAppServices を継承したクラスで、

gsBitmapDevice をオーバーライドする必要があった。

関数内では、WinGDI.gs を loadModule する。

描画系のモジュールを読み込む処理。

しつこいくらいにQ&Aを見て、ようやくわかったこと。

1つの問題がクリアになり、少し晴れがましい気分だ。

問題は山積みだけど。

サンプルコードをアップしておく。

OdRxObjectImpl<COdvServices> svcs;



OdDbDatabasePtr pDb = svcs.createDatabase( false, OdDb::kMetric );

pDb->setRetainOriginalThumbnailBitmap( true );

pDb->readFile( OdString(szDwgFile), false, Oda::kShareDenyNo );



pDb->writeFile( &fb, OdDb::kDwg, pDb->originalFileVersion(), true );

OdGsDevicePtr COdvServices::gsBitmapDevice()

{

 OdGsModulePtr pGsModule = ::odrxDynamicLinker()->loadModule(_T("WinGDI.gs"));

 return pGsModule->createBitmapDevice();

}

モバイルバージョンを終了