サイトアイコン CAD日記

XCLIPのネスト

某変換ツールのデータ調査で、遭遇してしまった。

XCLIPのネスト。

担当者からの事前情報で、XCLIPが多用されているということは

あらかじめ把握していた。

かなり、嫌な予感はしていた。

XCLIPのネストについて説明しよう。

ブロックのネストと密接な関係がある。

ブロックにXCLIPすると、ブロック全体のうち任意の範囲だけ、

図面中に表示することができる。

指定した範囲以外は、見えなくすることができるというわけだ。

そんなブロックをさらにブロック化する。

そしてXCLIPで範囲指定。

XCLIPのネストが出来上がり。

XCLIP化されたブロックを分解して、クリップ領域で図形を切り取る。

こんな処理を、某変換ツールで行っている。

問題になるのはクリップ領域で切り取る処理。

ブロックを分解した図形群に対して、ひとつずつクリップ領域で切り取りを行う。

図形群の中にブロックが現れたらさらに分解して、クリップ領域で切り取る。

というように、最初のブロックが持っているクリップ領域で、

全図形を切り取るというのが、従来のプログラム構造。

ところがXCLIPのネストになると、途中で現れたブロックがXCLIPされている場合

そのクリップ領域と最初のブロックのクリップ領域で重なっている部分(ANDをとる)

でクリップしなければならなくなる。(重なっている部分がなければ変換しない)

まぁ、理屈さえ分かれば、それに基づいてプログラムを書くのは

それほど難しいわけではないけれど。

薄々は感付いていた。

XCLIPがネストできるであろうことは。

データ構造的には、ブロックごとに情報を保持しているので、

ブロックがネストされれば、XCLIPもネストされていくわけだ。

しかし、それを試してみるようなことは恐ろしくてできなかった。

その実現性が判明すれば、某変換ツールに問題が発覚するわけで、

さらには修正する必然性が出てきてしまうからだ。

自分で作ったプログラムを、自分で検査する。

どうしても甘い検査になりがちだ。

問題を見つけてしまえば、直さなければならなくなるから。

危なそうなところは、自然と避けて動作確認する。

仕方ないことだな。

ということで、XCLIPのネストに対応してみた。

久しぶりの大物の修正と言えるだろう。

少し肩の荷がおりた。

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