主要内容

stlwrite

从三角剖分创建 STL 文件

说明

stlwrite(TR,filename) 将三角剖分 TR 写入二进制 STL 文件 filename。三角剖分可以是 triangulation 对象或二维 delaunayTriangulation 对象。

示例

stlwrite(TR,filename,fileformat) 还指定写入文件的文件格式。fileformat 可以是 'binary'(默认值)或 'text'

示例

stlwrite(___,Name,Value) 支持任何上述语法,且可使用一个或多个 Name,Value 对组参量指定用于写入 STL 文件的其他选项。例如,stlwrite(TR,'stlbinary','Attribute',attributes) 还会为 TR 中的每个三角形写入 uint16 属性向量。

示例

全部折叠

创建一个表示两个相交环的三角剖分,并将结果写入一个 STL 文件。

为表示第一个环,定义一个内半径为 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);

定义坐标 xyz 以表示圆环。

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

创建一个 alpha 半径为 2 的 alphaShape 对象。

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

alphaShape 的边界曲面提取三角剖分。三角剖分表示第一个圆环。

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

通过旋转三角剖分定义第二个圆环。

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

合并这两个三角剖分。

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");

创建并绘制二维 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 对象或二维 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 中推出