STLとは:1987年に生まれた三角形の形式
STLは、3D Systems社が1987年に光造形(stereolithography)の装置のために作った形式です。名前もこの光造形に由来します。
考え方は当時から変わっていません。曲面も平面も、すべて三角形の面で近似します。円柱は細長い三角形の帯になり、細かく分けるほど丸く見えます。その分、データは重くなります。
STLデータの中身:バイナリとASCII
バイナリ形式の構造は単純です。
- 先頭に80バイトのヘッダー。文字は自由で、読み込む側は読み飛ばします。
- 次に三角形の数を表す4バイトの整数。
- そのあと三角形1つにつき50バイト。法線と3つの頂点で32ビット浮動小数点数が12個(48バイト)、残りの2バイトは規格上使われません。
ASCII形式はテキストで、solid の行で始まり、三角形ごとに7行を書きます。facet normal、outer loop、vertex が3行、endloop、endfacet の順で、最後は endsolid です。
バイナリかASCIIかを見分ける・容量を計算する
テキストエディタで開いて、先頭に solid と読める文字が続き、vertex の行が並んでいればASCIIです。読めない記号ばかりならバイナリです。
バイナリの容量は 84 + 50 × 三角形の数(バイト)で決まります。1万個の三角形なら500,084バイト、約0.5 MBです。当サイトのテスト用の9,024三角形の球は451,284バイトでした。
ASCIIは数値の桁数で大きさが変わります。実測では三角形1つあたり約280〜300バイトで、バイナリの約5.6〜6倍でした。整数だけで書いた20 mmの立方体なら108バイトで済みます。
拡張子 .stl のファイルに単位はありません
STLに書かれているのは座標の数値だけです。「1」がmmなのかインチなのかは、ファイルのどこにも記録されません。多くのスライサーはmmとして読むため、インチで設計した部品は25.4分の1の大きさで現れます。
当サイトの STLビューワー も数値をmmとして表示します。部品が小さすぎるときは、画面の Edit から Inches → mm を押すと25.4倍になります。数値はリトルエンディアンの32ビット浮動小数点数なので、有効桁数はおよそ7桁です。
STLのままでよいとき、3MFやSTEPにするとき
| 次の作業 | 向く形式 | 理由 |
|---|---|---|
| スライサーで造形する | STL または 3MF | 3MFはZIPのパッケージで、単位(既定はmm)と色を記録できます |
| CADに渡す | STEP | ISO 10303 の形式で、単位を宣言し、正確な曲面(B-rep)を扱えます |
| 描画や別の3Dソフトで使う | OBJ | テキスト形式で、材料は別ファイル .mtl に入ります。単位はありません |
STLからSTEPを作るなら STL STEP 変換 を使います。三角形がそのまま平らな面になるので、曲面のSTEPにはなりません。拡張子 .stp と .step の違いは STP拡張子の解説 にまとめています。
受け取ったSTLデータで確かめること
スライサーはモデルを層ごとに切り、どこが内側かを判断します。この判断は、表面がすき間なく閉じているときにしか正しく働きません。どのエッジも2つの三角形が共有し、法線がすべて外を向いている状態です。
このページの下のビューワーにファイルをドロップすると、Info に寸法、三角形の数、穴、開いたエッジ、非多様体エッジ、裏返った三角形が出ます。ツールの画面は英語で、単位の切り替えは Units です。ファイルはお使いのパソコンの中で読み込まれ、サーバーには送られません。CADから届いた部品なら STEP viewer で開いてください。
よくある質問
STLデータとは何ですか。
立体の表面を三角形の集まりとして記録した3Dデータです。CADなどで作った形を3Dプリンターに渡すときに使われます。
STLファイルはどのソフトで開けますか。
スライサーや多くのCADで開けます。インストールせずに見るなら、このサイトのビューワーにドロップするだけで表示されます。
テキストエディタで開くと読めない文字が並ぶのはなぜですか。
バイナリ形式のSTLだからです。三角形の座標が32ビットの数値として書かれているため、文字としては読めません。
STLデータの形は後から直せますか。
拡大縮小、回転、カット、穴の修復などはできます。ビューワーで開いて Edit を押してください。穴の直径のような設計上の寸法は、元のCADで直します。
STLとSTEPは何が違いますか。
STLは表面を三角形で近似し、単位を持ちません。STEPは穴や曲面を数式のまま正確に記録し、単位も宣言します。