メインコンテンツ

stlwrite

三角形分割から STL ファイルを作成します。

説明

stlwrite(TR,filename) は、三角形分割 TR をバイナリ STL ファイル filename に書き込みます。三角形分割は triangulation オブジェクトまたは 2 次元 delaunayTriangulation オブジェクトのいずれかにすることができます。

stlwrite(TR,filename,fileformat) では、書き込まれるファイルのファイル形式も指定します。fileformat'binary' (既定) または 'text' にすることができます。

stlwrite(___,Name,Value) は、前のいずれかの構文の 1 つ以上の Name,Value ペアの引数を使用して STL ファイルに書き込む追加のオプションを指定します。たとえば、stlwrite(TR,'stlbinary','Attribute',attributes) は、TR 内の各三角形の属性の uint16 ベクトルも書き込みます。

すべて折りたたむ

交差する 2 つのリングを表す三角形分割を作成し、結果を STL ファイルに書き込みます。

1 つ目のリングを表すには、内径が 1 で外径が 5 のトーラス面を定義します。

R = 5;
r = 1;
angle = linspace(0,2*pi,50);
angle(end) = []; % Omit the repeated point for 0 and 2pi
[theta,omega] = meshgrid(angle,angle);

トーラスを表す座標 "x""y""z" を定義します。

X = (R+r.*cos(theta)).*cos(omega);
Y = (R+r.*cos(theta)).*sin(omega);
Z = r.*sin(theta);

アルファ半径が 2 の alphaShape オブジェクトを作成します。

shp = alphaShape(X(:),Y(:),Z(:),2);

alphaShape の境界面から三角形分割を抽出します。この三角形分割は 1 つ目のリングを表します。

[tri,xyz] = shp.boundaryFacets;
t1 = triangulation(tri,xyz);

三角形分割を回転させて 2 つ目のリングを定義します。

t2 = triangulation(tri,xyz*[1 0 0;0 0 1;0 1 0] + [4 0 0]);

2 つの三角形分割を結合します。

Points = [t1.Points;t2.Points];
Connectivity = ...
[t1.ConnectivityList;
    t2.ConnectivityList + size(t1.Points,1)];
trCombined = triangulation(Connectivity,Points);

結果の三角形分割をプロットします。

p = trisurf(trCombined);
p.EdgeAlpha = 0.4;

Figure contains an axes object. The axes object contains an object of type patch.

三角形分割から STL ファイルを作成します。

stlwrite(trCombined,"Rings.stl");

2 次元 triangulation オブジェクトを作成してプロットします。

P = [2.5 8.0;
     6.5 8.0;
     2.5 5.0;
     6.5 5.0;
     1.0 6.5;
     8.0 6.5];
T = [5 3 1;
     3 2 1;
     3 4 2;
     4 6 2];
TR = triangulation(T,P);
triplot(TR)

Figure contains an axes object. The axes object contains an object of type line.

tritext.stl という名前のテキスト ファイルに三角形分割を書き込みます。

stlwrite(TR,"tritext.stl","text")

入力引数

すべて折りたたむ

三角形分割。triangulation オブジェクトまたは 2 次元 delaunayTriangulation オブジェクトとして指定します。

STL ファイル名。文字ベクトルまたはスカラー string として指定します。ファイル名は .stl または .STL の拡張子で終わらなければなりません。

例: 'stltextfile.stl'

ファイル形式。'binary' または 'text' のいずれかとして指定します。

名前と値の引数

すべて折りたたむ

例: stlwrite(TR,'stltext','SolidIndex',solidIDs)

オプションの Name,Value の引数ペアをコンマ区切りで指定します。Name は引数名で、Value は対応する値です。Name は一重引用符 (' ') で囲まなければなりません。Name1,Value1,Name2,Value2 のように、名前と値のペアの引数を任意の順序で指定できます。

バイナリ属性。uint16 ベクトルとして指定します。入力ファイルがバイナリ ファイルの場合、attributes には三角形に関する符号化された情報を含むことができます。その長さは三角形分割の三角形の数と等しくなければなりません。このパラメーターは、入力ファイルがテキスト ファイルの場合はサポートされません。

固定グループ化インデックス。識別番号のベクトルとして指定します。入力ファイルがテキスト ファイルの場合、識別番号によって各三角形を三角形分割内の三角形のグループ化に割り当てなければなりません。ベクトルの長さは、三角形分割の三角形の数と同じでなければなりません。このパラメーターは、入力ファイルがバイナリの場合サポートされません。

拡張機能

すべて展開する

スレッドベースの環境
MATLAB® の backgroundPool を使用してバックグラウンドでコードを実行するか、Parallel Computing Toolbox™ の ThreadPool を使用してコードを高速化します。

バージョン履歴

R2018b で導入