File Exchange で公開されている関数でよさそうなものがあったのでやってみました。
使うのは以下の2つです。それぞれダウンロードしてください。
- stlwrite - write ASCII or Binary STL files(STLファイルへの出力)
- surf2solid - make a solid volume from a surface for 3D printing(構造体を構築する関数)
以下サンプルコードです。
n = 100; % 曲線の分割数
width = 1; % 奥行
height = 1; % 幅
% ベースとなる曲面を構築
x = linspace(0,2*pi,n); % x座標
y = linspace(0,width,n); % y座標
[X,Y] = meshgrid(x,y);
Z = sin(X); % z座標
% 厚みを加えて構造体とする
% surf2solid(X,Y,Z,'thickness',height); % 可視化用
% F(面情報) V(頂点座標)に書き出し
[F,V] = surf2solid(X,Y,Z,'thickness',-0.1);
% STL ファイルに出力
stlwrite('test.stl',F,V);
% 試しに可視化(以下はPDE Toolboxが必要です)
model = createpde(1);
importGeometry(model,'test.stl');
pdegplot(model,'FaceLabels','on')