matlab讀取stl文件並顯示


matlab讀取stl文件並顯示

讀取stl文件

matlab已經包含一個函數stlread()專門用於讀入stl文件。相關幫助如下:
stlread
從 STL 文件創建三角剖分全頁折疊
語法
TR = stlread(filename)
[TR,fileformat,attributes,solidID] = stlread(filename)
說明
示例
TR = stlread(filename) 返回 triangulation 對象 TR,其中包含 STL 文件中定義的三角形。

[TR,fileformat,attributes,solidID] = stlread(filename) 返回 filename 的文件格式、屬性(文件為二進制時)以及實體標識號(文件為文本時)。

示例
全部折疊
從 STL 文本文件中讀取三角剖分
根據文件 tristltext.stl 中包含的數據創建並繪制 triangulation 對象。

TR = stlread('tristltext.stl');
triplot(TR)

輸入參數
全部折疊
filename - STL 文件名
字符向量 | 標量 string
STL 文件名,指定為字符向量或標量 string。文件名必須以 .stl 或 .STL 擴展名結尾。如果文件包含退化三角形,則 stlread 會自動刪除它們。

示例: 'stltextfile.stl'

輸出參數
全部折疊
TR - 三角剖分
triangulation 對象
三角剖分,以 triangulation 對象形式返回。

fileformat - 文件格式
'binary' | 'text'
文件格式,以 'binary' 或 'text' 返回。

attributes - 二進制屬性
uint16 向量
二進制屬性,以 uint16 向量形式返回。當輸入文件是二進制時,attributes 包含有關三角形的編碼信息。它的長度等於三角剖分中的三角形數量。如果輸入文件是文本文件,則 attributes 是空數組。

solidID - 實體分組索引
向量
實體分組索引,以標識號的向量形式返回。當輸入文件是文本文件時,標識號將每個三角形分配到三角剖分中的一個三角形分組中。當輸入文件是二進制時,solidID 包含所有文件。solidID 的長度等於三角剖分中的三角形數。

數據類型: double

另請參閱
triangulation

在 R2018b 中推出

顯示stl文件內容

stlread函數的返回結果包含兩部分內容:

  1. 所有點三維坐標,是一個n行3列矩陣。
  2. 三角剖分的三角面頂點序號,每個序號對應第一部分中的一個點。

這兩部分剛好和patch函數直接對接,因此顯示stl文件的內容就使用patch了
具體為:
patch('Faces',F,'Vertices',V) 創建一個或多個多邊形,其中 V 指定頂點的值,F 定義要連接的頂點。當有多個多邊形時,僅指定唯一頂點及其連接矩陣可以減小數據大小。為 V 中的每個行指定一個頂點。要創建一個多邊形,請將 F 指定為向量。要創建多個多邊形,請將 F 指定為矩陣,其中一行對應於一個多邊形。不要求每個面都具有相同的頂點數。要指定不同數量的頂點,請以 NaN 值填充 F。

指定面和頂點
通過指定每個唯一頂點的坐標和定義如何連接這些頂點的矩陣,創建一個多邊形。然后,繼續將兩個多邊形添加到圖窗中。

創建一個紅色正方形,四個角分別位於 (0,0)、(1,0)、(1,1) 和 (0,1)。指定 v 以使每行定義一個頂點的 (x,y) 坐標。然后,將 f 指定為要連接的頂點。通過指定 FaceColor 屬性來設置顏色。

v = [0 0; 1 0; 1 1; 0 1];
f = [1 2 3 4];
patch('Faces',f,'Vertices',v,'FaceColor','red')

通過將 f 指定為兩行矩陣來創建兩個多邊形。每一行定義一個補片的面。

v2 = [2 4; 2 8; 8 4; 5 0; 5 2; 8 0];
f2 = [1 2 3;
4 5 6];
patch('Faces',f2,'Vertices',v2,'FaceColor','green')

小結

利用matlab的stlread函數讀入stl文件,利用patch函數顯示stl文件。
遺憾的是stl文件沒有顏色,必須自己指定。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM