前回,「selectByID2の使用は極力無し」という方針にたどり着いたので,
selectByID2は使わず済ませるにはどうすればよいか考えました。
一番簡単なのは,マクロで選択するのではなく,人に選択してもらうことです。
例として 平面が平行かどうかチェックするマクロをここにアップロードしました。
このマクロは,平面をあらかじめ選択した状態で実行してもらいます。
最初から選択されてる平面同士を比較して,平行かどうかを判断します。
最初から選択されてるので,改めてプログラムから選択する必要はありません。
こういうふうにできるときは これがベストだと思います。
<処理の内容の詳細>
人が選択しても,マクロから選択しても,
選択されたものは「セレクションマネージャ」という枠に収まります。
シフトを押しながら選択していくと,なんでも何個でも入ります。
つまりセレクションマネージャに入っているものは,平面とは限りません。
今回はまずセレクションマネージャの中身をひとつずつ,平面かどうかチェックして,
平面じゃなければ選択解除してしまいます。
平面だけを残して,2つ以上残っていたら,平行のチェックを実施します。
ここで一つ問題が。
平行のチェックには,平面(IRefPlane型)のもってるプロパティを使うんですが,
セレクションマネージャにはなんでもかんでも入るので,
セレクションマネージャの中身は(それが平面かどうかチェックしたあとでも)
IRefPlane型には代入できませんでした。
いったんIFeature型で受けてから,GetSpecificFeature2メソッドでダウンキャストする必要がありました。