]> SALOME platform Git repositories - plugins/netgenplugin.git/commitdiff
Salome HOME
PAL15429 Computation of the mesh, based on "014.brep" via Tetrahedron(NETGEN), is...
authoreap <eap@opencascade.com>
Tue, 17 Feb 2009 07:18:14 +0000 (07:18 +0000)
committereap <eap@opencascade.com>
Tue, 17 Feb 2009 07:18:14 +0000 (07:18 +0000)
    fix for G7.py

src/NETGENPlugin/NETGENPlugin_NETGEN_3D.cxx

index 00d447d6f663a87cff4b5bd5472f57e63a6e6221..cbaf2eec0e15ea761f0c607f5f8654b6df371471 100644 (file)
@@ -179,6 +179,9 @@ bool NETGENPlugin_NETGEN_3D::Compute(SMESH_Mesh&         aMesh,
   list< const SMDS_MeshElement* > triangles;
   list< bool >                    isReversed; // orientation of triangles
 
+  TopAbs_ShapeEnum mainType = aMesh.GetShapeToMesh().ShapeType();
+  bool checkReverse = ( mainType == TopAbs_COMPOUND || mainType == TopAbs_COMPSOLID );
+
   // for the degeneraged edge: ignore all but one node on it;
   // map storing ids of degen edges and vertices and their netgen id:
   map< int, int* > degenShapeIdToPtrNgId;
@@ -194,7 +197,11 @@ bool NETGENPlugin_NETGEN_3D::Compute(SMESH_Mesh&         aMesh,
     const SMESHDS_SubMesh * aSubMeshDSFace = meshDS->MeshElements( aShapeFace );
     if ( aSubMeshDSFace )
     {
-      bool isRev = SMESH_Algo::IsReversedSubMesh( TopoDS::Face(aShapeFace), meshDS );
+      bool isRev = false;
+      if ( checkReverse && helper.NbAncestors(aShapeFace, aMesh, aShape.ShapeType()) > 1 )
+        // IsReversedSubMesh() can work wrong on strongly curved faces,
+        // so we use it as less as possible
+        isRev = SMESH_Algo::IsReversedSubMesh( TopoDS::Face(aShapeFace), meshDS );
 
       SMDS_ElemIteratorPtr iteratorElem = aSubMeshDSFace->GetElements();
       while ( iteratorElem->more() ) // loop on elements on a face
@@ -333,7 +340,9 @@ bool NETGENPlugin_NETGEN_3D::Compute(SMESH_Mesh&         aMesh,
          (Netgen_triangle[0] != Netgen_triangle[1] &&
           Netgen_triangle[0] != Netgen_triangle[2] &&
           Netgen_triangle[2] != Netgen_triangle[1] ))
+    {
       Ng_AddSurfaceElement(Netgen_mesh, NG_TRIG, Netgen_triangle);
+    }
   }
 
   // -------------------------