Duplicate Faces are Not extracted, why?


#1

Hi everyone,
I have two huge point clouds (each of them almost represents a surface and one of them is almost half the other one regarding the size).

I made quadratic meshes out of them.
Then duplicated the borders and lofted them.
Then made a mesh out of that polysurface.
So I had 3 meshes (top. bottom, around) and joined them to get one mesh.
Attached picture shows what I’m talking about. Please pay attention to the shaded area.
I need a closed-mesh STL file with no Naked-Edges and no Duplicate faces.
However, I got 2249 duplicate faces.
So in Extract Mesh Toolbar I choose Duplicate Faces but it does NOT select anything.

Could you please help me on how to delete these duplicate faces?
Thanks a lot


#2

Hi cpiano,

You can eg. SplitDisjointMesh, then for every piece unweld everything, explode, search and delete duplicates then join everything and weld to get a closed mesh. But without having the mesh to test, this is much guesswork as your image is very small. Can you post your file ?

c.


#3

Thanks Clement. I uploaded two files:
http://www.fileconvoy.com/dfl.php?id=g20ab0b83a1e0b33c999394083c702a63f7af910ba
One of them has only the two layers I talked about.
The other one has all the layers and that’s what I eventually will need.
What I eventually need is a STL closed-mesh with no Naked edges and duplicates from the complete file. I really appreciate any help. Even if you couldn’t figure it out, I appreciate to know what you think about it and if it’s possible at all cause I’m sure you know about Rhino more than me …
Thanks


#4

Hi cpiano,

i see the problem now, in your file with only two meshes inside. In some places, the faces will lead to duplicates because they are identical. From your description it sounds like you need to solidify this to get a volume to be printed as STL. Currently your mesh is 5,5 x 5,5 kilometers large. I´d suggest you scale this down to your printers size first. Then in a second step, make shure you have a gap between both meshes, eg. move one of them up a very tiny bit. To explain this, I´ve just moved the upper one 1 unit (meter) upwards so there is no overlap.

Finally, to connect the 2 meshes with 4 new sides you could built the sides this way:

  • Duplicate the borders for each of your two meshes, you`ll get a closed polyline for each
  • Split each of the polylines at the corners, using the Point option in the Split command
  • Now loft as you did to connect each upper polyline with the lower polyline to get 4 side surfaces
    (i´ve used no rebuild here in the loft dialog and the option to create straight sections)
  • With the resulting 4 loft surfaces selected, use ExtractRenderMesh and you have the 4 sides as mesh
  • Use the Dir command to make shure the mesh normals are pointing outwards on the 4 side meshes
  • Use the Dir command again on your top and bottom mesh to let the normals point outwards.
  • Delete the 4 lofted surfaces
  • Join the 4 mesh sides with the two large mesh faces to get a solid mesh without naked edges
  • scale and export as STL
  • re-import the STL for verification before printing

File: Only-Two-Layers_c.3dm(631.8 KB)

In my example i have not yet scaled everything down. The scale and how much gap size to use between the meshes depends on the maximum print size and minimum resolution your printer has. I´d suggest to make this not too small, otherwise it might get problematic to remove this from the printers table without damaging it.

does this help ?

c.


#5

Clement it was awesome… thank you so much
You know, this is actually a reservoir model. The volume between each two meshes is a layer of soil underground. The STL file will be converted by a plugin and imported to another software that allows mechanical modeling.
I’m trying to avoid increasing the elevation of the duplicate point unless I really have to …
Your post actually inspired me to do something else. So I opened the point cloud files in Notepad++ and deleted the points with the same coordinates in one of them.
This is the picture I got for two layers (not the ones you worked out):


The grid is not how I like it to be. I mark the bad parts with red. So I delete them and import the other mesh on top of it. This mesh has all the X and Ys but the Zs are different and as you can guess this mess has 12 zones (squares) less than the other one.
Then I do all the duplicate process and meshing but the result has naked edges at the boundaries.
Is there any way I can tell the software to attach each point exactly to the point below it?
Even when I use the Mesh from NURBS object and select the two duplicate borders, the mesh it creates, is not how I just described it. I mean not every grid point on the border is attached to the grid point exactly under it. I don’t know how clear I’m explaining it :frowning:
point clouds.zip(74.2 KB)

I attach the two point clouds I used for this. It’s simpler than the two layers you worked out. Then I use MeshPatch and QuadrangulateMesh to get the mesh and the rest of stuff …

I really appreciate all your advices …


#6

Hi cpiano,

i´ve feared something like that :wink: if no gap is allowed, you´re going to create many non-manifold mesh edges, because there would be more than 2 faces per mesh edge where the thickness approaches zero. This is usually a problem with STL files. Additionally it`s not that straight forward to build the 4 side surfaces.

Have you tried unwelding at angle = 0 for every of the two meshes. This way you can still select each as a single object afterwards and Join. Then use _ExtractDuplicateMeshFaces to see where the duplicate faces are, this is the area where zero volume is present. If you weld the joined result again (angle must be high), you might get it done with a lot of handwork to figure out where to build the side surfaces from polylines…it`s too time consuming.

If no gap is allowed, why not make a monster gap between both meshes, with a certain distance, eg. move the upper part up by 1000 units, then proceed as explained above to build 4 side meshes and once everything is done, turn points on and move all the upper points back by -1000 units (including the ones contained in the side meshes). The important question is, can your software deal with such a result or does it complain about the duplicates ?

You´re still have the option to remove mesh faces by area and edge length to get rid of small degenerate faces.

btw. You can get rid of the duplicated points in your pointcloud in Rhino, just explode the cloud into points, find and delete the duplicates using _SelDup and create a new cloud using _PointCloud command.

c.


#7

Many thanks Clement … I’m working on it … we’ll see how successfully it goes …
cheers