↑ページトップへ

FreeCAD ブーリアン演算が失敗した場合の対処方法

FreeCAD 0.19

ソリッド間のブーリアン演算ではまれに計算誤差によって誤った演算結果になることがあります。こうした場合には「形状の高精度化」を行うと正しい演算結果が得られる可能性があります。

例えば以下の例では回転押し出しで作成した、側面が2面に別れた円筒のふちを球とのブーリアン演算を使って削り取ろうとして失敗しています。

ブーリアン演算前の状態
ブーリアン演算前の状態
失敗したブーリアン演算の結果形状<
失敗したブーリアン演算の結果形状

このような場合、以下のような手順で形状の高精度化を行います。

手順

  1. 失敗したブーリアン演算の結果(下記の例では「Cut」)をモデルツリー上で選択して削除し、いったん演算を取り消します。

    失敗した時のモデルツリー
    失敗した時のモデルツリー
  2. OpenSCAD ワークベンチドロップダウン・ボックスへ移動します。

  3. モデルツリーでブーリアン演算対象の形状のひとつを選択した後、ツールバーにある形状の高精度化OpenSCAD_RefineShapeFeatureを実行します(メニューの [OpenSCAD]-[Refine Shape Feature] からも実行できます)。

  4. 同じ手順を繰り返してブーリアン演算対象となる全ての形状を高精度化します。

    全ての形状を高精度化した後のモデルツリー
    全ての形状を高精度化した後のモデルツリー

    なお高精度化時には、形状を表現する上で不要なエッジが取り除かれることがあります(例では円筒側面を二分しているエッジ)。

  5. パートワークベンチドロップダウン・ボックスへ戻り、高精度化した後の形状を使用して再度、ブーリアン演算を行うと正しい演算結果が得られます。

    失敗したブーリアン演算の結果形状<
    失敗したブーリアン演算の結果形状
    成功したブーリアン演算の結果形状
    成功したブーリアン演算の結果形状

    高精度化してブーリアン演算を行った場合のモデルツリーは以下のようになります。

    モデルツリー
    モデルツリー

注意点

同様の形状高精度化はパートワークベンチドロップダウン・ボックスのメニュー [Part]-[Create a copy]-[Refine shape] からも実行できます。ただしこの場合にはOpenSCAD ワークベンチドロップダウン・ボックスの高精度化ツールとは異なり、高精度化の前後でヒストリーが途切れるので、モデルツリー上で高精度化前の形状のパラメーターを変更してもそれが最終形状にパラメトリックに反映されなくなります。

参照