連日、チョロチョロ進めているのは、未だ完成に辿り着けないでいますし、
恐らく年内は無理かな・・・。
取りあえず、作戦です。
最初は、軸を通過する断面を作って、断面積が最大になる角度を
探してグルっと回転させれば良いのかな? と思っていたのですが
全然ダメな事に気が付きました。
例えば、こんな形状で赤い面を軸とした場合は、青い平面ぐらいが
断面積で最大になると思います。
実際に断面のプロファイルを作り、回転させたのが緑の面なのですが
黄矢印部分が不足しているのは明らかです。
あぁ、安易に考えたらダメなのね。
次に思い付いたのが、軸に沿って断面を複数作り
各断面の軸からの最大位置を調べ、一つの断面を作り出す方法です。
やるのであれば、もっと大量の平面が必要でしょう。
しかし、
・どのくらいの間隔で平面を作る事が適切か?
・得られた最大位置は結果的に点群となり、直線や曲線を
どの様に判断し作れば良いのか?
と言う疑問もあり、取り組むこと無く断念しました。
結局、最初に考えた通り軸を通過する断面を利用するしか
思い付きませんでした。つまり、この様な感じで多くの角度で
大量の断面を取得し、断面自体を合成すれば形になるような
気がしています。
もう、ボディ見えないですね・・・。
但し、この方法で問題となりそうなのは、
・何度毎に断面を取得すれば良いのか?(5度?1度?0.1度?)
→ 細かければ精度が上がる反面、処理時間がかかる。
です。そもそも "数撃ちゃ当たる" 的な方法でセンス無いですようね。
そこで、断面を取得する角度を効率良くする方法を考えました。
まず、軸から最大距離となる位置を求め、その位置と軸が
通過する平面の断面を取得します。
”軸から最大距離となる位置” は、こちらの方法です。
軸に対して最大距離になるポイントを取得する - C#ATIA
取得した断面を回転させます。
これです。
サーフェスをプロファイルとした回転を作る - C#ATIA
元の形状を、回転させたボディで引きます。
この残った形状を利用し、再度軸から最大位置となる角度を
求め、断面を取得し・・・を、体積0になるまで繰り返す事で
比較的効率良く、回転プロファイルが作れるのでは?
と思っています。
但し、元の形状を回転させたボディで引く処理(ブーリアン)が
エラーにならないのか?が、やってみないと分かりません。