FreeCADで3Dプリンター用データ(STL)を作成する場合の留意点

先の記事の結論を、FreeCADの活用法という観点から言い換えると、

  • cfMesh用のモデラー&メッシュ設定ツールとしては、拙作のマクロを使えば簡単に出力できて問題はなさそう。
  • 3Dプリンター用に出力する際には、修復ソフト(netfabbの無償版が有望)が必要になる場合がある。

と書き直して良いかもしれません。

修復のやり方として、読者の方から、

cfMeshでメッシュを作成後その表面をstlにしたものでもよさそうですね。

というサジェスチョンをいただきましたが、これも一案です。この場合は、特にNetgenなどオールテトラのメッシュ作成に有効になりそうな感触があります。

本記事では、今回取り上げた以下の図のモデルで、STLファイルの修復が必要となったのは、何が問題であったのか(もっと端的に言うと、FreeCADがヘボだったからなのか?)について、掘り下げます。

範囲を選択_039

黒色表示には要注意

そこでまずは、ブーリアン演算をした結果を以下に再掲します。

範囲を選択_023外観が黒色でシェーディング表示されていますが、FreeCADを使い慣れた人には、何で? と映るんではないかと思います。通常は灰色ですからね。意図的に配色を変更した訳でもありません。表示色を変えても反映されないのです。

つまり、この黒色表示は、「面が正しく生成できていない」ということを意味するんではないか(そんな事は何処にも書いてないと思いますが(-_-;))、だとすると、このデータから作成されるSTLファイルには欠陥があって当然ということになります。

確認の為、iphoneのケースデータでなく、単純なプレートと、拙作Logoデータとの間でブーリアン演算をしてみました。

範囲を選択_040

このように、黒色でなくデフォルトの灰色表示です。もちろん、これから生成されるSTLデータに欠陥はありません。

ということで、欠陥が生じた原因は、ブーリアン演算に問題があったのか、iphoneのケースデータに問題があったのか、ということになります。

後者に問題がなければ、FreeCADのブーリアン演算に問題有り、ということになります。そこで次に、iphoneのケースデータについて調べてみました。

入手したデータがシェルデータであった為、これをソリッドデータに変更しましが、

範囲を選択_032このSolidデータについて調べました。

範囲を選択_041FreeCAD上の表示は、通常の灰色表示で問題はなさそうでした。しかし、これをSTLファイル出力して、件の修復ソフトで調べてみると・・・

範囲を選択_042

パッと見にはどこがエラーなのかは判りませんでしたが、例のビックリマークが出て、とにかくエラーがあるというので、詳しく見たら確かに面の欠損部分がいくつか(5箇所)見つかりました。

そこで、これを自動修復。修復したSTLデータを再度FreeCADへインポートし、これを使ったブーリアン演算を実施してみたところOKとなり、ブーリアン演算の問題ではなさそうだ、となりました。

STLデータのソリッド変換方法については後述しますが、ここではエラー箇所が判ったので、FreeCAD上でこれを特定出来ないかと調べてみたところ・・・

範囲を選択_043

確かに、開口部を確認できました。ならば、これを(簡単に)修復出来ればということになります。

この修復を、あれこれトライしてみたんですが、基本的に形状構築ツール範囲を選択_017を使って、開口部の面貼りまでは比較的簡単に出来ることがわかったんですが(下図参照)、

範囲を選択_047

作成した面(Face)のままでは、これを元のデータと結合範囲を選択_024してもSolidになってくれません。範囲を選択_048

このレポートビューを解釈するに、複合体(compound)として表示されるオブジェクトは、何か欠陥が存在するものだということのようです。

これをShell ⇒ Solid と変換する必要があり、その手間が半端で無さそう、あと一歩のところまではいきましたが・・・タイムオーバーです。(5/26再挑戦にて一件落着しました(後述))

結論

  • FreeCADのブーリアン演算機能は、対象Solidに欠陥が無い限りにおいて問題は無さそう。(今回修復が必要になったのは、インポートしたモデルそのものが欠陥を内包していた為)
  • インポートしたSTPモデルに欠陥があるかどうかは、STLファイル出力して、別ソフト(netfabbなど)にて確認、修復するしかなさそう。

インポートしたstlファイルをSolid化する方法

Partワークベンチで、

範囲を選択_049

「部品」⇒「メッシュから形状を作成」を選択

範囲を選択_051

変換後のオブジェクトはシェルデータなので、形状構築ツール範囲を選択_017を使って、これをソリッドに変換する。

範囲を選択_052

こうして作成したソリッドであれば、正常にブーリアン演算可能。範囲を選択_053

(結果もちゃんと灰色表示です)

フォントデータを3次元化する方法

詳細は、⇒ http://open-shelf.appspot.com/FreeCAD/18.html

Draftワークベンチ ⇒ シェイプストリング範囲を選択_058を使用して文字入力、サイズなど決定。

範囲を選択_057

DEXCSの場合、フォントファイルは、

/usr/share/fonts/truetype/

以下にあるフォントであれば何を使っても良い。日本語フォントを使えば、日本語表示も可能。

大きさやレイアウトが決まったら、Partワークベンチの押し出しツール範囲を選択_060を使って完成。

範囲を選択_059

穴のあるシェルデータの修正方法

基本的に形状構築ツール範囲を選択_017を使います。穴の部分は、上に示した通り、エッジから面を作成します。5箇所の穴を塞いだ結果が下図のような状態になります。

範囲を選択_063

問題は、これらの面をどうやってシェル化するか?です。FreeCADベテランの読者さんからも、これで出来るはずだということだったので、気を取り直して再挑戦したところ、結局2つのコツがあることが判りました。

コツ1・・・面の選択方法

単純に考えれば、ツリービューの画面上で、修復前のシェルと追加した面を選択して、「作成」ボタンを押せば良かろう・・・なんですが、これをやると、

範囲を選択_064

となってしまいます。当初は、シェルを面に分割してから再結合、とか色々やってみましたが、ようやく判ったのは、ツリービューの画面上での選択はNGだったということです。以下に3Dビュー上で選択した場合とを比較してみます。

範囲を選択_068お判りでしょうか?ツリービュー上で選択したものは、面以外に、エッジや頂点まで選択されてしまっています。この事に気づくまで、随分回り道をしてしまいました(-_-;)

要するに、面の選択は3D画面上で、すべての面(全部で約50面!)を一つづつ根気よくピックしてやらなければならなかった、ということです。

ただ、これをやろうとすると、モデルを大きく拡大して、色々視る方向を変えてやらないと、うまくピックできません。

コツ2・・・グルグル回転を止めるには

問題は、視方向の回転操作をしているうちに、マウス操作を少し間違えると、モデルが勝手にグルグル回転し出してしまう事です。

範囲を選択_074

通常の場合だと、3Dビュー画面上で、マウスクリックしてやれば回転は止まってくれます。しかしこの場合、その方法で回転を止めると、それまで苦労してピックアップした面がすべてリセットされてしまうことでした。

この事があったので、尚更にツリービュー画面上で選択する方法に拘って、余分な回り道をしていたのでした。

3Dビュー画面上でマウスクリックする以外に、この回転を止める方法はないものかと、今回改めて、試行錯誤した所、

範囲を選択_075

標準ビュー選択メニュー(上図)のうち、赤枠で囲った部分のボタンを使えば、指定の視方向になって回転が止まり、ピックアップした面もリセットされないということが判りました。

これにて、ようやく一件落着です。

Share

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください