如何将MATLAB中的网格导出到stl或obj?

时间:2017-06-13 12:17:00

标签: matlab 3d mesh stl-format

我编写了MATLAB代码(如下所示),它创建了一个边缘,然后构建了从该边缘延伸的网格。我可以在图中看到3D模型作为网格,但是无法将此模型导出为3d对象,例如stl或obj。

我读了许多转换为stl的例子,它使用了这样的东西:

% Extract the surface mesh
M=isosurface(x,y,z,F,0);
tr=TriRep(M.faces,M.vertices);
figure('color','w'), h=trimesh(tr); axis equal
% Write to .stl
stlwrite('PillBoxExample.stl',tr.Triangulation,tr.X)

但在我的代码中我只使用了网格:

figure;
M= surface(-finalLSF); 
hold on;  contour(phi, [0,0], 'r','LineWidth',2);

我尝试了很多时间来转换它但仍然有错误。

代码:

Img = imread('MK2.jpg'); 
Img=double(Img(:,:,1));
%
% ... other code ...
%
figure;
M= mesh(-finalLSF); 
hold on;  contour(phi, [0,0], 'r','LineWidth',2);
str=['Final level set function, ', num2str(iter_outer*iter_inner+iter_refine), ' iterations'];
title(str);
axis on;

2 个答案:

答案 0 :(得分:0)

要使用stlwrite,您需要它的源代码。 Matlab没有这个功能。 https://de.mathworks.com/matlabcentral/fileexchange/20922-stlwrite-filename--varargin-应该这样做。

答案 1 :(得分:0)

您需要download stlwrite from File Exchange,并将其放在Matlab路径中。您可以通过键入exist('stlwrite')来检查它是否在您的路径上。如果这返回2,那你很好。如果它返回0,那么您需要add it to your path

您似乎拥有xyz坐标,在这种情况下您只需拨打

stlwrite('C:\...\filename.stl', x, y, z);

如果您想先使用isosurface,请使用

M = isosurface(x,y,z,F,0);
stlwrite('C:\...\filename.stl', M);