CAD日記

AutoCAD,DXF,DWG,SXFなどCADのことから、仮想通貨や投資関係、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

Autodesk Solution Day 2009

おととい(6/5)行われたAutodeskのイベント「Autodesk Solution Day 2009」。 去年、一昨年の記事をまず読み返した。 いずれも行ってから1ヶ月くらい後に書いた記事だが、 …

no image

スプライン

AutoCADのスプラインについて新発見があった。 ながいことスプラインはポリラインに分解できないものだと思ってた。 AutoCADで分解しようとすると、「SPLINEを分解できません」 って出るし、 …

no image

バイナリDXF

DXFと言えばテキストファイルと思われがちですが、世にはバイナリのDXFというのがあります。バイナリだったらDWGなわけですけどね。どんな存在価値があるのか不明です。 AutoCADで、名前を付けて保 …

no image

無効または不完全なDXF

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

no image

画層ビューア

AutoCADの画層をサムネイルで見たい。 そんな要求から生まれた機能。 画層ビューア。 だいたい形になってきたので、そのイメージを載せてみる。 この機能の親機能となるDWGビューアから呼び出されて、 …