From 6789f58090e5694189e63cf9b11363ae1ed6a5c9 Mon Sep 17 00:00:00 2001 From: "Hochsteger, Matthias" Date: Thu, 22 Dec 2022 11:16:08 +0100 Subject: [PATCH] Fix refinement with OCC geometries --- libsrc/meshing/bisect.cpp | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/libsrc/meshing/bisect.cpp b/libsrc/meshing/bisect.cpp index 0205cc81..7f281f8e 100644 --- a/libsrc/meshing/bisect.cpp +++ b/libsrc/meshing/bisect.cpp @@ -3418,9 +3418,17 @@ namespace netgen INDEX_2 edge(oldpi1, oldpi2); edge.Sort(); + int si = mesh.GetFaceDescriptor (oldtri.surfid).SurfNr(); + PointGeomInfo npgi; + PointGeomInfo gi1 = oldtri.pgeominfo[(oldtri.markededge+1)%3]; + PointGeomInfo gi2 = oldtri.pgeominfo[(oldtri.markededge+2)%3]; + if (cutedges.Used (edge)) { newp = cutedges.Get(edge); + npgi.u = 0.5*(gi1.u + gi2.u); + npgi.v = 0.5*(gi1.v + gi2.v); + geo.ProjectPointGI (si, mesh[newp], npgi); } else { @@ -3428,18 +3436,10 @@ namespace netgen mesh.Point (edge.I2())); newp = mesh.AddPoint (npt); cutedges.Set (edge, newp); + geo.PointBetween (mesh.Point (oldpi1), mesh.Point (oldpi2), + 0.5, si, gi1, gi2, mesh.Point (newp), npgi); } - int si = mesh.GetFaceDescriptor (oldtri.surfid).SurfNr(); - PointGeomInfo npgi; - - if (mesh[newp].Type() != EDGEPOINT) - geo.PointBetween (mesh.Point (oldpi1), mesh.Point (oldpi2), - 0.5, si, - oldtri.pgeominfo[(oldtri.markededge+1)%3], - oldtri.pgeominfo[(oldtri.markededge+2)%3], - mesh.Point (newp), npgi); - BTBisectTri (oldtri, newp, npgi, newtri1, newtri2); mtris[i] = newtri1;