CAD日記

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

AutoCAD

レイアウトのモデル化

投稿日:

レイアウトをモデルに変換するプログラムってどんだものだったかと、
忘れかけた記憶を呼び戻して書いてみる。
1.全レイアウト名取得
 ブロックセクションからブロックレコードを全部読む。
 レイアウトフラグが立っていて、名前に「*PAPER_SPACE」が含まれていて、
 用紙サイズの高さ・幅が0でないものの名前をリストアップする。
 ここで取得する順番は、AutoCADのタブページに表示される順番に
 ならないので、ブロックレコードからタブ順番情報を取得してソートする。
2.変換対象とするレイアウトをアクティブにする
3.変換先(モデルだけの図面)をクリエイトする
4.ヘッダーとテーブルを変換先にコピーする
5.アクティブレイアウトからビューポート取得
 ビューポートには、配置点・倍率・角度・表示範囲の情報があるので、
 それらを保存しておく。
 また、レイアウト内にはビューポート以外に一般図形(線や円など)が
 あるので、これらは、変換先にそのままの図形情報で追加する。
6.モデルから図形情報を取得して、変換先に追加する 
 モデルには一般図形があるので、ビューポートの配置点・倍率・角度で
 変形させた上で、ビューポートの表示範囲で切り取りを行い、変換先に
 追加する。
 モデルにブロック参照があれば、変換先にブロック定義を追加する。
 5でビューポートが複数あれば、その数分の処理を行う。
7.変換先を保存する
簡単に書くと、これだけ。
寸法線、ハッチング、外部参照、XCLIPなど複雑な図形での例外的な
実装があるものの、基本的な処理はたったこれだけである。
実装は、OpenDesignAllianceのTeighaを使ってやっていて、
C++のクラス構造を持ったコンポーネントを利用している。
昔は、DXFを独自解析して、グループコードごとに情報を保持して、
何がどんな意味なのかを調べて実装していたわけだが、
このTeighaがあるおかげで、いろんな意味で楽になった。
PMツールのVer1をリリースしたのが2005/05/11。
あと少しで10年か。。。
当初大きな夢を持って作ったわけだが、その夢がかなうほど
現実は甘くない。
これだけ続いただけでもよかったし、AutoCADとの接点を
密に持ち続けられたことは幸せなことだと思う。

-AutoCAD
-

執筆者:


comment

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

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

関連記事

no image

UnicodeとAutoCAD

AutoCAD 2007のDXFとDWGでは、文字がUnicodeコード化されてるんだって。 試しに、2007で「あいうえお」って文字を書いて、2007のDXFで保存して テキストエディタで見たら、め …

no image

無効または不完全なDXF

AutoCADで、日本語の画層名やブロック名が使えない場合が あるという話は、昔から言われてきた。 「無効または不完全な DXF の入力です。図面は破棄されました。」 という無情なメッセージが表示され …

no image

ハッチング

ハッチングには苦労させられます。 AutoCADのハッチングの話です。 境界図形群があって、中の模様(塗りつぶしの場合もあり)があって。 この境界図形群がくせものなんです。 ポリライン、線、円、円弧、 …

no image

AutoCAD2011

今年もこの季節がやってきた。 3/19、AutoCAD2011リリース。 ADN会員の特権を生かして、AutoCAD2011製品版をインストールしてみた。 いろいろと機能強化が行われているようだが、3 …

no image

循環参照

AutoCAD外部参照の話。 AとB、2つの図面があったとする。 Aを配置しているBを、Aに配置する。 循環参照の出来上がり。 EXCELでは聞いたことがあるが、AutoCADにもあることを知った。 …