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にはない。名前で管理されており、画層(レイヤ)やブロックでも同じことが言える。番号と …

Teigha改めODAでdwgをdxfに変換する2022年版

2019年に書いた記事を最新環境でより分かりやすく書いてみることにした。過去記事の全3回分は以下の通りで、ちょっと分かりずらかったというのもあるし、肝心の部分が伏せられていたというのがあるので、この記 …

dwgからサムネイル用画像を抜き出す方法2

dwgからサムネイル用画像を抜き出す方法として理屈上の話を書いたが、これだけでは片手落ちだと考えて、プログラム実装のところまで踏み込むことにした。 まずは、dwgからサムネイル用画像を取得して、同名フ …

no image

RealDWG

本家本元Autodeskが介入してきました。 OpenDWGに対してRealDWGですから、何ともはや皮肉を込めたネーミングです。 http://usa.autodesk.com/adsk/servl …

no image

ODA Members of JAPAN

Open Design Allianceに参加している日本の企業をピックアップしてみた。 AutoCADのファイルフォーマットであるDXF,DWGを読み書きする アプリケーションを保有している日本企業 …