• ブログ
  • 西田将也
  • 5. Selection Managerの話,平行チェックマクロの例|SOLIDWORKS APIの勉強メモ

5. Selection Managerの話,平行チェックマクロの例|SOLIDWORKS APIの勉強メモ

By 西田将也 153 日前

前回「selectByID2の使用は極力無し」という方針にたどり着いたので,
selectByID2は使わず済ませるにはどうすればよいか考えました。

一番簡単なのは,マクロで選択するのではなく,人に選択してもらうことです。

例として 平面が平行かどうかチェックするマクロをここにアップロードしました。

image

 

このマクロは,平面をあらかじめ選択した状態で実行してもらいます。

最初から選択されてる平面同士を比較して,平行かどうかを判断します。

最初から選択されてるので,改めてプログラムから選択する必要はありません。
こういうふうにできるときは これがベストだと思います。

<処理の内容の詳細>

人が選択しても,マクロから選択しても,
選択されたものは「セレクションマネージャ」という枠に収まります。
シフトを押しながら選択していくと,なんでも何個でも入ります。

つまりセレクションマネージャに入っているものは,平面とは限りません。

今回はまずセレクションマネージャの中身をひとつずつ,平面かどうかチェックして,
平面じゃなければ選択解除してしまいます。

平面だけを残して,2つ以上残っていたら,平行のチェックを実施します。

ここで一つ問題が。

平行のチェックには,平面(IRefPlane型)のもってるプロパティを使うんですが,
セレクションマネージャにはなんでもかんでも入るので,
セレクションマネージャの中身は(それが平面かどうかチェックしたあとでも)
IRefPlane型には代入できませんでした。

いったんIFeature型で受けてから,GetSpecificFeature2メソッドでダウンキャストする必要がありました。