Licensed under Creative Commons Attribution-Share Alike 3.0 (https://commons.wikimedia.org/wiki/User:LaurensvanLieshout).
本条目需要編修,以確保文法、用詞、语气、格式、標點等使用恰当。(2016年9月4日) 請按照校對指引,幫助编辑這個條目。(幫助、討論) |
扩展名 |
.stl |
---|---|
开发者 | 3D Systems軟體公司(英语:3D Systems) |
格式类型 | 立體光刻(英语:Stereolithography) |
STL (STereoLithography, 立體光刻)是由3D Systems軟體公司(英语:3D Systems)創立、原本用於立體光刻(英语:Stereolithography)電腦輔助設計軟體的檔案格式。[1][2][3]它有一些事後諸葛的字頭語(英语:backronym)如「標準三角語言(Standard Triangle Language)」、「標準曲面細分語言(Standard Tessellation Language)」、「立體光刻語言(STereolithography Language)」和「(立體光刻曲面細分語言)」。[4]許多套裝軟體支援這種格式,它被廣泛用於快速成型、3D列印和電腦輔助製造(CAM)。[5]STL檔案僅描述三維物體的表面幾何形狀,沒有顏色、材質貼圖或其它常見三維模型的屬性。STL格式有文字和二進碼兩種型式。二進碼型式因較簡潔而較常見。[6]
STL檔描述原始非結構化三角分割(英语:Triangulation (geometry))由表面單位法線和由右手定則排序的頂點用三維三角形笛卡兒座標系。STL座標必須是正數,沒有尺度資訊,且計量單位為任意的。[7]
文字STL檔以下列來開始
solid name
name是個可有可無的字串。不過,即使省略了name,solid後的空白必須存在。這列之後跟著任意數量的以下列方式表示的三角形:
facet normal ni nj nk outer loop vertex v1x v1y v1z vertex v2x v2y v2z vertex v3x v3y v3z endloop endfacet
當中,每個n或v都是正負-假數(英语:Significand)-"e"-正負-冪數型式的浮點數,如"2.648000e-002"(注意:每個v都必須不是負數)。檔案以
endsolid name
來結束。格式結構暗示其他可能的存在(如,不只一個loop定義同一個小面(facet(英语:Face (geometry))),或一個loop具有三個以上頂點)。然而在實踐中,所有小面都是簡單三角形。
除了數字或單詞內以外,檔案中任何地方都可使用空白字元(英语:White space character)(空格、tab、換列)。"facet"和"normal"以及"outer"和"loop"之間的空白是必要的。[6]
由於文字STL檔會非常大,因此有二進碼版的STL。二進碼STL檔有個80字元的檔頭(內容通常都被忽略但絕不可用"solid"來開始!這樣會使不少軟體認為這是文字STL檔)。接著是一個4位元無號整數(英语:Signedness),它表示這檔案中的三角形數。再來是描述每個三角形的資訊。之後就結束。
每個三角形以12個32位元浮點數來描述:3個描述法線,接著三頂點的X/Y/Z座標─正如文字STL一樣。之後是一個2位元無號整數(unsigned short),它代表「屬性字元數」─在標準格式中它該是0,因為多數軟體不明白其它事項。[6]
雖然文件內沒有說明,浮點數以little-endian的IEEE 754表示。
UINT8[80] – Header UINT32 – Number of triangles
foreach triangle REAL32[3] – Normal vector REAL32[3] – Vertex 1 REAL32[3] – Vertex 2 REAL32[3] – Vertex 3 UINT16 – Attribute byte count end
二進碼STL至少有兩種非標準方式來加上顏色資訊:
先是漫反射的顏色,第二個是反射高光(英语:Specular highlight)顏色,第三是環境光。物質設置優於顏色。每個小面的顏色是用三角形後的2個「屬性字元數」以下列方式來存放:
上述兩種小面顏色資訊中,2位元裡的紅/綠/藍順序相反,因此,雖然這些格式容易相容,反序表示並非如此!更糟的是:通用的STL讀取器不能自動分別它們!也無法指定小面有透明度!因為沒有α值!雖然對目前的快速原型機而言,這不重要。
文字(ASCII)和二進碼版的STL,小面法線必項是指向模型外部的單位向量。若設為(0,0,0),多數軟體會自動以三角形三頂點的順序根據右手定則計算法線。一些STL讀取器(如:Art of Illusion的STL外掛)會檢查小面的法線與它們用右手定則算出來的相符。若不同,會警告使用者。有的軟體會完算用自己根據右手定則算的。雖然可以不使用右手定則來計算法線的情況罕見,為了完全相容,文件都應提供小面法線及正確指定頂點順序。一個出名的例外是SolidWorks,它用法線當濃淡處理。
立體光刻機是能用一系列切片來構建任何體積形狀的3D列印機。這些機器需要一系列用凝固材料填充在封閉的2D輪廓中,最後再與各層熔合在一起。對這樣的機器而言,自然的文件格式是一系列對應不同Z值的封閉的多邊形。然而,因為改變層的厚度可能會得到更快(雖然不太精確)的構建,若能以可在必要水平切片的封閉多面體來定義模型,會更好。
STL檔案格式看似能用多邊形來定義多面體,但在實用上它只被用過三角形。這表示ASCII協定的語法是多餘的。
要能正確組成3D體,STL檔表示的表面必須是封閉同相連的,且每個邊都正好是二個三角形的一部份,且沒有交叉。 由於STL語法對此屬性不嚴緊,應用程式能忽視其封閉性。
作為切片的該軟件的封閉性僅事項只要三角形需要它以確保所得到的二維的多邊形是封閉的。對切片三角形後須確保所得到的2D多邊形是封關閉的軟體而言,封閉性才會重要。這類軟體有時會移動接近的頂點到同一位置,來清理小的差異。結果是不可預測的,但它往往足夠。
STL檔案格式簡單且容易輸出。因此,許多電腦輔助設計(CAD)系統能輸出STL檔案格式。雖然輸出簡單產生,一些聯結性資訊卻被丟棄!例如:A和B在CAD系統是相異、但座標恰好相同的兩點。STL只輸出點的座標,因此點A和B在STL就有同的表示。還存在其他的問題。
許多電腦輔助製造(CAM)系統必須是三角形化的模型。STL檔案格式不是記憶體和計算上最有效轉換資料的方法,但STL常被CAM系統用於輸入三角化的幾何。這格式隨手可得,所以CAM系統用它。為了使用資料,CAM系統可能要重建連接性。重建會導致誤差。
STL也能在CAD、CAM和計算環境(如:Mathematica)間交換資料。
This article uses material from the Wikipedia article "STL (檔案格式)", which is released under the Creative Commons Attribution-Share-Alike License 3.0. There is a list of all authors in Wikipedia
OpenLAB, Fablab, OpenSCAD, FreeCAD, BRL-CAD, RhinocerosCAD, LibreCAD, Vectary, 123D, TinkerCAD, Wings 3D, MOI3D, leapfrog 3D, Geomagic, Paint3D, STLfinder, Yeggi, Yobi3D, 3D Shape Search, PARTcloud, Thingiverse, GrabCAD, AMF, Additive Manufacturing, STL, Stereolitography, Mesh, MeshMixer, Free Download, lowpoly, 3D voxel,things, digital design, physical objects, rapid prototyping, 3D objects, 3D printing, reprap, fabrication, laser cutter,abs