C#ATIA

↑タイトル詐欺 主にFusion360API 偶にCATIA V5 VBA(絶賛ネタ切れ中)

回転プロファイルを考える1

連日、チョロチョロ進めているのは、未だ完成に辿り着けないでいますし、
恐らく年内は無理かな・・・。

取りあえず、作戦です。
最初は、軸を通過する断面を作って、断面積が最大になる角度を
探してグルっと回転させれば良いのかな? と思っていたのですが
全然ダメな事に気が付きました。

例えば、こんな形状で赤い面を軸とした場合は、青い平面ぐらいが
断面積で最大になると思います。

実際に断面のプロファイルを作り、回転させたのが緑の面なのですが
黄矢印部分が不足しているのは明らかです。

あぁ、安易に考えたらダメなのね。


次に思い付いたのが、軸に沿って断面を複数作り
各断面の軸からの最大位置を調べ、一つの断面を作り出す方法です。

やるのであれば、もっと大量の平面が必要でしょう。
しかし、
・どのくらいの間隔で平面を作る事が適切か?
・得られた最大位置は結果的に点群となり、直線や曲線を
 どの様に判断し作れば良いのか?
と言う疑問もあり、取り組むこと無く断念しました。


結局、最初に考えた通り軸を通過する断面を利用するしか
思い付きませんでした。つまり、この様な感じで多くの角度で
大量の断面を取得し、断面自体を合成すれば形になるような
気がしています。

もう、ボディ見えないですね・・・。

但し、この方法で問題となりそうなのは、
・何度毎に断面を取得すれば良いのか?(5度?1度?0.1度?)
 → 細かければ精度が上がる反面、処理時間がかかる。
です。そもそも "数撃ちゃ当たる" 的な方法でセンス無いですようね。

そこで、断面を取得する角度を効率良くする方法を考えました。
まず、軸から最大距離となる位置を求め、その位置と軸が
通過する平面の断面を取得します。

”軸から最大距離となる位置” は、こちらの方法です。
軸に対して最大距離になるポイントを取得する - C#ATIA

取得した断面を回転させます。

これです。
サーフェスをプロファイルとした回転を作る - C#ATIA

元の形状を、回転させたボディで引きます。

この残った形状を利用し、再度軸から最大位置となる角度を
求め、断面を取得し・・・を、体積0になるまで繰り返す事で
比較的効率良く、回転プロファイルが作れるのでは?
と思っています。

但し、元の形状を回転させたボディで引く処理(ブーリアン)が
エラーにならないのか?が、やってみないと分かりません。