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

AutoCADのペン設定

AutoCADのペン設定を引き継ぎたいらしい。 ずっと昔にトライして記録に残していたことを思い出した。 ctbとstb 上記のことだけでは情報不足なので、以下サイトの情報も参考にしよう。 出力時にいつ …

no image

2008オブジェクト

AutoCAD2008を本格的に触れるようになったので、 2008オブジェクトの調査を開始した。 結論から言っておこう。 よく理解できない。 奥が深く、不明な点が多い。 1.異尺度オブジェクト  図面 …

no image

XCLIP

外部参照またはブロックを切り取って、部分的な表示を実現する。 データ構造的には、2点の座標値からなる矩形、または 3点以上の座標値を持つ多角形、で定義されている。 さらに、前方クリップ平面または後方ク …

no image

AutoCADのサブス

AutoCAD 2016の記事が妙にアクセス数増加中なので、この流れに乗って AutoCADの記事を書いてみる。 オートデスク社は、サブスクリプション販売に舵を切った。 元々、けっこう高いソフトの売り …

no image

region

リージョンとは、閉じた形状、つまりループから作成される2次元領域です。 閉じたポリライン、線分、曲線を選択できます。 曲線には、円弧、円、楕円弧、楕円、スプラインがあります。 (AutoCADヘルプか …