CAD日記

主にAutoCADのことについて書いているけど、近頃は投資系ネタに注力している。自動売買、仮想通貨、PC関係、プログラミングなど。@caddiary

DWG

Teighaラスター出力の実力

投稿日:

CAD日記らしく、最近注力しているTeighaについて。
今さらながらTeighaについて軽く説明してみよう。
Teighaは、AutoCADクローンCADのエンジンとしての長い歴史があるものだが、
おいらが注力しているのはDWGの変換エンジンとしての利用。
CADがDWGを読み込んだり書き込んだりするのに、DWGの中身がわからなきゃ
話にならんわけで、それを助けてくれるコンポーネントなのだ。
CADにこだわる必要もなくて、何らかのアプリがCADの国際的デファクトスタンダード
であるAutoCADのDWGを解釈したいってのもある。
AutoCADが国際的な事実上の標準である一方、日本ではそうでもなくて国産CADが
まだまだ生き残れているってのもあって、それゆえにおいらがメシを食えている
ってのもある。
さて、Teighaのラスター出力である。
昔DWGビューアを作ったことがあり、ビューアで画面で見るだけじゃ
つまらんと思って、ラスター(BMP、JPEG、PNG)で出力できるようにしてみた。
紙への印刷もって考えたんだけど、その奥の深さに辟易して半端な状態に
なっているということは、今回の話には関係ない。
BMPにするのが簡単にできたので、BMPをあるツールを使ってJPEGやPNGに
変換できるようにしたのだった。
最近PDFがいろんなところで注目されているという話を少し前にした。
複合機でスキャンしたデータがPDFになるってのが話しの入り口だ。
(JPEGやTIFFにすることもできるが扱いやすさからPDFがよく選ばれる)
そのPDFをアプリでプログラム的に読み取ろうとするとき、壁がある。
PDFはAdobe Readerや何らかのフリーソフトがあれば見れるけれども、アプリとして
その中身を閲覧するには、PDFレンダリングエンジンが必要でそんなものがタダで
そこらに落ちているものではなかったりする。
そこで登場するのがTeighaなのだ。
TeihaはPDFレンダリングエンジンとしてVisual Integrity社の技術を取り込んでいて、
PDFを扱うことができる。
Teighaはタダってわけではないので、手軽に使えないけれども、おいらが長いこと
使っていたものなので、おいらにとっては手軽ってこと。
PDFに注力しはじめたのはCADの世界がけっこうはやくて、CAD図面にPDFを
配置して下書きとして使おうっていう発想があったのだ。
そこでおいらが実装したのが以下の処理だ。
空のDWGにPDFを配置して、PDFで全体表示してラスターファイルとして保存する。
今回調査したところ、saveRasterImageでBMPだけでなくJPEG、TIFF、PNG、GIFにも
変換できることがわかった。
なるべくTeighaだけで完結させたかったのだが、以下いくつかの問題が表面化した。
・解像度(DPI)が指定できない
・TIFFのG4のような白黒2値化を行う際のしきい値が指定できない
この2つの問題をクリアするべく、Teighaの調査をタラタラとやっていたのだが、
最終的にはできないという結論にたどり着いた。
「BMPをあるツールを使ってJPEGやPNGに変換できるようにした」ということを上で書いた。
そのツールがImageKitだ。
これまたタダってわけではないけれども、昔からちょこちょこ使っていたものだったので、
とっかかりはつかむことができた。
ImageKitで解像度と2値化の際のしきい値設定を行う方法がわかった。
ということで、TeighaでBMP化して、ImageKitでファイルタイプ、解像度、2値化のしきい値
設定を行う仕様とした。
ここで新たな問題が出た。
Teighaによる出力結果をImageKitで処理するために、一時ファイルを作るように
したのだが一時ファイル読み書きでディスクIOが発生してオーバーヘッドがかかる?
Teighaの出力結果はsaveRasterImageを使う限りファイルにしかならないが、
convertRasterImageを使うと何やらメモリーストリームみたいなクラスで受けることが
できた。
一方、ImageKitはファイルからの入力(IKFileLoad)以外に、メモリーからの
入力(IKFileLoadMem)ができることがわかり、その引数がHANDLEだった。
OdMemoryStream→OdBinaryData→GlobalAllocしたメモリーのHANDLE
TeighaとImageKitのあいだをオンメモリーでつなぐことができたのだった。
一時ファイルを作って変換するものとオンメモリーで変換するものの時間を計ってみた。
たいして時間に違いが出なかった。。。
そう、具体的に問題が出たということではなく、懸念事項があったというだけの話
だったのだ。
でもまあ、いろいろと勉強になったのは確かでおもしろいテーマでもあった。
ともあれ、PDFのラスター化について一定の結論が出たのだった。
Teighaは仕事でもあり、趣味でもあるってところか。

-DWG
-

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

関連記事

jwwとdwgの線種対比

jwwとdwgの色番号対比の続編で、次は線種。点線とか一点鎖線とかのことで、線種は色と違って番号という考え方がdwgにはない。名前で管理されており、画層(レイヤ)やブロックでも同じことが言える。番号と …

no image

DWGdirect2.4.2

DWGdirect2.4.2は、バグフィックス版。 とくに新しい機能が追加されたわけではない。 リリースノート(英語) AutoCAD2008系の新オブジェクトに対応するのは、2.5になるとの記載を発 …

no image

Teigha3.8

AutoCAD 2013が出てから半年ちょっとが経過。 3年ごとのデータ変更の年だったわけだが、まだ2013形式のDWGは 世にそれほど出回っていない。 なぜなら、2013形式データを読み書きできるの …

no image

DWGdirectの迷走

DWGdirect Version 1.14.01が出たのが、去年の12月半ばですから、もう2ヶ月も経ちました。最初の頃はみんな静観していたようですが、近頃バグ報告が多発しているようです。サポート掲示 …

no image

DWGManager

エクスプローラスタイルDWGビューアだとさ。 http://apollo.yti.co.jp/system/ なかなか親近感の持てる製品だ。 ポイントをいくつか書いてみる。 [エクスプローラ風] フレ …