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

src/NETGENPlugin/NETGENPlugin_NETGEN_3D.cxx

index 8ab9e6bfa982b0ebf10af995fbedda070c65e036..0400de6701424c4f0051bd3461c1ed162ae0e41c 100644 (file)
@@ -178,6 +178,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;
@@ -193,7 +196,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
@@ -332,7 +339,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);
+    }
   }
 
   // -------------------------