I've added a small example in demos/api showing how I would solve this problem:
https://gitlab.onelab.info/gmsh/gmsh/blob/master/demos/api/glue_and_remesh_stl.py Christophe > On 5 Nov 2019, at 16:19, Christophe Geuzaine <[email protected]> wrote: > > Can you send the 2 STLs (I don't see them in the zip)? > > Christophe > >> On 1 Nov 2019, at 11:30, MA Ariza-Gracia <[email protected]> >> wrote: >> >> Dear Dr Geuzaine, Dr Remacle, and the Gmsh community, >> >> first of all, thank you for sharing the software with us! I'm a postdoc >> working (mostly) in optics and I need to reconstruct some free-shape >> surfaces. >> >> My final goal is to create a volume mesh enclosed by two discrete STL >> surfaces (given by a point cloud). The pipeline to do so is as follows: >> 1) Read point clouds and triangulate using Delaunay (scipy.spatial) >> >> 2) Create a 2 discrete surfaces giving the node coordinates and the >> connectivity of the triangles >> >> 3) Create a volume using a surface loop on both surfaces >> >> 4) Mesh the volume >> >> 5) Exporting the mesh to Abaqus/LS-Dyna (whatever software) >> >> >> >> After reading the manual, tutorials and mailing list, the only approached >> that worked was the next one: having a single closed shell joining >> 'manually' the nodes in the boundary. I say manually because I needed to >> implement the substitution of the nodes myself and I couldn't do it using >> Gmsh using removeDuplicate and so on (i.e., I didn't know how to do it). >> After having a single closed shell without duplicate nodes and with the >> normals pointing outwards, I manage to mesh the volume inside the models >> (see manually-merged-thick.msh and manually-merged-thin.msh). >> >> >> >> However, as this is my first approach to Gmsh, this is not efficient and I >> would like to know if: >> >> 1) There is a more efficient procedure to, given two different STLs, mesh >> the volume enclosed by the two of them (as I said, I tried may approaches >> including the ones regarding Earth topology reconstruction in the mail list, >> but I couldn't find a proper solution). >> >> 2) There is a way of both remeshing the STLs AND meshing the volume at the >> same time. In one of the approaches, I parameterized the discrete STL >> surfaces with classifySurfaces and createGeometry (see the Jupyter notebook, >> three first attempts). This allowed me to re-mesh the STL surfaces but, >> unfortunately, I could not mesh the volume after (complaining about 0 >> elements in the volume). As my Delaunay triangulation is quite ugly, this >> would be my preferred option if you could give me a hint on how to proceed. >> >> 3) In the end, I will have two surfaces: one main surface with one inclusion >> inside itself. From what I've read, I know I cannot do Boolean operations >> (as I'm using meshes and discrete elements), so I would appreciate any hint >> on how to proceed in this regard. >> >> >> >> Files enclosed in compressed folder 'inquiry-gmsh.zip': >> >> • try-inquiry.ipynb: Jupyter notebook with the API code to create the >> surfaces >> • {anterior-lenticle-surface.txt, posterior-lenticle-surface.txt}: >> files containing the Cartesian point cloud >> • After running the code, it will generate: >> • thin-1.stl, thin-2.stl: surfaces used to generate the >> convex-convex thin lens >> • surface-1.stl, surface-2.stl: surfaces used to generate the >> concave-convex thick lens >> • shell-thin-lens.msh: attempt to mesh the volume of the thin >> mesh using: i) Two different STL surfaces (gmsh.merge); ii) remove duplicate >> coincident nodes (gmsh.removeDuplicateNodes); and iii) re-parameterizing >> • shell-concave2convex.msh: attempt to do the same as the >> previous one but with the thick lens (-> discard problems with sharp edges >> in the periphery) >> • merged-shell-concave2convex.msh: attempt to mesh the volume >> of the thick lens using: i) One single STL surface with duplicated nodes in >> the boundary; ii) Remove duplicated nodes using removeDuplicateNodes; iii) >> and classify surfaces + creating geometry >> • manually-merged-thick.msh and manually-merged-thin.msh: >> success BUT: i) I needed to remove myself the duplicated nodes; ii) If I try >> to parameterize the surface, I cannot mesh the volume inside but only the >> surfaces. >> >> >> Versions used: >> >> >> - Ubuntu 18.04 >> >> - Gmsh 4.4.1 through the implementation in conda-forge >> >> - Python 3.7 with Anaconda >> >> >> >> Best regards, >> >> >> MA >> >> <inquiry-gmsh.zip>_______________________________________________ >> gmsh mailing list >> [email protected] >> http://onelab.info/mailman/listinfo/gmsh > > — > Prof. Christophe Geuzaine > University of Liege, Electrical Engineering and Computer Science > http://www.montefiore.ulg.ac.be/~geuzaine > > > > > _______________________________________________ > gmsh mailing list > [email protected] > http://onelab.info/mailman/listinfo/gmsh — Prof. Christophe Geuzaine University of Liege, Electrical Engineering and Computer Science http://www.montefiore.ulg.ac.be/~geuzaine _______________________________________________ gmsh mailing list [email protected] http://onelab.info/mailman/listinfo/gmsh
