サイトアイコン CAD日記

region

リージョンとは、閉じた形状、つまりループから作成される2次元領域です。

閉じたポリライン、線分、曲線を選択できます。

曲線には、円弧、円、楕円弧、楕円、スプラインがあります。

(AutoCADヘルプから引用)

トラブルDWGのデータ調査をしていると、regionによく出会う。

直近で遭遇したのは、ネストされたregion。

ネストという言葉、よく考えると他で聞かない妙な単語だな。

少々寄り道。

nestという単語を辞書で調べてみた。

いくつか意味がある中で一番それっぽかったのは、

「入れ子式の箱・盆などの一組, 一そろい」

IT用語辞典によると、

構造化プログラミングにおける、プログラムの構築手法のひとつ。

複数の命令群をひとまとまりの単位にくくり、何段階にも組み合わせて

いくことでプログラムを構成する。このまとまりをネストという。

どうもピンとこない。

ネストと言えば、ネストブロック。

タイヤと車体をそれぞれブロック化して、

全体を車としてブロック化する。

2重にブロック化する。

理屈的に便利なのはわかるが、データ構造が複雑になり

様々なトラブルを生む。

話を戻そう。

regionは、閉じた領域。

それがネストしている。

具体的に言うと、円と三角形がそれぞれregion化されていて、

さらに全体が一つのregionとされていた。

図面におけるこれら図形は、何の変哲もないもので、

特にregionである必要性は感じられない。

よくわからない。

ある変換ツールでは、regionはその構成図形で分解するように

しているのだが、2階層目のリージョンを分解しようとすると、

例外エラーが発生して、変換に失敗してしまう。

regionがregionとしてそのまま存在させることには、

大して意味を感じないので、分解しているわけだが、

分解できないというなら仕方ない。

regionとして残す方法をとるしかない。

以前同類のトラブルがあったのは、

ブロック中のregionを分解すると、例外エラーが出るというもの。

(また、3dSolidの中のregionを分解するとエラーというのもあった。)

その際の解決策は、regionをregionとして変換すること。

今回のネストregionもこの方法にならった。

regionをregionとして変換する方法。

OdDbRegion::­acisOut でファイルに書き出して、

OdDbRegion::­acisInでファイルから読み込む。

(DWGdirectのAPI)

サンプルプログラムでは、ファイルの拡張子はSATとしていた。

ACISというのがキーワードだ。

この技術を使っているほかの図形としては以下のものがある。

 3dSolid、body、surface

どうやら3次元系の図形だ。

ACISについて調べてみた。

「3次元モデリング機能を提供する商用カーネルの一つで、

CAD/CAMなどのアプリケーションが内部で使用します。

すでに世界で500以上の企業/団体がライセンスしており、

200種以上の商用アプリケーションが販売されています。」

つまり、regionというのは3次元図面で使われる図形ということか。

平面上の閉じた図形に高さを与えれば、立派な3次元オブジェクトになる。

閉じているか、というのがとても重要になるだろう。

今回のデータはどう見ても2次元図面なので、

何らかの理由で紛れ込んだ、または3次元図面を2次元図面に

変換した際に不正に残ってしまったということが考えられる。

3次元図面として存在しているなら、それ自体意味を持っている

だろうが、2次元図面では全くもって意味がないはず。

閉じた形状ということから、ハッチングの境界を思い出すが、

region とは少々種類が異なるだろう。

トラブルを生むという点では、共通点があるけれど。

モバイルバージョンを終了