複製鏈接
請複製以下鏈接發送給好友

stl格式

鎖定
STL (STereoLithography, 立體光刻)是由3D Systems軟件公司創立、原本用於立體光刻計算機輔助設計軟件文件格式。它有一些事後諸葛的字頭語如“標準三角語言(Standard Triangle Language)”、“標準曲面細分語言(Standard Tessellation Language)”、“立體光刻語言(STereolithography Language)”和“(立體光刻曲面細分語言)”。許多套裝軟件支持這種格式,它被廣泛用於快速成型3D打印計算機輔助製造(CAM)。STL文件僅描述三維物體的表面幾何形狀,沒有顏色材質貼圖或其它常見三維模型的屬性。STL格式有文字和二進碼兩種型式。二進碼型式因較簡潔而較常見。
STL檔描述原始非結構化三角網格由表面單位法線和由右手定則排序的頂點用三維三角形笛卡兒座標系。STL座標必須是正數,沒有尺度信息,且計量單位為任意的
中文名
stl格式
stl文件
有兩種
性    質
用三角網格來表現3D CAD模型
用    途
表示三角形網格的一種文件格式

stl格式STL格式簡介

STL只能用來表示封閉的面或者體。stl文件有兩種:一種是ASCII明碼格式,另一種是二進制格式。

stl格式歷史

立體光刻機是能用一系列切片來構建任何體積形狀的3D打印機。這些機器需要一系列用凝固材料填充在封閉的2D輪廓中,最後再與各層熔合在一起。對這樣的機器而言,自然的文件格式是一系列對應不同Z值的封閉的多邊形。然而,因為改變層的厚度可能會得到更快(雖然不太精確)的構建,若能以可在必要水平切片封閉多面體來定義模型,會更好。
STL文件格式看似能用多邊形來定義多面體,但在實用上它只被用過三角形。這表示ASCII協議的語法是多餘的。
要能正確組成3D體,STL檔表示的表面必須是封閉同相連的,且每個邊都正好是二個三角形的一部分,且沒有交叉。 由於STL語法對此屬性不嚴緊,應用程序能忽視其封閉性。
作為切片的該軟件的封閉性僅事項只要三角形需要它以確保所得到的二維的多邊形是封閉的。對切片三角形後須確保所得到的2D多邊形是封關閉的軟件而言,封閉性才會重要。這類軟件有時會移動接近的頂點到同一位置,來清理小的差異。結果是不可預測的,但它往往足夠。

stl格式二進碼 STL

由於文字STL檔會非常大,因此有二進碼版的STL。二進碼STL檔有個80字符標頭(內容通常都被忽略但絕不可用"solid"來開始!這樣會使不少軟件認為這是文字STL檔)。接着是一個4字節無號整數,它表示這文件中的三角形數。再來是描述每個三角形的信息。之後就結束。
每個三角形以12個32位浮點數來描述:3個描述法線,接着三頂點的X/Y/Z座標─正如文字STL一樣。之後是一個2字節無號整數(unsigned short),它代表“屬性字符數”─在標準格式中它該是0,因為多數軟件不明白其它事項。
雖然文件內沒有説明,浮點數以little-endianIEEE 754表示。
UINT8[80] – HeaderUINT32 – Number of trianglesforeach triangleREAL32[3] – Normal vectorREAL32[3] – Vertex 1REAL32[3] – Vertex 2REAL32[3] – Vertex 3UINT16 – Attribute byte countend

stl格式二進碼STL的顏色

二進碼STL至少有兩種非標準方式來加上顏色信息:
  • VisCAM和SolidView軟件用每個三角形後的2個“屬性字符數”存放15比特RGB色碼:
    • 比特 0到 4是藍的強度(0~31)。
    • 比特 5到 9是綠的強度(0~31)。
    • 比特10到14是紅的強度(0~31)。
    • 比特15是1表顏色有效;0表無效(同正常的STL檔)。
  • Materialise Magics軟件用開頭的80位標頭表示模型整體顏色。若有使用顏色,標頭某處會是文字字符串"COLOR="接着4字節RGBA(透明度),值域為0–255。這是整個模型的顏色,每個小面可以另外指定。這軟件還可以指定更詳細的表面特性,即物質(計算機圖形)。在"COLOR=RGBA"後可加上ASCII字符串",MATERIAL=",接着3顏色(3×4位):
先是漫反射的顏色,第二個是反射高光顏色,第三是環境光。物質設置優於顏色。每個小面的顏色是用三角形後的2個“屬性字符數”以下列方式來存放:
    • 比特 0到 4是紅的強度(0~31)。
    • 比特 5到 9是綠的強度(0~31)。
    • 比特10到14是藍的強度(0~31)。
    • 比特15是0表用小面顏色;1表用模型顏色。
上述兩種小面顏色信息中,2比特里的紅/綠/藍順序相反,因此,雖然這些格式容易兼容,反序表示並非如此!更糟的是:通用的STL讀取器不能自動分別它們!也無法指定小面有透明度!因為沒有α值!雖然對當前的快速原型機而言,這不重要。

stl格式其它使用領域

STL文件格式簡單且容易輸出。因此,許多計算機輔助設計(CAD)系統能輸出STL文件格式。雖然輸出簡單產生,一些聯結性信息卻被丟棄!例如:A和B在CAD系統是相異、但座標恰好相同的兩點。STL只輸出點的座標,因此點A和B在STL就有同的表示。還存在其他的問題。
許多計算機輔助製造(CAM)系統必須是三角形化的模型。STL文件格式不是存儲器和計算上最有效轉換數據的方法,但STL常被CAM系統用於輸入三角化的幾何。這格式隨手可得,所以CAM系統用它。為了使用數據,CAM系統可能要重建連接性。重建會導致誤差 [1] 
STL也能在CAD、CAM和計算環境(如:Mathematica)間交換數據。

stl格式小面法線

文字(ASCII)和二進碼版的STL,小面法線必項是指向模型外部的單位向量。若設為(0,0,0),多數軟件會自動以三角形三頂點的順序根據右手定則計算法線。一些STL讀取器(如:Art of Illusion的STL外掛)會檢查小面的法線與它們用右手定則算出來的相符。若不同,會警告用户。有的軟件會完算用自己根據右手定則算的。雖然可以不使用右手定則來計算法線的情況罕見,為了完全兼容,文件都應提供小面法線及正確指定頂點順序。一個出名的例外是SolidWorks,它用法線當濃淡處理

stl格式STL的文件格式

stl格式ASCII格式

ASCII碼格式的STL文件逐行給出三角面片的幾何信息,每一行以1個或2個關鍵字開頭。
在STL文件中的三角面片的信息單元 facet 是一個帶矢量方向的三角面片,STL三維模型就是由一系列這樣的三角面片構成。
整個STL文件的首行給出了文件路徑及文件名。
在一個 STL文件中,每一個facet由7 行數據組成,
facet normal 是三角面片指向實體外部的法矢量座標,
outer loop 説明隨後的3行數據分別是三角面片的3個頂點座標,3頂點沿指向實體外部的法矢量方向逆時針排列。 [2] 
ASCII格式的STL 文件結構如下:
明碼://字符段意義
solidfilenamestl//文件路徑及文件名
facetnormalxyz//三角面片法向量的3個分量值
outerloop
vertexxyz//三角面片第一個頂點座標
vertexxyz//三角面片第二個頂點座標
vertexxyz//三角面片第三個頂點座標
endloop
endfacet//完成一個三角面片定義

......//其他facet

endsolidfilenamestl//整個STL文件定義結束

stl格式二進制格式

二進制STL文件用固定的字節數來給出三角面片的幾何信息。
文件起始的80個字節是文件頭,用於存貯文件名;
緊接着用 4 個字節的整數來描述模型的三角面片個數,
後面逐個給出每個三角面片的幾何信息。每個三角面片佔用固定的50個字節,依次是:
3個4字節浮點數(角面片的法矢量)
3個4字節浮點數(1個頂點的座標)
3個4字節浮點數(2個頂點的座標)
3個4字節浮點數(3個頂點的座標)個
三角面片的最後2個字節用來描述三角面片的屬性信息。
一個完整二進制STL文件的大小為三角形面片數乘以 50再加上84個字節。
二進制:
UINT8//Header//文件頭
UINT32//Numberoftriangles//三角面片數量
//foreachtriangle(每個三角面片中)
REAL32[3]//Normalvector//法線矢量
REAL32[3]//Vertex1//頂點1座標
REAL32[3]//Vertex2//頂點2座標
REAL32[3]//Vertex3//頂點3座標
UINT16//Attributebytecountend//文件屬性統計

stl格式STL文件特點

stl文件格式簡單,只能描述三維物體的幾何信息,不支持顏色材質等信息,是計算機圖形學處理CG,數字幾何處理如CAD, 數字幾何工業應用, 如三維打印機支持的最常見文件格式。
表面的三角剖分之後造成3D模型呈現多面體狀。輸出STL檔案的參數選用會影響到成型質量的良莠。所以如果STL檔案屬於粗糙的或是呈現多面體狀,您將會在模型上看到真實的反應。
在CAD軟件包中,當您輸出STL檔案時,您可能會看到的參數設定名稱,如弦高(chord height)、誤差(deviation)、角度公差(angle tolerance)、或是某些相似的名稱。建議儲存值為0.01或是0.02。

stl格式CAD造型方法

對於剛接觸3d打印的朋友 提供點幫助!
Alibre
File(文件) -> Export(輸出)-> Save As(另存為,選擇.STL)-> 輸入文件名-> Save(保存)
AutoCAD
輸出模型必須為三維實體,且XYZ座標都為正值。在命令行輸入命令“Faceters” -> 設定FACETRES為1 到10 之間的一個值 (1為低精度,10為高精度) -> 然後在命令行輸入命令“STLOUT” -> 選擇實體 -> 選擇“Y”,輸出二進制文件 -> 選擇文件名
CADKey
從Export(輸出)中選擇Stereolithography(立體光刻)
I-DEAS
File(文件)-> Export(輸出)-> Rapid Prototype File(快速成形文件)-> 選擇輸出的模型 ->Select Prototype Device(選擇原型設備)> SLA500.dat -> 設定absolute facet deviation(面片精度) 為 0.000395 -> 選擇Binary(二進制)
Inventor
Save Copy As(另存復件為) -> 選擇STL類型 -> 選擇Options(選項),設定為High(高)
IronCAD
右鍵單擊要輸出的模型 -> Part Properties(零件屬性)> Rendering(渲染) -> 設定 Facet Surface Smoothing(三角面片平滑)為 150 -> File(文件)> Export(輸出)-> 選擇 .STL
Mechanical Desktop
使用AMSTLOUT命令輸出STL文件。
下面的命令行選項影響STL文件的質量,應設定為適當的值,以輸出需要的文件。
1. Angular Tolerance(角度差)―― 設定相鄰面片間的最大角度差值,默認15度,減小可以提高STL文件的精度。
2. Aspect Ratio(形狀比例)―― 該參數控制三角面片的高/寬比。1標誌三角面片的高度不超過寬度。默認值為0,忽略。
3. Surface Tolerance(表面精度)―― 控制三角面片的邊與實際模型的最大誤差。設定為0.0000 ,將忽略該參數。
4. Vertex Spacing(頂點間距)―― 控制三角面片邊的長度。默認值為0.0000, 忽略。
ProE
1.  File(文件)-> Export(輸出)-> Model(模型)
2.  或者選擇File(文件)-> Save a Copy(另存一個復件) -> 選擇 .STL
3. 設定弦高為0。然後該值會被系統自動設定為可接受的最小值。
4. 設定Angle Control(角度控制)為 1
ProE Wildfire
1. File(文件)-> Save a Copy(另存一個復件)-> Model(模型)-> 選擇文件類型為STL (*.stl)
2. 設定弦高為0。然後該值會被系統自動設定為可接受的最小值。
3. 設定Angle Control(角度控制)為 1
Rhino
File(文件)-> Save As(另存為 .STL)
SolidDesigner (Version 8.x)
File(文件)-> Save(保存) -> 選擇文件類型為STL
SolidDesigner (not sure of version)
File(文件)-> External(外部)-> Save STL (保存STL)-> 選擇Binary(二進制)模式 ->選擇零件-> 輸入0.001mm作為Max Deviation Distance(最大誤差)
SolidEdge
1. File(文件)-> Save As(另存為) -> 選擇文件類型為STL
2. Options(選項)
設定 Conversion Tolerance(轉換誤差)為 0.001in 或 0.0254mm
設定Surface Plane Angle(平面角度)為 45.00
SolidWorks
1. File(文件)-> Save As(另存為) -> 選擇文件類型為STL
2. Options(選項)-> Resolution(品質)-> Fine(良好) -> OK(確定)
Think3
File(文件)-> Save As(另存為) -> 選擇文件類型為STL
Unigraphics
1. File(文件)> Export(輸出)> Rapid Prototyping(快速原型) -> 設定類型為 Binary (二進制)
2. 設定Triangle Tolerance(三角誤差)為 0.0025
設定Adjacency Tolerance(鄰接誤差)為 0.12
設定Auto Normal Gen(自動法向生成)為 On(開啓)
設定Normal Display(法向顯示)為 Off(關閉)
設定Triangle Display(三角顯示)為On(開啓)
參考資料
  • 1.    董得義[1], 謝川[1], 李彥生[1], et al. 基於MFC的STL格式數據文件接口問題研討[J]. 現代製造工程, 2005(5).
  • 2.    嚴梽銘 鍾豔如 .基於VC++和OpenGL的STL文件讀取顯示.北京市:計算機系統應用 Computer Systems & Applications ,2009年第3期:172-175