How could I separate the geometry data from single stl file contains multiple objects by stlread?
7 次查看(过去 30 天)
显示 更早的评论
Dear all, I have a question about stlread!
The scenario is that I have a stl file with two non-overlap ellipses in it as attached.
But when I using stlread function in Matlab.
I obtain the points coordinates and connectivity list of faces of both ellipses TOGETHER.
I wondering is there any method to separate the information of two ellipses?
For regular shapes this might not be a big problem, however, If I have 100 irregular objects with eac of them has different number of faces and vertices, it will be difficult to use since it's very hard to specify the information of each object.
I just try to start to separate them, but then I have no further idea.
Attached are my codes, with stl file in zip format.
F=stlread('research_stl_read.stl')
con_list=F.ConnectivityList
face_num=length(con_list(:,1))
Could anyone give me a hand?
I appreciate for your patience
Sincerely yours~!
Daniel
1 个评论
KSSV
2021-2-4
It can be seperated.....you need to have a look on the data to do this. Attach your stl file. And the lines of code which you tried to plot the attached.
采纳的回答
Bruno Luong
2021-2-4
编辑:Bruno Luong
2021-2-4
You can use conncomp of the triangulation graph
data=stlread('research_stl_read.stl');
s=data.ConnectivityList(:,[1 2]);
t=data.ConnectivityList(:,[2 3]);
G=graph(s(:),t(:));
I=G.conncomp;
u=unique(I);
P = data.Points;
T = data.ConnectivityList;
clear Obj
for i=1:length(u)
j = find(I==i);
Pi = P(j,:);
[b,Ti] = ismember(T,j);
Ti = Ti(all(b,2),:);
Obj{i} = triangulation(Ti,Pi);
end
figure();
subplot(2,2,[1 2]);
trimesh(data);
for i=1:length(Obj)
subplot(2,2,i+2);
trimesh(Obj{i} );
end
2 个评论
更多回答(0 个)
另请参阅
产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!