Coincident vertex in two separated meshes

Hi everyone,

I am struggling to obtain two separated closed meshes which share a coincident face. To makes this is important to have coincident vertex between both meshes but I am not still capable of doing it.

I am having two problems. First of all, adding feature lines to Trimesh component (@DanielPiker ) does not work well and the geometry is not separated correctly (Probably I am doing something wrong…).

The second problem is that I am not able to cap the mesh mantaining the vertex contourn.

Does anyone know a solution for these problems?

PD: Does anyone know a component to create Tetrahedrons from a surface mesh? I read about Tetra plugin. Have you used it? @AndersDeleuran @DanielPiker @inno @martinsiegrist

Thank you for your answers!

Regards

Meshes.gh (999.4 KB)

I had bookmarked this topic because it looked very explanatory on how to use Triremesh Features:

as far as I have understood (but not had the chance to test it as much as I’d like to) the Features input wants lines/points that already exist in the mesh

so instead of a Polyline I would consider to divide it in single lines, but you can’t just explode the Polyline “as it is” because its components are very fuzzy:

2 Likes

I first merged all faces in your brep and then split it with the plane only to join it again. This results in a close to perfect seam on your intersection plane. I had to pull the vertices which should be on the plane perfectly onto the plane, as split mesh created a lot of small triangles otherwise.

I took the edge of one of the two meshes and remeshed it, using the control polygon of the naked edge curve as features. Then joined the two open meshes with the cap. Both separate of course.

Meshes.gh (1007.4 KB)

1 Like

Inno is right that the feature curves need to exist in the input.
If the input is a Brep, there should be some vertices along a feature curve, and if it is a Brep, there should be a split or seam that matches the feature.
(you don’t need to explode polylines to use them as features though)

The issue here I can see is that where you’ve booleaned away those rail like bits from the base, those patches don’t have a seam where you’re putting the feature curve.

so the mesh generated there won’t stick vertices along the curve there

If you want a mesh seam across that gap, you’d need to also split and rejoin(like shown here) that long surface first.

2 Likes

Thank you all for your answers! I really help me alot to understand more about meshes and the Triremesh component. Now the meshes are correctly separated:


The problem I have now is to cap both elements in order to obtain two different closed meshes. The thing is that cover must be shared in both meshes, sharing vertex in order to mantain continuity in following analysis. However, I tried to do it and almost all the vertex coincides perfectly but there are some of these that are not located in the same position. Maybe I can use align vertex but it means the cover will not share vertex on the other mesh.

Am I doing something wrong?

Regards, and sorry for all the questions!

Meshes.gh (998.7 KB)

The meshes in my reply above are capped but I just saw they’re still open.

I think Align Vertices with a tolerance of 0.01 solves the problem. The meshes do not have any naked edges now. I checked the seam on the baked meshes and it looks ok.

Meshes.gh (1023.4 KB)

1 Like

If I understand correctly what you want to do, this is another way-
matchingsplitmesh.gh (14.5 KB)

It splits and rejoins the whole thing at the plane, to generate a closed mesh with a seam there.
Then it separates that into 2 (now open) sides, and caps one,
Then separates just that cap (which is the common surface where the 2 sides touch), and remeshes that, keeping its boundary vertices fixed.
Then it joins that cap onto each of the open sides, to get a pair of closed meshes sharing all their vertices at the interface where they touch.

I’ll think about whether there’s a way I could package this process up to simplify it a bit.

1 Like

That’s a simple version of my approach above. Always nice to see your solutions :slight_smile:

2 Likes

Hi @DanielPiker ,

That is exactly what I was looking for although it does not work in my GH, meshes are still not closed. Are you able to see both meshes closed? This is what I see in my GH file:

Triremesh component does not seem to work properly. The warning message is “Invalid cast: Point » GeometryBase”. Do you know what can be happening? Maybe the version? I openend the file you sent and the same message appears.

This is the version I have. I think it is the last one.

Regards

Meshes.gh (1008.6 KB)

Yes, that’s a bug where feature points were not recognised, but that was fixed a few service releases ago. Updating will resolve it.

Previously you could use this workaround, making lines starting at the desired points:


as I say though, the bug is fixed now, so you shouldn’t need to use this workaround after updating.

2 Likes

Note that when using Rhino 7, you should not download or install the Kangaroo2 from Food4Rhino. The most current version is the one which comes with Rhino, and this will automatically update along with each Rhino service release.

1 Like

Okay, good to know.

Thank you so much for your help @DanielPiker , I really appreciate it. Thank you @martinsiegrist and @inno for your help as well, I learned a lot with you!

Regards!

2 Likes

Hi again,

I was trying to recreate another more complex example following the advices you give me. I think I almost achieved the solution, however the mesh I obtained is still opened. Can you have a look at my GH file? Am I doing something wrong @DanielPiker ?

Maybe using the align vertex I can solve it, however I am not sure about the vertex continuity between both meshes.

Thanks again and sorry to bother you!

Meshes_2.gh (16.8 KB)

1 Like

No need to apologise, this was an interesting and more tricky challenge.
This produces 2 closed meshes with coincident faces/vertices where they touch.
meshinterface.gh (116.7 KB)

Certainly I can see that it would be more convenient for this sort of thing to have a version of the remesher that automatically takes multiple surfaces or Breps and meshes them separately but so that they match where they touch.

8 Likes

Hi @DanielPiker , thank you for your answer!

You approach the problem in a different way, however there is still one issue I would like to understand. Analyzing your solution I saw both vertex meshs do not coincide mathematically at the intersection, and that maybe be an issue in FEM analysis when exporting geometries despite the despicable differences since continuity is not maintained.

I think that small difference is caused by the brep intersection command, because of some mathematical approximation which may produce that error.

This time I approached the problem differently. I created a mesh of both geometries without the coincident face, which was created separately. Doing that it seems now it exactly coincides.

You can take a look at this solution here:

Solution_2.gh (139.5 KB)

I am sure there is a more elegant way to solve that but this works. I am concerned about possible covers located in different planes where I cannot apply Delaunay mesh command correctly, but We’ll see! Create a version of Triremesh component capable of taking this into account directly would be amazing, but I understand it is quite complicated!

Regards, and thank you again for your help!

Here’s is a way of resolving that without needing the Delaunay step:
meshinterface2.gh (118.5 KB)

but yes, solving it in the remeshing component itself will be better - I do think I can make a version that remeshes each surface patch separately, with matching vertices at the junctions, and rejoins them as in the original breps.

4 Likes

I’ve been following this thread because I often face the same problem creating FEA meshes. I’d be very interested in this version if you get around to it

1 Like

@DanielPiker

That is it, very elegant solution! Thank you for your help, I really appreaciate it.

Looking forward to seeing that new Trimesh component in a future!

Regards!