Medial axis extraction from a .STL file

6 views (last 30 days)
Surya Prakash Pandeya
Surya Prakash Pandeya on 6 Apr 2021
Edited: DGM on 22 Jun 2025
How to extract a medial axis of a 3D object usng the .STL file generated from a CAD file? It would be very helpful If anyone can illustrate the process using a .STL file of a simple cylinder. and how to import those generated lines in a solid modelling software?

Answers (1)

darova
darova on 6 Apr 2021
An example
[x,y,z] = cylinder(10);
h = surf(x,y,z);
p = surf2patch(h,'triangle');
p.facecolor = 'red';
stlwrite('test',p)
Then just open .STL file from your software
  1 Comment
DGM
DGM on 21 Jun 2025
Edited: DGM on 22 Jun 2025
The above example uses FEX #20922. Since R2018b, MATLAB also has built-in STL read/write tools.
[x,y,z] = cylinder(10);
h = surf(x,y,z);
p = surf2patch(h,'triangle');
p.facecolor = 'red';
% built-in stlwrite() (post R2018b)
% only accepts triangulation objects
stlwrite(triangulation(p.faces,p.vertices),'test1.stl')
% Sven Holcombe's stlwrite() (part of stlTools) (2008)
% https://www.mathworks.com/matlabcentral/fileexchange/20922
% this tool can accept F,V inputs, but it can also accept other things:
stlWrite('test2.stl',p) % can accept a FV struct (from isosurface(), surf2patch(), etc)
stlWrite('test3.stl',x,y,z) % or it can accept simple gridded data
In this specific case, using the gridded data approach with #20922 doesn't work. It does work for simple height maps where there is only a single boundary curve.

Sign in to comment.

Products


Release

R2020a

Community Treasure Hunt

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

Start Hunting!