STLファイルのフォーマットのフォーマットの紹介ページです。

 = 汎用可視化ソフト Visualizer Pro = 
コンター図,ベクトル図,流線,等値面,グラフ作成がこれ1本でOK

可視化ソフト Visualizer Pro

ダイジェスト    機能一覧     事例紹介    価 格     購 入    サポート

STLファイルのフォーマット

  • 概要
  • アスキーフォーマット
    • 構文
    • 解説
    • サンプルファイル
  • バイナリフォーマット
    • 構文
    • 解説
    • サンプル

概要

3D Systems社のSLA CADというソフト用のファイルフォーマットです。 多くの解析ソフトがサポートし、三角形メッシュソリッド表現ファイルフォーマットとして広く使用されています。 記録される3Dモデルデータは、三角形の面法線ベクトルと3つの頂点の座標値です。 三角形の頂点の順番と面の表裏の関係は、右ねじの規則に従います(三角形の表側は点が半時計周りに回る順番に並びます)。



STLファイルフォーマットには、アスキーフォーマットとバイナリーフォーマットがあります。


アスキーフォーマット

■構文

solid 任意の文字列
facet normal x成分値 y成分値 z成分値
outer loop
vertex x成分値 y成分値 z成分値
vertex x成分値 y成分値 z成分値
vertex x成分値 y成分値 z成分値
endloop
endfacet
facet normal x成分値 y成分値 z成分値
outer loop
vertex x成分値 y成分値 z成分値
vertex x成分値 y成分値 z成分値
vertex x成分値 y成分値 z成分値
endloop
endfacet
(facet normal行~endfacet行までを1枚の三角形データとして以降くり返し)
.............. .............. .............. endsolid 任意の文字列

■解説
上の構文例のように、facet normal行~endfacet行までを一組とし、1つの三角形を形成しています。
facet normal行は三角形の法線ベクトル成分で、その次には、outer loopの行が、その次には3つのvertexの行が、その次にはendloopの行が、その次にはenndofacetが来ます。 なお、冒頭は、「solid 任意の文字列」 で始まり、終端は、「endsolid 任意の文字列」 で終了する必要があります。

「solid」キーワード行
ソリッド名(任意)を指定します。
キーワードの後には区切り文字をはさんで、ソリッド名が記されます。
通常1つのSTLファイルにsolidキーワード行は1回だけ記されます。

「facet normal」キーワード行
1つの三角形の面法線ベクトルを指定します。
2単語で1キーワード。
2単語の間には1文字分の半角スペースです。
キーワードの後には区切り文字をはさんで、三角形の面法線ベクトルのX成分値 Y成分値 Z成分値が記されます。

「outer loop」キーワード行
2単語で1キーワードです。
2単語の間には1文字分の半角スペースです。
キーワードの後には何も記されません。

「vertex」キーワード行 1つの頂点の頂点座標値を指定します。
キーワードの後には区切り文字をはさんで、三角形の3つの頂点のうちの1つの頂点の頂点座標値のX成分値 Y成分値 Z成分値が記されます。

「endloop」キーワード行
endとloopの間にはスペースをはさまみません。
キーワードの後には何も記されません。

「endfacet」キーワード行 endとfacetの間にはスペースをはさみません。
キーワードの後には何も記されません。

■サンプルファイル
cube-ascii.stl ( 10x10x10 立方体 )


バイナリフォーマット

バイト数 データ型 データ内容
80 char[ ] 任意の文字列
4 unsigned int 三角形の枚数
- - 1つ目の三角形データ
4 float 三角形の法線ベクトルのX成分値
4 float 三角形の法線ベクトルのY成分値
4 float 三角形の法線ベクトルのZ成分値
4 float 三角形の1点目の頂点のX座標値
4 float 三角形の1点目の頂点のY座標値
4 float 三角形の1点目の頂点のZ座標値
4 float 三角形の2点目の頂点のX座標値
4 float 三角形の2点目の頂点のY座標値
4 float 三角形の2点目の頂点のZ座標値
4 float 三角形の3点目の頂点のX座標値
4 float 三角形の3点目の頂点のY座標値
4 float 三角形の3点目の頂点のZ座標値
2 - 未使用データ
- - 2つ目の三角形データ
4 float 三角形の法線ベクトルのX成分値
4 float 三角形の法線ベクトルのY成分値
4 float 三角形の法線ベクトルのZ成分値
4 float 三角形の1点目の頂点のX座標値
4 float 三角形の1点目の頂点のY座標値
4 float 三角形の1点目の頂点のZ座標値
4 float 三角形の2点目の頂点のX座標値
4 float 三角形の2点目の頂点のY座標値
4 float 三角形の2点目の頂点のZ座標値
4 float 三角形の3点目の頂点のX座標値
4 float 三角形の3点目の頂点のY座標値
4 float 三角形の3点目の頂点のZ座標値
2 - 未使用データ
・・・ - 三角形の法線ベクトルのX成分値から未使用データまでを1枚の三角形データとして
三角形枚数分のデータが続く

■解説
最初に80バイト分の任意の文字列があり、次に4バイトで三角形の枚数、次に50バイト(=4*3+4*3+4*3+4*3+2)で1枚の三角形のデータが三角形の枚数分続くという形式になっています。

任意の文字列
ソリッド名、STLファイルを生成したソフト名、ソリッド名とSTLファイルを生成したソフト名、等が記されている場合の他、何も記されていない場合もあります。

三角形の枚数
int型

三角形の法線ベクトルのそれぞれの成分値
float型

三角形の頂点のそれぞれの座標値
float型


■サンプルファイル
cube-binary.stl ( 10x10x10 立方体 )

<< 前のページに戻る

↑ PAGE TOP