STL品質(3Dプリンター VS cfMesh)

先の記事で、「STLファイルに不可視な欠損がある・・・」と云われてしまった拙作の3Dデータですが、これはiphoneケースのベースデータをダウンロード提供してくれているサイトから入手したstpファイルと、拙作のLogoデータを、FreeCAD上でソリッド演算にて作成したものです(下図参照)。範囲を選択_011これらのデータから、3Dプリンタ用のSTLファイルを作成するに際して、FreeCADの使用法という面で、備忘録として残しておきたい情報もいくつかあったので、以下記しておきます。

ブーリアン演算範囲を選択_012

ソリッド演算は、単純にocse2Logo とDocument003の2つのパーツで差をとればいいだろう、と思ってブーリアン演算にかけると・・・範囲を選択_015となってしまって、ここで、

  • iphoneケースデータの本体部分(Document003)が実はシェルデータだったということ
  • FreeCADでは、ソリッドデータしかブーリアン演算できない、

ということが判った。

ソリッドとシェルで、オブジェクトのアイコンを変えてくれれば分り易いんだろうにね。

 

形状構築ツール範囲を選択_017

Partワークベンチにある形状構築ツールを使うと、シェルデータをソリッドデータに変換したり、その逆変換も可能になる、

範囲を選択_032

これで出来上がったSolidを対象にブーリアン演算範囲を選択_012すると、

範囲を選択_023

 

最後に、出来上がったもの(Cut)と、それ以外のもの(Document,Document001,Document002)を全てまとめて、結合範囲を選択_024すれば、

範囲を選択_022

となるので、出来上がった(Block)をSTLファイルに書き出してやればよい。DEXCS2014の最新版(5/30に開催するオープンCAE講習会でお披露目予定のもの)であれば、マクロの実行ボタン範囲を選択_030から、

範囲を選択_033

上段のマクロ(exportStl.py)を実行してやれば、任意の名前でSTLファイル出力が可能になる。

ちなみに、下段のマクロ(makeCfMeshSetting.py)を実行すれば、cfMesh用の設定ファイル作成用GUIが起動し、範囲を選択_029

 

上記設定(Maxメッシュサイズ=0.5)にてExportボタンを押して、cfMesh(cartesianMesh)を実行して、以下のようなメッシュが作成できることは確認済です。

範囲を選択_034

問題は、このSTLファイルを使って3Dプリンタ用のスライスデータを作成しようとしたら、形状が再現できなかったという事です。

2015-05-21_1829スライスデータに変換するソフトがヴァージョンアップしたら出来なくなったので、てっきり変換ソフトに問題があると思ったのですが・・・

サポートの回答は、

STLファイルに不可視な欠損がある場合、スライス後に欠損が可視化し
スライス後の形状が変わる場合がございます。

弊社で使用しておりますデータ補正用のフリーソフトがございますので
お試しいただければと存じます。

http://www.3ds.co.jp/netfabb/

お手数をお掛けしますが、よろしくお願い申し上げます。

以上、どうぞよろしくお願い申し上げます。

というものでした。

そこで、紹介されたソフト(netfabbの無償版)を使って表示させると、

2015-05-22_1538確かに、ビックリマークが表示されて、STLに欠陥がある事を指摘されています。ここで嬉しいのは、この欠陥を自動修復してくれる機能があったことでした。

2015-05-22_1552_001

「その他」⇒「パーツの修復」 を選択すると、

2015-05-22_1540右下の「自動修復」のボタンを押すと、

2015-05-22_1540_001

「実行ボタン」を押せば、

2015-05-22_1541欠陥が修復されるという、いとも簡単でした。あとは、「パーツをエクスポート」。

2015-05-22_1552

このSTLファイルを使えば、スライスデータへの変換は何の問題も無し、という事でした。

 

中間まとめ

  1. STLの品質に対し、cfMeshはロバスト性大(多少の欠陥があってもメッシュ生成可能)であるが、3Dプリンターはそうでない。
  2. STLの欠陥を自動修復するソフトとして、netfabbは無償版も有り、簡単に使えて有効であった。但し、より複雑、大規模なモデルに対する検証は未実施。
  3. 本例で、STLに欠陥が生じた原因はFreeCADの機能不足?

ということで、ここで終わってしまうと、FreeCADは使えないのか?になってしまうので、ここはあくまで「中間まとめ」ということで、次回は、今回のSTL欠陥の本質原因を探りたいと思います。

 

おまけ・・・Netgen

File ⇒ LoadGeometry にて、元のSTLデータを読み込んだ後、

Geometry ⇒ STL Info で調べてみると、確かにERRORが表示されていました。

NETGEN - -home-et-Desktop-3D-caseA.stl_036

 

これに対し、netfabbにて修復したSTLデータだと、ERRORはなしで、GenerateMeshボタンで自動メッシュ作成も可能でした。NETGEN - -home-et-Desktop-3D-caseAm.stl_037

但し、メッシュ品質は、ちょっとどうかな? ですね。STLは修復はされたものの、品質の悪い三角形が多くあり、メッシュ生成はその影響を受けてしまっているということでしょうね。

このNetgenとの比較においても、cfMeshのロバスト性は立派です。