主要内容

stlwrite

R2026b

从三角剖分创建 STL 文件

描述

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

示例

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

示例

stlwrite(___,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);

定义坐标 x、y 和 z 以表示圆环。

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;

Two intersecting torus-shaped ring surfaces plotted as a 3D triangulation mesh

基于三角剖分创建一个 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)

2-D triangulation with four triangles connecting six vertices

将三角剖分写入名为 tritext.stl 的文本文件。

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

输入参数

全部折叠

三角剖分,指定为 triangulation 对象或二维 delaunayTriangulation 对象。

STL 文件名,指定为字符向量或标量 string。文件名必须以 .stl 或 .STL 扩展名结尾。

示例: "stltextfile.stl"

文件格式,指定为 "binary" 或 "text"。

名称-值参数

全部折叠

将可选参量对组指定为 Name1=Value1,...,NameN=ValueN,其中 Name 是参量名称,Value 是对应的值。名称-值参量必须出现在其他参量之后,但对各个参量对组的顺序没有要求。

示例: stlwrite(TR,"stltext",SolidIndex=solidIDs)

二进制属性,指定为 uint16 向量。当输入文件是二进制文件时,attributes 可以包含有关三角形的编码信息。其长度必须等于三角剖分中的三角形数量。当输入文件是文本文件时,不支持此参数。

实体分组索引,指定为标识号的向量。当输入文件是文本文件时,标识号必须将每个三角形分配到三角剖分中的一个三角形分组中。向量的长度必须等于三角剖分中的三角形数量。当输入文件是二进制文件时,不支持此参数。

扩展功能

全部展开

基于线程的环境
使用 MATLAB® backgroundPool 在后台运行代码或使用 Parallel Computing Toolbox™ ThreadPool 加快代码运行速度。

版本历史记录

在 R2018b 中推出