uoz 作業日記

様々な作業の記録を共有するブログです。

IGESファイルをThree.jsで読み込めるように変換するスクリプト

IGESってのは

は異なるCAD間でデータを交換する際に使用する中間ファイル・フォーマットの一つ

IGES - Wikipedia

この形式で公開されてるデータっていろいろある。
いろんな金物で有名なスガツネのサイトでは、商品のデータがダウンロードできたりする。
スガツネ工業 / WEBカタログ

Trheejs.はWebGLの技術を手軽に利用できるjavascriptのライブラリ。
簡単にブラウザで3DCGを扱える。

わけあってIGESのファイルをThree.jsで読み込みたい

IGESを読み込むローダーがない

Trhee.jsでは、一から三次元の形をつくっていくこともできるけど、CADなどで作った形を読み込むこともできる。
幾つかの形式に対応しているが、daestlと、後なんかいろいろあるけど、IGESに対応した「ローダー」がない。


collada(.dae)の読み込み
Three.jsでCollada読み込み - jsdo.it - Share JavaScript, HTML5 and CSS

stlの読み込み
【初めてのThree.js】 自作3Dデータ(STL)をWebサイトに表示してみた。 | HELLO!HELLO!@180mm
(ちょっと古いので公式のthree.js / examplesを参考にしたほうがいい)

変換する

しかたないので

.igs → なんかの中間形式orツール → dae or stl → threejs


という感じで変換を挟んで読み込ませる。

Sketchup経由

Sketchupってのは、フリー版もあるお手軽3D制作ソフト。Googleに買収されたけどまた売りに出されたらしい。
3D for Everyone | SketchUp

こいつはいろんな形式の3Dデータを読み込めて、実はそのままではIGESは読み込めないんだけど、このプラグインを入れるとインポートできるようになる。


SimLab IGES importer for Sketchup | SketchUp Extension Warehouse

Sketchupのインポート/エクスポート系のプラグインはいろいろあるらしいが、割と評判がいい。

試してみたら、ちゃんと動いた。


(上記のスガツネの取っ手を読み込んだ例)
f:id:uoz:20151129130058p:plain


ただし、このプラグインは無料ではない。

結構高くて、$79もする。

1週間くらいだったか無料で試用もできるので、用事がそれで済めばよかったが、うかうかしているうちに試用期限が切れてしまった...

FreeCAD経由

そこで別のツールFreeCADを使う。

FreeCADってのはその名の通りオープンソース、無料のCADツール

FreeCAD: An open-source parametric 3D CAD modeler


これもいろんな形式に対応しており、IGESで読みこんで、collada(dae)でエクスポートできる!

と思ったけど、colladaのエクスポートは結局エラーがでてできなかった。
threejsはstlも読み込める(ジオメトリのデータだけになっちゃうけど)のでそっちにした。

f:id:uoz:20151129125903p:plain

ディレクトリ内のファイルを変換するスクリプト

ちなみに、FreeCADではPythonスクリプトが使える。

実は大量のデータを変換しないといけないんだけど、スクリプトを書けば手間が省ける。

せっかくなので書いたやつを公開する。
あるディレクトリ内の.igsファイルを全部stlに変換するというもの。

gist.github.com