No BSD License  

4.46667

4.5 | 15 ratings Rate this file 200 Downloads (last 30 days) File Size: 4.14 KB File ID: #4512

surf2stl

by

 

20 Feb 2004 (Updated )

Write STL file from surface data.

Editor's Notes:

This file was selected as MATLAB Central Pick of the Week

| Watch this File

File Information
Description

SURF2STL Write STL file from surface data.
    SURF2STL('filename',X,Y,Z) writes a stereolithography (STL) file
    for a surface with geometry defined by three matrix arguments, X, Y
    and Z. X, Y and Z must be two-dimensional arrays with the same size.
 
    SURF2STL('filename',x,y,Z), uses two vector arguments replacing
    the first two matrix arguments, which must have length(x) = n and
    length(y) = m where [m,n] = size(Z). Note that x corresponds to
    the columns of Z and y corresponds to the rows.
 
    SURF2STL('filename',dx,dy,Z) uses scalar values of dx and dy to
    specify the x and y spacing between grid points.
 
    SURF2STL(...,'mode') may be used to specify the output format.
 
      'binary' - writes in STL binary format (default)
      'ascii' - writes in STL ASCII format
 
    Example:
 
      surf2stl('test.stl',1,1,peaks);
 
    See also SURF.
 
    Author: Bill McDonald, 02-20-04

Acknowledgements

This file inspired Surf2solid and Stlwrite Write Binary Or Ascii Stl File.

MATLAB release MATLAB 6.5 (R13)
Tags for This File   Please login to tag files.
Please login to add a comment or rating.
Comments and Ratings (20)
07 Oct 2014 Arnaud GUILLOU-CAMARGO  
17 Jun 2014 Thomas-Glyn Cox

Does not work anymore

17 Apr 2014 Wesley

Hi, I am trying to get MATLAB to output STL files of chaotic systems (Rossler, Lorenz, Chua). The graphs are made from iterating x, y, and z in a for loop. So I converted the vectors into a matrix using the vec2mat command. It gave me the STL files but the lines have no thickness. How can I resolve this problem? I tried adding space below the graph but it just makes a cylinder shape and doesn't thicken the lines. Please advise.

20 Feb 2014 Adam

L = 40*membrane(1,25);
[rows cols] = size(L);
x = 1:rows;
y = 1:cols;
surf2stl('logo.stl',x,y,L);

And voila! You can 3D print the Matlab logo! (or any other surface for that matter) =)

LEGAL NOTE: This may violate copyrights or trademarks. I am not liable if you choose to do this.

Thanks for the awesome code!

14 May 2013 Algirdas Kluonius

Please help I get a flat gray surface, is it because my x ,y, are vectors and not meshgrid?

14 May 2013 junqua

Really usefull for my research with flow over different surfaces

23 Dec 2012 H├ęctor Corte

Man great submision. I have used it to make some geek gif in my blog.
http://thebrickinthesky.wordpress.com/2012/12/23/my-own-death-star/

23 Dec 2011 zaeazeae

Thanks for this file! You save me a lot of time! Very helpfull

24 Jun 2011 Jay Berger

nice work bill. i'm wondering about how one would go about adding labels to such stl files. such as, adding little spheres in a surface plot at a certain location (say x = 10, y = 10) and add labels such as "x = 10 & y = 10" at that location.

13 May 2011 Samarth Raut

@ Prashanth,
AFAIK, .stl is inherently meant for triangulated geometry representation.
http://en.wikipedia.org/wiki/STL_%28file_format%29

What you can do is to split rectangles into triangles - e.g. rectangle (n1, n2,n3,n4) gives two triangles - (n1,n2,n3) and (n3,n4,n1). Note that the order of n1,n2 etc is such that the normals obtained by cross product of vector, say n1_n2 x n2_n3 points outwards direction and there is consistency in this normal direction among all triagles. i.e. no sudden flips.

hope it helps,
Samarth

02 Nov 2010 Mahalingam Paheerathan  
11 Jul 2010 Prashanth hanmaiahgari

Hi Bill,

What changes to be made in the program to get a stl with rectangular grid instead of triangular grid

Thanks!
Prashanth

18 May 2009 Zoltan

Nice!
But you could speed it up - it counts at large meshes, if you could find a way to avoid the for loop. For calculating the surface normals, you could use "surfnorm".
Thanks!

02 Mar 2009 Bart Ribbens

Great job! Thanx a lot!

28 Jan 2009 Daniel Lopes

Thanks Bill! You made a very useful MATLAB function for geometric modeling purposes.
Woks just fine!

19 Aug 2008 Bin Huang

Awesome! It helps me alot.

25 Jul 2008 Max Lingamfelter

Very nice program. Does anyone know a way to write the STL file while keeping other data intact to describe the color?

maxami13@msn.com

20 Feb 2008 Yoel Shapiro

Very helpfull! I tried for a long time to open a MATLAB generated mesh or vrml in different 3D environments and couldn't. This did the job.

03 Oct 2007 Amanda L

very neat. Used for converting small pieces of scarcely digitized bone surface point clouds to STL surface which can be loaded into Mimics and Amira.

07 Mar 2006 Mike M

Has good nift. Use with gridgen to make mathematical surfaces into stl files for cfd. mmmm

Contact us