How could I create stl file based on the ellipsoid command?

2 vues (au cours des 30 derniers jours)
Daniel Chou
Daniel Chou le 21 Déc 2020
Modifié(e) : Daniel Chou le 24 Déc 2020
I try several methods to write an stl file based on the ellipsoid geometry.
But I haven't find way to successfully do it.
Following is my code
clear
clc
close all
[x, y, z] = ellipsoid(0,0,0,5.9,3.25,3.25,30);
s=surf(x,y,z)
p=surf2patch(s)
%Extract faces and vertices from structure p
pf=p.faces
pv=p.vertices
tr=triangulation(pf,pv)
stlwrite(tr,'ell.stl')
The message ''Tetrahedron triangulation is not supported.'' appears, I know I could use ''boundaryFacets'' command to solve this problem, but I don't know how to create an alphaShape of ellipsoid.
Could anyone gives me a hint?

Réponse acceptée

Aditya Patil
Aditya Patil le 24 Déc 2020
stlwrite only support triangles.
You can get the alphaShape of ellipsoid using the alphaShape function.
shp = alphaShape(tr.Points)
There is also the freeBoundary function.
[F,P] = freeBoundary(tr)
trNew = triangulation(F,P)
stlwrite(trNew, "freeboundary.stl")
  1 commentaire
Daniel Chou
Daniel Chou le 24 Déc 2020
Modifié(e) : Daniel Chou le 24 Déc 2020
Dear @Aditya Patil
I sincerely appreciate for your assistance.
You save me from this haha.
Before viewing your suggestion, I already used the freeboundary method to create the stl file. However, the mesh quality is a disaster, I'm still trying to figure out how to solve it.
After reading your hint I try to modify my code as follow,
clear
clc
close all
%input the properties of ellipsoid by ''ellipsoid'' function
[x, y, z] = ellipsoid(1,1,1,5.9,3.25,3.25,30,5);
%Convert the ellipsoid to surface via ''surf''
s=surf(x,y,z)
%from surface to patch: generate the faces and vertices
p=surf2patch(x,y,z)
%Extract faces and vertices from structure p
pf=p.faces
pv=p.vertices
tr=triangulation(pf,pv)
sha=alphaShape(tr.Points)
%Using larger sha.Alpha to imprive the quality of mesh
sha.Alpha=5
plot(sha)
%Extract boundary face of alphaShape
[F,P]=boundaryFacets(sha)
%New set of triangulation
Newtr=triangulation(F,P)
%Export stl file
stlwrite(Newtr, "ell_3.stl")
I got an adorable ellipsoid stl file with steady mesh quality, which allows me to do re-meshing work in meshmixer and further model manipulation in solidworks.
Thank you very much again!!
Sincerely yours
Daniel Chou

Connectez-vous pour commenter.

Plus de réponses (0)

Community Treasure Hunt

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

Start Hunting!

Translated by