サイトアイコン CAD日記

循環参照

AutoCAD外部参照の話。

AとB、2つの図面があったとする。

Aを配置しているBを、Aに配置する。

循環参照の出来上がり。

EXCELでは聞いたことがあるが、AutoCADにもあることを知った。

そんな循環参照を、AutoCADで作ることができることに驚いた。

一応警告メッセージが出る。

「循環参照が見つかりました。継続しますか?」

「はい」とすると、循環参照状態の図面ができる。

「いいえ」とすると、外部参照が配置されない。

「はい」としたからといって、無限に図形が描かれた図面ができるわけではない。

AとBの例で言えば、Aの中にAの図形は現れない。

自分の中に自分は現れないということ。

プログラムの世界では循環参照は当たり前。

再帰呼び出し、リカーシブと言う。

DWGを読み込む際、外部参照やブロックを展開する。

ブロック参照があったら、対応するブロック定義を探して

さらにブロック定義中にブロック参照があったら、

ブロック参照からブロック定義へ...。

ブロック参照処理関数内から、自分を呼び出すことになる。

いつか収束することを前提にしている。

循環参照しているDWGを某CADで読み込んだら、永久ループになってしまった。

数分後にバッファーオーバーフローで、アプリケーションエラー発生。

再帰呼び出ししているプログラム内で、循環参照しているDWGを

チェックしなければならなくなった。ややこしい。

自分あるいは現在呼び出し中の外部参照は、呼び出さないようにした。

けっこう苦労した。

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