Is it possible to 3D print a 3D function plotted in Matlab?

33 visualizaciones (últimos 30 días)
Lewis HC
Lewis HC el 12 de Jul. de 2023
Respondida: Cris LaPierre el 13 de Jul. de 2023
Greetings to all, I am trying to convert a 3D function plotted in Matlab (or convert it to STL file) to be able to print it in 3D, I am using the stlwrite command but it does not work, I attach my code, I appreciate any suggestions:
% Define your 3D function (example: parabolic function)
a = 1;
b = 2;
c = 3;
myFunction = @(x, y) a*x.^2 + b*y.^2 + c;
% Generate a mesh
x = linspace(-10, 10, 100);
y = linspace(-10, 10, 100);
[X, Y] = meshgrid(x, y);
Z = myFunction(X, Y);
% Triangulate the mesh
triangulation = delaunayTriangulation(X(:), Y(:), Z(:));
% Save the triangulated mesh as an STL file
filename = 'my_mesh.stl';
stlwrite(filename, triangulation.ConnectivityList, triangulation.Points);
  2 comentarios
Star Strider
Star Strider el 12 de Jul. de 2023
Please go ito a bit of detail about the problem. What does ‘it does not work’ mean? What is the result of using stlwrite?
Rahul
Rahul el 12 de Jul. de 2023
Please make sure that the stlwrite function is correctly downloaded and it's path has been set correctly.

Iniciar sesión para comentar.

Respuestas (3)

Niranjan Sundararajan
Niranjan Sundararajan el 12 de Jul. de 2023
Not an official implementation of stlwrite but it works. Paste the function in your current working directory and rename it stlwrite. Then, you can call it by using:
stlwrite(filename, X, Y, Z);
It will work.

Cris LaPierre
Cris LaPierre el 12 de Jul. de 2023
Editada: Cris LaPierre el 12 de Jul. de 2023
Your syntax for stlwrite is not correct. It should be stlwrite(TR,filename)
However, the input triangulation must be a triangulation object or 2-D delaunayTriangulation object. You are using a 3D delaunay triangulation.
Finally, there is no thickness to your object, which will prevent it from being able to be 3D printed.
  2 comentarios
Niranjan Sundararajan
Niranjan Sundararajan el 13 de Jul. de 2023
stlwrite does not work for 3-D implementation currently in the MATLAB function. And author of this question wants to plot 3-D stl file. Is there some official MATLAB implementation for the same.
Cris LaPierre
Cris LaPierre el 13 de Jul. de 2023
They do not want to plot it. They want to save it to an STL file and 3D print it.

Iniciar sesión para comentar.


Cris LaPierre
Cris LaPierre el 13 de Jul. de 2023
This may be what @Niranjan Sundararajan is referring to. In that thread, the accepted answer suggests using the file exchange stlwrite function to create a 3D stl.
Here is code that works for me:
% Define your 3D function (example: parabolic function)
a = 1;
b = 2;
c = 3;
myFunction = @(x, y) a*x.^2 + b*y.^2 + c;
% Generate a mesh
x = linspace(-10, 10, 5);
y = linspace(-10, 10, 5);
[X, Y] = meshgrid(x, y);
Z = myFunction(X, Y);
% Triangulate the mesh
TR = delaunayTriangulation(X(:),Y(:),Z(:))
TR =
delaunayTriangulation with properties: Points: [25×3 double] ConnectivityList: [58×4 double] Constraints: []
figure
tetramesh(TR)
% Save the triangulated mesh as an STL file
filename = 'my_mesh.stl';
stlwrite(filename,X,Y,Z);

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by