先の記事の結論を、FreeCADの活用法という観点から言い換えると、
- cfMesh用のモデラー&メッシュ設定ツールとしては、拙作のマクロを使えば簡単に出力できて問題はなさそう。
- 3Dプリンター用に出力する際には、修復ソフト(netfabbの無償版が有望)が必要になる場合がある。
と書き直して良いかもしれません。
修復のやり方として、読者の方から、
cfMeshでメッシュを作成後その表面をstlにしたものでもよさそうですね。
というサジェスチョンをいただきましたが、これも一案です。この場合は、特にNetgenなどオールテトラのメッシュ作成に有効になりそうな感触があります。
本記事では、今回取り上げた以下の図のモデルで、STLファイルの修復が必要となったのは、何が問題であったのか(もっと端的に言うと、FreeCADがヘボだったからなのか?)について、掘り下げます。
黒色表示には要注意
そこでまずは、ブーリアン演算をした結果を以下に再掲します。
外観が黒色でシェーディング表示されていますが、FreeCADを使い慣れた人には、何で? と映るんではないかと思います。通常は灰色ですからね。意図的に配色を変更した訳でもありません。表示色を変えても反映されないのです。
つまり、この黒色表示は、「面が正しく生成できていない」ということを意味するんではないか(そんな事は何処にも書いてないと思いますが(-_-;))、だとすると、このデータから作成されるSTLファイルには欠陥があって当然ということになります。
確認の為、iphoneのケースデータでなく、単純なプレートと、拙作Logoデータとの間でブーリアン演算をしてみました。
このように、黒色でなくデフォルトの灰色表示です。もちろん、これから生成されるSTLデータに欠陥はありません。
ということで、欠陥が生じた原因は、ブーリアン演算に問題があったのか、iphoneのケースデータに問題があったのか、ということになります。
後者に問題がなければ、FreeCADのブーリアン演算に問題有り、ということになります。そこで次に、iphoneのケースデータについて調べてみました。
入手したデータがシェルデータであった為、これをソリッドデータに変更しましが、
FreeCAD上の表示は、通常の灰色表示で問題はなさそうでした。しかし、これをSTLファイル出力して、件の修復ソフトで調べてみると・・・
パッと見にはどこがエラーなのかは判りませんでしたが、例のビックリマークが出て、とにかくエラーがあるというので、詳しく見たら確かに面の欠損部分がいくつか(5箇所)見つかりました。
そこで、これを自動修復。修復したSTLデータを再度FreeCADへインポートし、これを使ったブーリアン演算を実施してみたところOKとなり、ブーリアン演算の問題ではなさそうだ、となりました。
STLデータのソリッド変換方法については後述しますが、ここではエラー箇所が判ったので、FreeCAD上でこれを特定出来ないかと調べてみたところ・・・
確かに、開口部を確認できました。ならば、これを(簡単に)修復出来ればということになります。
この修復を、あれこれトライしてみたんですが、基本的に形状構築ツールを使って、開口部の面貼りまでは比較的簡単に出来ることがわかったんですが(下図参照)、
作成した面(Face)のままでは、これを元のデータと結合してもSolidになってくれません。
このレポートビューを解釈するに、複合体(compound)として表示されるオブジェクトは、何か欠陥が存在するものだということのようです。
これをShell ⇒ Solid と変換する必要があり、その手間が半端で無さそう、あと一歩のところまではいきましたが・・・タイムオーバーです。(5/26再挑戦にて一件落着しました(後述))
結論
- FreeCADのブーリアン演算機能は、対象Solidに欠陥が無い限りにおいて問題は無さそう。(今回修復が必要になったのは、インポートしたモデルそのものが欠陥を内包していた為)
- インポートしたSTPモデルに欠陥があるかどうかは、STLファイル出力して、別ソフト(netfabbなど)にて確認、修復するしかなさそう。
インポートしたstlファイルをSolid化する方法
Partワークベンチで、
「部品」⇒「メッシュから形状を作成」を選択
変換後のオブジェクトはシェルデータなので、形状構築ツールを使って、これをソリッドに変換する。
こうして作成したソリッドであれば、正常にブーリアン演算可能。
(結果もちゃんと灰色表示です)
フォントデータを3次元化する方法
詳細は、⇒ http://open-shelf.appspot.com/FreeCAD/18.html
Draftワークベンチ ⇒ シェイプストリングを使用して文字入力、サイズなど決定。
DEXCSの場合、フォントファイルは、
/usr/share/fonts/truetype/
以下にあるフォントであれば何を使っても良い。日本語フォントを使えば、日本語表示も可能。
大きさやレイアウトが決まったら、Partワークベンチの押し出しツールを使って完成。
穴のあるシェルデータの修正方法
基本的に形状構築ツールを使います。穴の部分は、上に示した通り、エッジから面を作成します。5箇所の穴を塞いだ結果が下図のような状態になります。
問題は、これらの面をどうやってシェル化するか?です。FreeCADベテランの読者さんからも、これで出来るはずだということだったので、気を取り直して再挑戦したところ、結局2つのコツがあることが判りました。
コツ1・・・面の選択方法
単純に考えれば、ツリービューの画面上で、修復前のシェルと追加した面を選択して、「作成」ボタンを押せば良かろう・・・なんですが、これをやると、
となってしまいます。当初は、シェルを面に分割してから再結合、とか色々やってみましたが、ようやく判ったのは、ツリービューの画面上での選択はNGだったということです。以下に3Dビュー上で選択した場合とを比較してみます。
お判りでしょうか?ツリービュー上で選択したものは、面以外に、エッジや頂点まで選択されてしまっています。この事に気づくまで、随分回り道をしてしまいました(-_-;)
要するに、面の選択は3D画面上で、すべての面(全部で約50面!)を一つづつ根気よくピックしてやらなければならなかった、ということです。
ただ、これをやろうとすると、モデルを大きく拡大して、色々視る方向を変えてやらないと、うまくピックできません。
コツ2・・・グルグル回転を止めるには
問題は、視方向の回転操作をしているうちに、マウス操作を少し間違えると、モデルが勝手にグルグル回転し出してしまう事です。
通常の場合だと、3Dビュー画面上で、マウスクリックしてやれば回転は止まってくれます。しかしこの場合、その方法で回転を止めると、それまで苦労してピックアップした面がすべてリセットされてしまうことでした。
この事があったので、尚更にツリービュー画面上で選択する方法に拘って、余分な回り道をしていたのでした。
3Dビュー画面上でマウスクリックする以外に、この回転を止める方法はないものかと、今回改めて、試行錯誤した所、
標準ビュー選択メニュー(上図)のうち、赤枠で囲った部分のボタンを使えば、指定の視方向になって回転が止まり、ピックアップした面もリセットされないということが判りました。
これにて、ようやく一件落着です。