資源簡介
基于matlab讀取stl文件并去除文件中的冗余點建立拓撲結構,方便后續操作。
代碼片段和文件信息
function?[nnum?node_xyz?face_node?face_normal?]?=?stl_read?(?...
?filename?node_num?face_num)
fid=fopen(filename?‘r‘);
if?fid?==?-1?
????error(‘文件打開錯誤!.‘)
end
format?long
%定義變量
nnum=0;
fnum=0;
f=0;????????????????????????????????????%?記錄重合點的個數
l=0;?????????????????????????????????????%?標識重合點
m=0;?%標識面點
p?=?node_num/3;
v=zeros?(?3?node_num);
face_node?=?zeros?(?3?face_num?);
face_normal?=?zeros?(?3?face_num?);
node=?zeros?(?3?face_num);
%開始讀整個文件,直到結束符為止
while?feof(fid)?==?0????????????????????%?test?for?end?of?file?if?not?then?do?stuff
????tline?=?fgetl(fid);?????????????????%?reads?a?line?of?data?from?file.
????fword?=?sscanf(tline?‘%s‘);???????%?make?the?line?a?character?string
?%disp(sprintf(fword));
%保存向量
if?strncmpi(fword?‘facetnormal‘11)?==?1;
????%L=L+1;?disp(L);disp(sprintf(tline));
???????STLnormal?=?sscanf(tline?‘%*s?%*s?%12f?%12f?%12f‘);
????%disp(STLnormal);
??????fnum?=?fnum?+?1;
??????n(:fnum)?=?STLnormal;
end?????????????????????????????????????????
%檢查坐標
if?strncmpi(fword?‘vertex‘6)?==?1;????%?Checking?if?a?“V“ertex?line?as?“V“?is?1st?char.
???????%disp(sprintf(tline));
???????STLxyz=?sscanf(tline?‘%*s?%f?%f?%f‘);?%?&?if?a?V?get?the?XYZ?data?of?it.
?????????%disp(STLxyz);
???????%disp(nnum);
??if?nnum?==?0
?????????nnum?=?nnum?+?1;
?????????v(:nnum)=STLxyz;
?????????node(1fnum)?=nnum?;?
評論
共有 條評論