ソリッドモデルの落とし穴


B-Repモデラー構造的欠陥(裂け目、ねじれ)への対応


多くの3次元CADを利用して行く過程で、

『複雑な形を作成して行く途中でモデルが崩れてしまい、以後の処理が受け付け られなくなってしまった』
『シェーディング処理を行うとなぜか3角形の穴が明いて見える』
『STLデータを他のCADやCAEのソフトが受け取ってくれない』
『メッシュジェネレータを使って作成したFEMモデルで解析を行ったのだがどうもいくつかの要素での応力表示が腑に落ちない』etc
このような経験をしたことが必ずあると思います。
そして多くの場合そのCAD販社にその原因や回避方法をたずねても、納得の行く答えがもらえたユーザーは少ないのではないかと思います。
『プロブラムのバグでして・・・』
『とりあえずトレアランスをいじってみてください・・』
『一度外部ファイルに書き出してまたそれを読み込んで戴くと直るかも知れません・・』
の回答は未だ良いほうで
『何か変な処理をしませんでしたが?』
『きっとあなたのオペレーションミスでデーターベースを壊してしまったのですよ・・・』
『さあー・・・』
等無責任でデタラメな回答をほとんどの場合受けているのではないかと思います.(私の直接お手伝いする設計現場の若い設計者たちから良く聞く話であり、またそれではと、客先からかれらの担当者の上司の名前で、私がとぼけて電話で問い合わせた、幾度かの場面でも直接経験している事実です)。
実はこのようなソリッドモデルの欠陥は、B−Repを用いる3次元CADでは宿命的な物で当然その開発者たちは充分それを承知し、これらがなるべく起きないような仕組みの織り込みを工夫しているはずです。 また最近ではこのような状態を診断する機能を備えた3次元CADや、独自のユーティリティーソフトも開発がされるようになって来ました。
しかしこのようなソフトを用いソリッドモデルの欠陥を発見しても後で直しようがない場合も多くあり、なぜこのような欠陥が起きるのかを知り、欠陥の起こりづらいモデル構築や、前以て起きた場合の対処を考慮したモデル構築を行っておけば、多くの場合割合容易に回避できと思います。

B−Repモデルは立体、面、稜線、頂点の親子関係でのツリー構造でそのデータは記述されています。 そしてその立体の認識は立体を取り巻く面の法線方向から参照される内外の認識でそれらに囲われた空間を立体と認識します。
当然複数の面が交差する訳ですから、その立体認識のためにそれぞれの面−面間の交差線が演算され、不要な部分の面はトリムされることになります。
これらが単純な平面で行われている間は問題ないのですが、対象となる面が複雑な自由曲面になると、当然その交線は複雑な自由曲線となります。このようなモデルで同じ場所や細かく面か交差するような場所に幾度となくフィーチャーの追加削除を行ったり、ブーリアン処理を行ったりすると、本来なら共有されなければならない稜線が離れてしまう裂け目現象を起こす場合があります。
ノンマニホールド(非多様体)でないソリッドモデラーはこの時点でソリッドの維持ができなくなり、処理の中断やエラーメッセージを出します(最悪はプログラムクラッシュする場合もあるが)。
またノンマニホールドのモデラーの場合は大抵の場合ソリッドが維持できない等のメッセージを出し、その裂け目を持ったままの状態が残るものが多い。なかにはこの裂け目を埋める微小な面を自動生成するCADもあるようです。
さらに、この裂け目にできた微小な面や複雑な曲面、繰り返しのフィーチャー処理やブーリアン処理により作成されたやはり微小な面などと曲面がその稜線(交差曲線)を求めるとき、目には見えないが捩れた稜線が生成されることがあります、当然この稜線を使う面は捩れた面になり、一見モデルは正常に見えるのですが、実は一部分裏表が捩れている箇所があるソリッドを生成してしまいます。
この場合、この後のフィーチャーやブーリアンの処理ができなくなったり、シェーディングをかけようとしたとき、一部穴が空いているように見えたり、STLやFEMにポリゴンデータやFEMメッシュデータを書き出したとき、この捩れた面に接して生成されたポリゴンやメッシュが裏向きになってしまい後で多くの 問題を引き起こします。

それではこれらの対処方法だが,それぞれのCADが持つ固有の問題や、逆にこれらをできるだけ回避するため見えないところで工夫されているCAD等千差万別なため、一義的には言えませんが、くつかのポイントの組み合わせることでかなりの部分この問題を回避することが可能になります。

1点目 必要以上に複雑な自由曲面は用いないことが鉄則
(意匠的な意味を持つい製品の外表面や流体力学的な意図を持つブレード類の表面以外、一般の工業製品で自由曲面が必要な所は極めて少ないはず)
2点目 フィーチャーやブーリアン処理のとき、面の稜線が近接や接触をする結合や切り取りをしないこと
(このために目に見えない微小な面が生成される場合が多い)
3点目 断面からソリッドを生成する場合そこで定義された直線、円弧、自由曲線 の切れ目が生成されたソリッドの面の切れ目になる。故に2次元断面作成 時後でどのようなフィーチャーやブーリアン処理がなされるかを充分意識 した稜線の配置を工夫すること
4点目 これらの欠陥が生じたとき、その原因はその直前の処理よりもだいぶ前の 処理にある場合が多い、故にその問題の解決は充分前に逆上った原因つぶ しが必要である。
他にもまだ方法はありますが、以上4点を覚えておいて、後は自分なりの工夫をすることで、この問題に遭遇する頻度が今までに比べ大幅に低減することは間違い有りません。