文件交换
149下载
更新2018年5月4日
查看版本历史记录
增加了输入检查非三角面和固定的汇总显示打印正确的面计数
纠正面部计数印刷输出错误。添加了彩色面孔的例子。
方便的嵌入式Kevin的Mesh2tri版本。
添加了FaceColor实现
巨大的速度改善由奥利弗·伍德福德提供。写入时间的减少与文件大小成比例。
允许更多的常规输入类型,并添加了要写入STL文件的更多功能的功能。
向量化的法向计算和流线型的fprint/fwrite调用。提高75%的书写速度。
查看许可证
**奥利弗·伍德福德的大力提速。建议更新至最新版本**stlwrite(文件,fv)将立体缩影(stl)文件写入文件由fv定义的三角形修补程序(具有字段顶点的结构)和“面孔”)。STLWRITE(文件,面,顶点)分别呈现面和顶点,而不是FV STRUCTstlwrite(文件,x,y,z)从x,y的曲面数据中创建STL文件,和Z。stlwrite将网格化数据三角化为三角化数据表面使用下面指定的三角测量选项。x,y和z可以是具有相同尺寸的二维阵列。如果x和y是vectors长度等于尺寸(z,2)和尺寸(z,1),它们通过通过网格格林格创建网格数据。如果x或y是标量值,它们用于指定栅格点之间的X和Y间距。stlwrite(...,'propertyname',value,'propertyname',value,...)写入使用以下属性值的STL文件:MODE -文件使用'binary'(默认)或'ascii'写入。标题 - 写入STL文件的标题文本(最多80个字符)。三角测量 - 与网格数据一起使用时,三角测量要么:'delaunay' - (默认)X,Y的Delaunay三角测量'f' - 网格四边形的前向斜线分割'B' - 背部斜线分割四分之一'x' - 四边形的跨行请注意,“F”,“B”或“T”三角形现在使用内置FEX条目28327,“mesh2tri”。FACECOLOR -单色(1 × 3)或一色一脸(n × 3)RGB颜色矢量,面部/顶点输入。RGB系列是5位(0:31),存储在Viscam / SolidView格式中(http://en.wikipedia.org/wiki/stl_ (file_format )#color_in_binary_stl.)例1:%从面部/顶点数据写入二进制stltmpvol = false(20,20,20);%空体素卷tmpvol(8:12,8:12,5:15)=1;%打开一些体素fv = isosurface(〜tmpvol,0.5);%制作补丁w。面对“出来”stlwrite('test.stl',fv)%保存到二进制.stl例2:%写入网格数据中的ASCII STL[x,y] =交易(1:40);%创建网格参考z =峰(40);%创建网格高度stlwrite('test.stl',x,y,z,'mode','ascii')例3:%写带有彩色面的二进制STLcvals = fv.vertices(fv.faces(:,1),3);z高度的%颜色。cLims=[最小值(cVals)最大值(cVals)];%变换高度值ncols = 255;CMAP = JET(NCOL);%到8位颜色地图上fcolsdbl = Interp1(Linspace(LINSPACE(LINGS(1),Chems(2),NCols),CMAP,CVALS);fcols8bit = fcolsdbl * 255;%通过8bit(0-255)RGB三联体stlwrite('testcol.stl',fv,'facecholor',fcols8bit)
Sven(2021)。stlwrite - 写ASCII或二进制STL文件(//www.tatmou.com/matlabcentral/fileexchange/20922-stlwrite-wroite-binary-stl-files),matlab中央文件exchange。检索到4月7日,2021年4月7日。
2021年1月14日
20月7日7日
你好,请我需要帮助,如何将我在MATLAB中生成的粗糙表面模型转换为一个.stl文件,使其与CST兼容。我试图使用这个代码,但我似乎没有达到正确的转换。请恳求我。谢谢
2020年12月30日
有人可以告诉我我该怎么办?它给我错误,说不能写文件。
无法写入test.stl
我正在使用简单的一个只是为了测试:[x,y] =交易(1:40);%创建网格参考z =峰(40);%创建网格高度surf2stl('test.stl',x,y,z)
2020年12月4日
2020年9月15日
6月2020
我一直在尝试使用此代码而不会成功。我可以使用MATLAB命令Trisurf和Surf生成3D图。我已经绘制了纬度,经度坐标,以及我使用MeshGrid生成的基于距离的网格。我的一些数据包含NaN,因为表面不是矩形区域。我尝试删除这些点,以及将它们全部设置为略低于我最低的真正高度的地板。
我没有通过任何这些数据集成功。STLWRITE(以及来自其他MATLAB中央常规SURF2STL和SURF2SOLID)的结果是平面,位于我不理解的Z坐标系上。有人可以帮助想法吗?提前致谢。
2020年2月8日
嗨Sven,我用了这个功能,它完美地工作。是否有一种方法来修改代码,使得用户给出的最大面部数量?谢谢你。
2020年1月22日
2019年12月20日
你好伟大的工作,谢谢。一件事我观察到我不能在一个文件中产生多于一个表面(例如:球形)。那我该怎么做?顺致敬意,
2019年11月27日
伟大的工作,完美的工作。当我试图出口球体时,我注意到了一件事。在两个或多个顶点均落在的极点上,不能计算平面法线(由于零长度的Vektor的标准化)。这可以在其他程序中产生错误。我加入了“方面=突起”(:,:,〜挤压(任何(任何(朝南)))));“在创建的方面之后。这忽略了零区的所有方面。
2019年10月6日
非常酷!谢谢!
2019年10月3日
我的数据是医学图像数据。例如,CT图像中存在像素间隔和厚度。数学上,像素间隔意味着每个二维像素的中心之间的物理距离。有人知道如何在此代码中设置像素间隔和厚度吗?
2019年9月27日
它始终只写三个面,甚至是例子。
2019年7月31日
伟大的工作,谢谢分享!然而,当使用二进制格式时,我需要在单个文件中编写许多小实体(单独的卷),我已经尝试过多次修改代码,但都没有成功。拜托,有人可以帮忙吗?如何在单个STL文件中为二进制格式添加多个单独的实体?先感谢您!
2019年7月4日
2019年4月16日
通过(名称,元素矩阵3x3,xyz nodescordinates)正常工作
2019年3月31日
嗨有人帮助 - 我试图使用此功能创建多维数据集的STL文件。像12个三角形的补丁工作一样,图形窗口出现了很好,并且STL函数工作正常,直到我在查看器中查看STL文件,我可以看到的只是一条直线而不是立方体。这些是我的V和F值和代码,我正在使用:
v2 = [0 0 0;2 0 0;0 2 0;2 2 0;0 0 2;2 0 2;0 2 2;2 2 2];
ftri =
[1 2 4;1 4 3;1 2 6;1 6 5;5 6 8;5 8 7;3 4 8;3 8 7;2 4 8;2 8 6;1 3 7;1 7 5;]图1)cube = patch('faces',ftri,'顶点',v1,'facealpha',1,'facecholor','green');轴相等
stlwrite('cube',ftri,v1)
2019年2月1日
2019年1月29日
2018年12月12日
2018年11月29日
2018年10月4日
如何使用stlwrite为具有指定节点坐标的图表生成.stl文件,以及不同的更高重量?
2018年9月29日
我的经验是,这并不像Bill McDonald的那样旧的Surf2stl那么强大。
2018年9月14日
2018年9月9日
嗨Sven,
这个stlwrite模块非常棒,它在生成.stl文件方面帮助很大。现在我成功地使用patch命令在Matlab中创建了一个彩色的3D模型。然而,当我使用stlwrite导出它时,根本就没有颜色。我尝试使用stlwrite('filename.stl',fv,'facecholor',[0 0 1]);但是没有颜色可以输出,当我使用Microsoft 3DBuilder查看它时,该文件仍然无色。我做错了什么,或者语法不正确吗?请帮忙。谢谢,林诺
2018年9月5日
嗨,Sven.如何将从2D堆叠掩码生成的3D卷转换为.stl
2018年8月1日
2018年7月27日
谢谢你的分享。一个问题如何在x = 0处在yz平面中创建一个表面?错误delanunay三角测量 - 积分可能是conlinear?
2018年7月16日
嗨,Sven,谢谢你的共享。但我仍然有问题。因为我的模型非常锯齿。是否有可能为我的STL模型做平滑?
2018年7月10日
@Alejandro:有两个问题:(1)除非您是*函数,否则您不使用关键字“函数”。在这里,您只需使用该功能。(2)Z的大小应为“Z = =(6000,3000);”匹配X和Y的尺寸。
@ rff123:你写道,你有“所有点的坐标,n×4,命名为a”。这只是一个错字吗?3D点将是NX3。啊......我想我看到你的意思 - 第一列是一个索引。但是,你说你的*四面体*数据是mx4?
STL文件采用三角形面(MX3),而不是三维金字塔状形状。所以基本上,您需要识别您的面孔和顶点。顶点很容易(注意:您的数据未包装,以便您的x,y,z变量对我没有意义):
顶点= a(:,2:4);
接下来,您需要面部。也许你的意思是你的变量b定义*四边形*?如果是这样,请执行以下操作:
面孔=三角形窗口(b)
stlwrite('test.stl',faces,顶点)
2018年6月8日
你好,
我尝试对网格数据使用stlwrite函数stlwrite(FILE,X,Y,Z),并且我遵循的用法与代码描述中提供的示例2相同。但是,我得到了以下可能很愚蠢的错误:error:File:stlwrite.m行:1列:34意外的MATLAB表达。当我把鼠标放到第34行(mode的开头),它会产生以下消息:“在”模式“解析错误:使用可能是无效的MATLAB语法''。
请在此处查找代码提取物:
filename ='firsttest.stl'z = =(30006000);y =(1:6000);X = (1:3000);函数stlwrite(filename,x,y,z,'mode','ascii');
我已经通过转移了传输,使用双引号删除“Mode”参数来审议。谢谢Alejandro.
2018年5月26日
你好,我有一些问题。现在我有了所有点的坐标,n×4,命名为A,数据的第一列是这些点的序列号。此外,我有所有四面体的四点序列号,m×4,命名为B的数据,我尝试了许多方法来获得正确的.stl文件,但它不起作用。①x=A(:,2);y=A(:,3);z=A(:,4);stlwrite('test.stl',x,y,z);结果是“重复的数据点已经被检测到并被移除……”②然后,我遵循JD的评论(2013年4月11日),使用Mesh2Tri生成F和V,[f,v] = mesh2tri(x,y,z,'f');但是f = [],它是空的。③从tetra_data(m×4)获得TRI_DATA(P×3),例如。[1 2 3 4] = [1 2 3; 1 2 4; 1 3 4; 2 3 4]named C, and, stlwrite((‘test.stl’,C,A), then get the .stl file, but I found the normal vector of these facets are disunity, when I used the other software(DEFORM) to open this file ,I get the warning:It seems that the geometry contains open surfaces,.....你能帮我吗?我做错什么了吗?非常感谢你的工作和时间。
2018年5月25日
2018年5月3日
伟大的东西,正是我需要的,适用于Delauny函数的输出,以生产导入CloudCompare / Polyworks Metrology软件的文件。
2018年5月2日
@Duc,你的问题是你在四边形(4点)中定义了你的脸,而STL是三角格式(3点)。有一个包叫geom3d由David Legland,它包含一个简单的triangulateFaces函数。你可以传递你的F,变量如下:
ftri =三角形窗口(f)stlwrite('yourFile.stl',Ftri,V)
当偶尔出现这个问题时,我会明确检查。
你好。我正在尝试导出Tesselated鼠标Atlas的STL文件,以便我可以在COMSOL上工作。ATLAS文件中的面部是NX4矩阵,顶点是NX3矩阵。这导致您的重塑失败。请指教。
2018年4月30日
@Sheldon,没有部分stlwrite会做你描述的。也许你通过四边形数据而不是三角形数据?(如果您有顶点和面部,那么您的矩阵矩阵的尺寸是多少?)也许你有网格数据,你选择'x'三角测量?没有更多的信息,很难告诉 - 例如,我也不确定你的意思是通过将你的点转换给笛卡尔坐标(不是他们已经?)
2018年4月25日
我正在使用stlwrite函数导出三角模型的问题。每当我导出文件时,它会将我的等标三角形更改为右三角形。我试图将点转换为笛卡尔坐标,但它仍然不起作用。在STLWRITE功能中有什么东西可以改变,因为不发生这种情况?
2018年3月19日
@steven:在那个情况下,我认为你应该从第一个stlwrite示例开始,看看它是否适合您。如果示例是有效,但您的内容没有,那么故障排除会识别示例和数据之间的不同情况。请注意,在示例中,命令:“图形,修补程序('faces',fv.faces,'顶点',fv.verces,'facecholor','g')”用于制作一个漂亮的3D数字。对你起作用吗?也许你的面孔和顶点不是n-by-3的双打?
2018年3月15日
我只是在IsoSurface创建的FV变量中致电。
2018年3月14日
@Steven Lewis:这些大小的数据似乎是合理的 - 我不会指望它在内存问题上失败。两个潜在问题:(1)您是否以正确的顺序与面部/顶点呼叫?如果单独传递,签名是STLWRITE(文件,面,顶点)。如果仍然遇到麻烦,您可以通过电子邮件向我发送示例数据(Gmail的Sven Dot Holcombe)。
每次尝试保存我的FV文件时,我都会收到错误,说索引超过矩阵维度。然后在stlwrite中出错(第133行);C0 = BITER(Bitshift(Bitand(2 ^ 6-1,FaceColor(:1),10),C0)。我的Fv变量包含78576 x 3面,26192 x 3,两者都是双精度。我没有这些FV变量的纹理或颜色组件。有什么建议么?
2017年12月27日
你好,无论如何要在3D方向上偏移STL文件。我知道Surf2solid将薄表面变为固体部分。但我正在寻找的是抵消STL身体。例如,正偏移因子使体更大并返回新顶点,负偏移因子使身体变小并且还返回新顶点。每个BergStröm的IGES工具箱中的功能(TransformStl.M)只转换STL。但是,除了STL而不是IGES文件格式之外,我正在寻找的是(offstiges.m)。
有什么功能可以做到这一点吗?太感谢了
2017年10月17日
伟大的工具!我唯一会添加到描述的情况是在使用ASCII格式(调整权限)时如何追加多个实体,以及使用二进制格式时如何在单个文件中编写多个单独的卷(即使在将数据传递到之前完成stlwrite)。
2017年10月9日
一个建议:要处理可能的“不平衡”输入面部/顶点集,请将此代码放在近线85中:
facefoo = faces';facefoo = facefoo(1 :( end - mod(numel(facefoo),9)))));刻面=重塑(刻面(:,面部),3,3,[]);
2017年9月21日
@greg fivash.您的问题是,您已经定义了四边形(4点)的面,而STL是一种三角形格式(3点)。David Legland提供了一个名为geom3d的包,其中包含一个简单的三角形面函数。您可以按如下方式传递F变量:
非常感谢,工作完美的东西从Matlab到OpenSCAD,然后变成现实!
2017年9月15日
@Phuong tran:您是否检查过我的surf2solid文件交换条目?它可能只是您所寻求的,因为它允许您抵消表面以将无限薄的表面变为封闭的容积。
我看到很多人从这个脚本中得到了积极的结果,但我遇到了一些非常基本的问题。我使用面和顶点定义了一个多维数据集,它可以使用patch()正确地显示,但它不能导出为.stl文件的同一个多维数据集。当文件导出时,似乎对顶点之间的面连接有一些误解。有人知道我的情况会出什么问题吗?
我的立方体:v = [0 0 0;1 0 0;0 1 0;1 1 0;0 0 1;1 0 1;0 1 1;1 1 1];
f = [1 2 4 3;1 2 6 5;5 6 8 7;3 4 8 7;2 4 8 6;1 3 7 5;
2017年9月14日
谢谢Sven,我只是想知道我们是否可以在转换为STL格式之前或之后加厚表面。谢谢
2017年8月31日
2017年7月15日
在第81行中重写的第三个参数应该是尺寸(面,2)而不是3,以便为每个补丁表面进行可变数量的面。除此之外,良好的工作。
2017年5月17日
对我来说是诀窍!
只有两个提示我为初学者(如我)有用,如果添加到文档,我认为会有所帮助:
- 您可以从VolumeTric 3D阵列创建De Face-Vertices结构,例如,使用您的数据:fv = isosurface(x,y,z,v);其中X、Y、Z是具有体积阵列尺寸的向量。
-字符串参数“FILE”或“filename”(无论您如何称呼它)必须包含“.stl”扩展名,否则您将创建一个不是该格式的文件。花了五分钟弄明白了lol,以为它会被脚本添加进去。
2017年4月14日
没关系,我找到了翻转正常的简单解决方案。说你用过:stlwrite([名称,'。stl'],con + 1,pts,'mode','ascii');%将镜像信息导出到STL格式
简单地:反对=[反对(:1)反对(:,3)反对(:,2)];
它会绕着每个三角形向另一个方向移动,为你翻转法线。
是否有一种方便的方式将正常作为选项翻转。有时我将构建网格的对称区域,将(x,y,z)转换为(x,-y,z),内部将成为外部。
2017年3月14日
2017年2月22日
2017年2月7日
这对我来说非常好!是否有一种简单的方法来致密模型?形状应该是相同的,但具有更多的三角形/顶点/面。
2017年1月30日
2017年1月6日
我已经能够调整permissions命令以用于附加ascii类型的stl文件。但这似乎不适用于二进制格式的文件。请告知。
2016年12月18日
谢谢!适用于ADAM A的“STL至ACIS SAT转换”,以便为许多CAD程序进行实体转换。
2016年10月10日
2016年9月28日
@Daschulka,是的,一个STL文件有三角形和面,所以你需要把你的点云变成一个网格来制作一个STL文件。解决方法总是取决于你的特定问题-一些简单的形状可以使用Delaunay三角剖分,但它将全部取决于你的点云和你想要的网格。
你好呀,
我一直在寻找一个解决方案来接收使用STLWRITE后接收开放表面,就像亚历山德拉一样,但无法在评论中找到解决方案。
解决方法是什么?我的输入数据是一个点云...需要首先变成网格吗?如果是这种情况,您使用哪种功能来解决问题?
非常感谢您的帮助!
2016年9月13日
只是我需要从Matlab曲面3D打印。至少如果对象具有明确定义的内部。现在找到一个好的救助......仍在等待那个。
2016年9月6日
2016年8月2日
伟大的工作,非常有用!
2016年7月19日
2016年7月12日
2016年6月9日
2016年6月2日
我能够解决这个问题。您的代码在一起工作美妙。我怀疑我本可以以任何其他方式做得更好。
谢谢!
@sven.
我已经为我的2D映像工作了代码 - 使其成为冲浪(),然后将完全导出到SolidWorks。我想要将厚度或全卷添加到Surf2Solid脚本中。
有没有办法拍摄Surf2Solid'块'并将其传送到与stlwrite()的。
谢谢您的帮助!此代码很棒。
2016年5月13日
2016年4月27日
谢谢您的帮助!但它仍然在坚实的基础上创造了类似的东西,就像一张纸一样。
2016年4月19日
@Thalles.
很难排除故障而不能够重现错误,但这是拍摄2D图像的方法,并生成其Surf()结果的STL。它是否为您提供了如何解决问题的线索?
我= imread('rice.png');I2 = CONV2(DOUBLE(I),ONE(5)/ 5,'有效');%让它变得有点顺畅数字Sh =冲浪(I2);%get xdata和ydata作为网格(不是矢量)[XD,码]= meshgrid (sH.XData sH.YData);stlwrite('testsurf.stl',xd,yd,sh.zdata)
2016年4月14日
嗨Sven,谢谢你真正的工作!
我和我的stl有一些问题,你可以帮帮我吗?
我有一个图像,我正在读它并转换为双重图像。然后我选择了3个(RGB)片之一矩阵以用函数表面()冲浪,使我提供propertys xdata,ydata和ydata在您的writestl()中使用,但它在坚实的基础上创建了类似的东西,如表格,当我在cubepro软件上打开这个stl时,打印,我收到了一个坏文件消息。
你能帮助我吗?难道我做错了什么?
谢谢你。
2016年3月14日
我创建一个结构并解决,谢谢你的代码。
你好,Sven。我有一个顶点p矩阵:8x3和三角形T矩阵:12x3我使用了stlwrite('test.stl',t,p),但我收到了:试图访问FaceColor(:,1);索引超出范围,因为尺寸(faceColor)= [0,0]。stlwrite中的错误(第133行)C0 = BITER(Bitshift(Bitand(2 ^ 6-1,FaceColor(:1)),10),C0);我很困惑如何使用你的命令。谢谢你
2016年2月8日
2016年1月12日
你好,Sven。在威尔的评论(2015年3月29日)之后,如果我以ASCII模式书写,我也会收到一条明显不正确的信息:我始终得到“写入的4个方面”。当我以二进制模式写入时,我得到了正确的值:例如149194个面或205532个面,通过检查作为输入提供的面数进行验证。除了这个小故障,ASCII文件到目前为止似乎还不错。谢谢你的贡献。-div.
2016年1月8日
2015年11月28日
嗨,本杰明,我怀疑你的问题只是你在使用哪个阅读器。如果您的软件不能解释所选择的颜色格式(参见帮助内容),那么它看起来就像什么都没有改变。
参见例如2013年9月左右以下对此文件的评论 - 其他软件(Meshlab和Paraview)不会解释此版本的颜色,而其他软件(Viscam)则。
2015年11月25日
您使用FaceColor提供的示例似乎并不起。添加面部颜色会产生与无颜色相同的输出。
2015年11月10日
伟大的工作,帮助了很多
2015年11月9日
你好,Tyron,很抱歉回复得这么慢。我认为大多数的实体网格将在网格的下游完成——我希望Abacus本身有一个“四网格”功能,可以用实体元素填充一个封闭的STL体积。
2015年7月11日
嗨Sven,谢谢你这项工作!我已经组合了几个修补程序来形成封闭的3D对象,并使用您的功能导出到* .stl。我如何“巩固”这一点,以便它可以在ABAQUS中啮合?
2015年6月4日
简单而漂亮。
2015年5月4日
你能教我如何使用它吗?我是如此愚蠢。
2015年4月21日
@Nithish:请以一种清楚地描述你有什么问题的方式制定你的问题。
@matthias:
最重要的步骤:
1.将数据置于两个变量:“顶点”(XYZ坐标的NX3阵列。如果您有10个坐标,它将是一个10x3数组)面部的“Faces”(FACES)为您的面部的整数号码(1,2,3,4等)。如果点5,6和3形成第一三角形,则该变量的第一行将是[5 63; ...])
2.运行命令:图,修补程序('面,面,'顶点',顶点,'facecholor','g')
如果您无法获取这两个步骤来工作,那么STLWRITE也不会为您工作,因此尝试尝试和锻炼为什么无法编写STL文件,这将不会有帮助。
@Gaétan.
这是我将如何为stlwrite(或patch()命令)准备一个气缸。请注意,我正在使用David Legland的优秀Geom3D文件Exchange条目中的Surftomesh()和三角形窗口()函数:
[x,y,z] =气缸(1,10);[顶点,faces4] = surftomesh(x,y,z,'xperiodic',true);Faces3 =三角形窗口(Faces4);stlwrite('file.stl',faces3,顶点)
图,补丁(“面孔”,Faces3,'顶点',顶点,'FaceColor','G')
你好Sven,
谢谢你的代码。但是我不明白的是如何通过我的数据来将数组存放到STL中?
2015年4月16日
你好,先,谢谢你的贡献!我的出口有点问题。由于气缸状形状,我的图中的大量点具有相同的X和Y坐标(但不同的Z)。因此,使用坐标参数的导出不会给我一个适当的STL文件。我目前正在寻找一种方法来创建一个三角形的我的几何形状,因为你在程序中提到它,但我真的不知道如何。你可能知道如何..?再次感谢你的时间和你的工作。
我将我的文本数据存储到数组中。但我不明白如何将我的数组作为输入。可以请有人帮助我
2015年4月8日
谢谢你的回答。我试图分别使用Patch的数据显示Matlab的Surv命令,但可悲的是我没有得到任何结果。
但是,另有可能通过使用在三角测量之后使用命令凸壳的ConnectItivityLish中计算的三角形的坐标来创建stlfile?
2015年3月31日
@matthias:Read_vtk的帮助说:%[顶点,face] = read_vtk(文件名,冗长);%%“顶点”是指定顶点位置的“nb.vert x 3”数组。%'face'是一个'nb.face x 3'array,指定网格的连接。
Stlwrite的帮助说:%stlwrite(文件、面、顶点)分别获取面和顶点
那么为什么不仅仅是以下?
[顶点,面部] = read_vtk('file.vtk');stlwrite('file.stl',faces,顶点)
这是直接的。我不明白你想做的是mx,我的mx。
这是一个提示:如果您无法将面孔/顶点直接发送到Matlab的patch()命令(或您的x,y,z数据直接发送给matlab的surf()命令)并在屏幕上获取您想要的内容,然后使用stlwrite()不会给你想要的东西。
@ Sven.
[顶点,面部] = read_vtk('file.vtk');mx(1:长度(顶点),1)=顶点(1,1:长度(顶点));我的(1:长度(顶点),1)=顶点(2,1:长度(顶点));MZ(1:长度(顶点),1)=顶点(3,1:长度(顶点));stlwrite('file.stl',mx,my,mz)
基本上我正在发送我的物体的顶点信息,这是一个简单的圆柱体。但是生成的对象作为STL-file不再是关闭卷。
这是结果http://postimg.org/image/ufpjdddrb/
2015年3月30日
@will:啊,是的,打印错误也很讨厌我:)我已经修复了我的机器,但FEX条目现在也更新了。
@matthias:您需要提供更多详细信息,例如在调用stlwrite时运行的命令,您发送给stlwrite的变量以及出现问题(错误消息?)
2015年3月29日
谢谢你的帮助。当我运行它时,我总是在它结束时收到消息“Writed1facet”。也许我不理解这个术语,但我希望刻面的数量等于正在编写的三角形的数量,我认为这是刻面矩阵的第二维度(尺寸(小平面,2))
2015年3月25日
你好,我在创建stlfile时遇到了麻烦,我正在使用read_vtk从vtk文件中提取顶点和面,但我不知道如何正确地提交数据到stlwrite函数?有什么建议么?每个帮助TRX都是Gratfull
2015年3月11日
@Ye:我需要更多信息来帮助你。也许发送您的数据和命令即可调用stlwrite。
@Rebecca:没有像STLWRITE本身发出的警告。我相信您可能会指定您希望在这不是您提供的实际数据风格的情况下xy数据的“三角测量”。
它听起来您拥有完整的3D数据而不是网格XY数据,因此基于其XY坐标的三角化它不会有意义,因为您在同一XY坐标上彼此上方彼此上方的多个*点。因此,您看到的警告是由“delaunay”函数(三角剖分)吐出来。
也许你有四边形而不是三角形,所以你试图拆分它们?如果是这样,请描述(或发送)您拥有的数据,并且很容易有一种很好的方法。
你好,我正在将气瓶写入STL文件,但STLWRITE一直消除重复数据点,这导致简单的圆圈而不是3D图像。我怎么能绕过这个?
“警告:已检测到并删除重复的数据点。三角测量不会引用某些点指数。“
谢谢。
2015年3月8日
我使用这个得到一个stl文件,但当我使用solidworks打开它,这成为一个计划,而不是我在matlab中polted的3D图片,我不知道为什么,如果有人可以帮助我?
2015年1月5日
非常简单,干净,快速实现!
2014年9月26日
做得好!和二进制,我也喜欢它。
作为小调,能够指定法线也很酷(这并不是说我自己做不到,而是可以节省一分钟;))
2014年9月1日
2014年8月8日
亲爱的
我想请您详细解释一下如何通过点执行stl转换。我有22050点(xyz)属于河床。我的任务是生成一个STL文件。我应该以什么形式取点?当我运行编译stlwrite?。他们能给我台阶吗?拜托,你能帮我。
2014年7月21日
谢谢Sven,
求伟大
干杯
2014年5月14日
@URLEA:是的,您可以在(或之后)生成面部/顶点时执行此操作。
如果你使用isosurface()函数从逻辑生成面/顶点,请记住isosurface()将*总是*生成从低到高的面。在这种情况下,当您调用isosurface时,您可以将您的逻辑掩码反转(使其外部为1,内部为0)。
要在脸上触发顶点后,请使用以下内容:
fv.faces = fv.faces(:,[2 1 3])
我正在尝试使用您在代码中提供的示例来从Face / Vertex数据文件中编写二进制STL。然后,我导入魔法中生成的文件(实现)并使用自动工具生成身体的诊断。它说所有面都被倒置(正常指向内部)。有没有办法解决Matlab代码内的方法?
2014年3月26日
非常感谢!
2014年2月23日
太棒了!
2014年2月20日
惊人的!谢谢!
2013年10月5日
嗨朋友们,
干得好。我用它来制作一个复杂的几何图形,它来自于图像。我创建了.stl文件,但许多曲面是打开的,没有连接。我想要有体积的闭合曲面。
感谢您的评论和帮助。
2013年9月25日
@Sven:你的两个把戏我都玩过。我发现问题不在于你的代码;这是我用来查看网格的软件。我尝试了Meshlab和ParaView。它们都不适用于彩色表面。也许它们适用于另一种解释。VisCam在这方面效果很好。谢谢!
@Ben:这是一个使用VisiCam颜色规范的示例:
tmpvol = true(20,20,20);内部手段上的%零TMPVOL(8:12,8:12,5:15)= 0;%isosurface使三角形成为三角形fv = isosurface(tmpvol,0.5);物体中的%点FaceColval = fv.vertices(fv.faces(:,1),3);%颜色z高度crane = [min(faceecolval)max(facecholval)];ncols = 255;Colmap = Jet(NCols);FaceColsdBl = Interp1(Linspace(Crange(1),Crange(2),NCols),Colmap,FaceColval);faceCols8bit=faceColsDbl*255;stlwrite('testcol.stl',fv,'facecholor',faceCols8bit)图,补丁(FV,'Facevertexcdata',FaceColsDBL,'FaceColor','Flat')
我在这里使用了免费观看者http://viscam-view.software.informer.com/download/而且颜色很好地显示出来。
您将注意到上面的代码中的两个技巧。1.确保您的脸部正常指向向外。Viscam仅显示外侧,带有颜色和内侧。2.确保提供8位缩放颜色(即,在0到255之间而不是Matlab的0和1之间)。
那对你有用吗?我可能会将其作为一个例子包含在帮助中,只要它对您仍然有效。请注意,STL文件中有两种相互竞争的颜色“解释”。这只是其中之一,所以我希望您的软件能够很好地解释它。
任何人都可以使用每面色颜色编写STL文件的示例吗?我尝试了几次,但没有成功。
2013年8月16日
伟大的工作!
2013年6月27日
非常好的代码和惊人的快速!感谢分享!
2013年4月11日
@sven:谢谢。它像魅力一样工作!当我尝试在stlwrite中使用三角测量时,它不起作用,但是当我使用使用的mesh2tri生成面孔和顶点时,然后使用它们的stlwrite,它运作!再次感谢这么快的回复!
2013年4月10日
@JD:问题是您的输入是“网格数据”而不是“三角形数据”,因为X,Y,Z中的每一个是20×20矩阵,而不是一组顶点和三角形。这可以通过stlwrite处理(请参阅“三角测量”参数的帮助文件),但您需要了解网格数据的默认“三角测量”是X-Y 2D数据的DELAUNAYTRI。在这种感觉中,你已经重复了x-y对(一个在球体顶部,底部的一个)。你得到的警告来自“delaunay”,而不是来自“stlwrite”。您可以通过指定您希望的网格数据三角化的方式来克服这一点:
stlwrite('test1.stl',x,y,z,'mode','ascii','trigumation','f')
注意,您需要从“mesh2tri”http://www.mathwands.com/matlabcentral/fileexchange/28327.为此工作。我会询问凯文允许在STLWRITE(这是一个小但非常方便的函数)中包含它的权限。
你好!我面临着亚历山大的问题。我试图为球体进行Gerate曲面网格,然后转换为.stl格式。当我试图在Meshlab中查看它时,球体的一半消失了。我确实得到了关于重复数据点的翘曲。
警告:已检测到重复的数据点并删除。三角测量不会引用某些点指数。
我使用的命令如下:[x,y,z] =球体(20);stlwrite('test1.stl',x,y,z,'mode','ascii');
任何帮助都将受到高度赞赏。谢谢。
2012年10月8日
@alexandra,我将在使用stlwrite之前,Matlab中可能在Matlab中打赌。你能给我发一个通过开放的数据的一个例子吗?
2012年10月6日
Hej,我有问题是我使用stlwrite后获得开放的曲面。有人有一个想法如何做到这一点?
2012年7月2日
有谁知道如何显示我使用的每张面孔的不同颜色?我尝试了meshlab和3d max
2012年6月20日
感谢您的帮助Sven,事实证明了在Gambit中的进口设置中的问题。由于这些文件中的几何形状更复杂,因此需要有点不同。再次,精彩的计划!!
2012年6月19日
哈,上次留言来自我 - 从工作中的另一台计算机登录。
@Nick和Adam,我不确定与您的文件一起玩的问题。随意使用您的积分/面部数据来电发送电子邮件给.MAT文件*和*您使用的2或3行来创建Matlab中此数据的工作(!)图(请注意,我只需有时间查看它如果该图已清洁创建)。
伟大的计划。它为我的2个文件的2个文件很好,但另一个没有输出可读网格(我试图在SolidWorks和Gambit中打开它),另一个没有将网格连接到三角形,只有Gambit的一些点。两个网格都使用TrimeSh函数很好。有任何想法吗?
2012年6月2日
@sven你很清楚,谢谢。我问一个其他问题,更好地了解。
我的一组P X-Y-Z描述了一个3D表面,即我可以在Matlab(使用Plot3或Trisurf),如您所说的那样。
要编写stl,我可以直接使用函数"stlwrite"?这是我的三维坐标的三角剖分吗?
在那种情况下,我必须给出哪些选项,以使其正常工作?因为我尝试了很多方法,但是当我给出“三角测量”时,它想要其他选项和值,我不知道要投入什么。
再次感谢!
2012年6月1日
@Nick:如果您从一组P X-Y-Z点创建Delaunay三角测量:
dt = DelaunayTri (x, y, z)
结果(dt.arriangulation)不会是“三角形表面网”。您会注意到结果是N-by-4矩阵。这意味着三角测量中的每一行代表四面体 - 一个小*固体*,其中4个三角形面 - 不是表面三角形。
STL格式描述了表面三角形而不是Tetra固体。也许你想要你积分的凸孔?(即,只有你所有的Tetra固体的*最外面的面孔*)请注意,如果您的简单的实体实际上是凸起的。
这是我的建议:在尝试写入STL文件之前绘制到屏幕。如果您可以先在Matlab上工作的3D表面图(使用补丁,Trisurf等),*然后*您将能够在没有问题的情况下写入STL。
嗨,我有一组简单的实体的坐标,我必须创建有限的卷来工作。所以我制作了一个3D delaunay三角测量,我现在拥有一个n×4矩阵,具有由此产生的tetrahedron点。现在,我需要创建一个.stl文件来导出这项工作。我该怎么做呢?是否有可能?因为在选项中,只有2D中的三角测量的声音。非常感谢。
2012年5月4日
2012年3月11日
2012年2月3日
@ava:很高兴听到这个问题(节点指数)得到了解决
2012年1月15日
@sven:我正在使用stl查看器,也是最多的2.o来看看结果文件,但是所有面部都断开连接。
2012年1月14日
这是我第一次遇到这样的问题。当您在stlwrite帮助中运行示例时,会发生同样的事情吗?如果没有,尝试使用splitFV FEX条目,看看原始的面/顶点是否确实是连接的。如果stlwrite示例本身没有连接,您使用什么软件来读取。stl?
面部未连接到结果STL。,有人有什么主意吗?
谢谢
2012年1月3日
效果很好。对于我的旧Matlab版本,我必须删除一行以使其正常工作:Narginchk(2,INF)
2011年11月28日
二进制输出现在非常快!:)
2011年10月13日
佛教者最新的更新使Vectoriened Face正常计算和相邻的FWRITE呼叫结合起来显着改进。希望它很有用。
2010年9月13日
工作正常,但速度非常慢(至少在二进制模式下)。
2009年7月2日
太棒了!这就是我想要的……
2009年4月28日
工作得很好!
2008年8月2日
Cad2matdemo.m的好伴侣。很有用。
灵感来自:surf2stl.那mesh2tri.
受到启发的:BiofilmQ那丽泉那STL工具那脑预测那NIFTI Studio那显微镜图像浏览器(MIB)那显微镜图像浏览器2(MIB2)那stlwrite - 写二进制或ASCII STL文件那粉末曲面那导出体素数据
找到Matlab Central中的宝藏,并发现社区如何帮助您!
在单个可执行文件中使用代码,输出和格式化文本创建脚本。
了解实时编辑
选择一个网站,以便在可用的地方进行翻译的内容,并查看本地活动和优惠。根据您的位置,我们建议您选择:。
您还可以从以下列表中选择一个网站:
选择中国网站(以中文或英文)以获取最佳网站性能。其他MathWorks国家网站未优化您的位置。
联系您当地的办公室