こちらの続きです。
上側の面を判断する2 - C#ATIA
前回のアイデアの方向性が違っていたので、もっとシンプルに考えました。
一番最初の方法で駄目と感じたのが
"平面とサーフェスでの最短距離が測定出来ない" 事で、その為に
無駄なブロックを作成しその面を利用しています。
BoundingBox3DオブジェクトのmaxPoint.zで測定しなくても高さを取得
出来る事が分かっているが、XYZ平面方向の値となってしまう点がネック。
その為、一時的に都合の良い方向に回転させてBoundingBox3Dを利用
しようと思いました。
そこで何度も登場しているTemporaryBRepManagerの登場です。
Bodies.addするまでは画面に表示されないだけでなく、恐らくメモリ上だけの
存在の為、ファイルにも記録されないはずです。
その為のサンプルをGithubにUpしました。
github.com
最初にボディを指定し、その後上方向を示す平面かボディの平面を指定すると
上面が選択された状態となります。
但し、指定するために選択した平面も選択されたままになっちゃいます。
(望んでいない状態です)
こちらに記載しましたが、バグじゃないかな・・・。
Can't clear the activeSelections - Autodesk Community