こちらの続きです。
押し出しのスピードテスト1 - C#ATIA
前回、押し出しの最速処理の "テスト3" の問題点についてです。
少し前に作成した3D凸包(パッチ)や
凸包に挑んでみる6 - C#ATIA
迷路(押し出し)
迷路を作る - C#ATIA
に取り組むまで気が付きませんでした。
3D凸包については "テスト3" の方法でパッチを作成しています。
その時は全く問題点に気が付いていませんでした。
念のため、サンプルデータをこちらにUpしています。
3D CAD Model Collection | GrabCAD Community Library
(ConvexHull3D_NG.f3d)
処理は、履歴で見るとわかりやすいのですが、こんな感じの事をしています。
実は最後はソリッド化させているつもりなのですが、実際はソリッドに
なっていません。
(Fusion360はサーフェスでも閉じた瞬間にソリッドになります)
何度やってもソリッド化される事の方が "まれ" です。
ステッチコマンドを見てみると
赤印部分でエッジの情報が表示されていますが、全156本のうち
ステッチされるのは150本だけなんです。
左側の赤い三角形部分にステッチされないエッジがあります。
(もう一ヶ所フリーの三角形があり3本x2ヶ所=6本ステッチされない)
原因が良くわからず、「多分このライブラリの処理が間違っているんだな」
ぐらいに受け止め、他人のせいにしてました。(我ながら、酷い・・・)
迷路に取り組んだ際、最初は同様の方法(テスト3)で取り組みました。
ライブラリからのデータを元にこんな感じのスケッチを作成します。
各セルがブロックなのか?通路なのか?が返ってくる為、ブロック部分
だけ押し出せば完成です。頭の中ではこんなイメージです。
ところが実際に出来上がるボディはこんな感じです。
通路となる部分にはスケッチを作ったつもりではなかったのですが、
最終的に閉じた状態になってしまう為、通路部分もプロファイルと
なってしまいました。
過去に書いたこちらをすっかり忘れていましたよ。
プロファイルの考え方の違い - C#ATIA
恐らく、これが3D凸包でボディ化出来ない原因だろうと思われます。
結果的に良い方法がわからず、迷路を作成する際前回の "テスト1"
の一番遅い方法で作った末、異常に遅いものとなりました。
一番良いと思える方法は、一つのスケッチに全て描き必要なプロファイル
だけを抜き出して一発で押し出せると処理が速く、正しい結果を得られると
思っているのですが、"必要なプロファイル" を抜き出す為のアルゴリズムが
イマイチわかっていないです。
・・・少しだけ思いつくのですが、どうだろう?