Salome HOME
Modifications for conformity with test base and non regressional tests.
authorcconopoima <cesar.conopoima@gmail.com>
Mon, 4 Mar 2024 19:35:29 +0000 (19:35 +0000)
committercconopoima <cesar.conopoima@gmail.com>
Mon, 4 Mar 2024 19:35:29 +0000 (19:35 +0000)
src/SMESH/SMESH_MesherHelper.cxx
src/Tools/blocFissure/gmu/fissureCoude.py
test/netgen_runner_2D.py

index 1be97fb72763ae21a0d01f134bd2799f431425ca..49a1152810d7d6f874aa8fc8fb69ad24583b0c41 100644 (file)
@@ -3279,6 +3279,16 @@ double SMESH_MesherHelper::getFaceMaxTol( const TopoDS_Shape& face ) const
   return tol;
 }
 
+bool CheckAlmostZero(gp_Vec & vec1,gp_Vec & vec2, gp_Vec & vecref)
+{
+  auto v1   = gp_Dir(vec1);
+  auto v2   = gp_Dir(vec2);
+  auto vref = gp_Dir(vecref);
+  auto XYZ = v1.Crossed (v2);
+  double cond  = XYZ.X()*vref.X()+XYZ.Y()*vref.Y()+XYZ.Z()*vref.Z();
+  return (Abs(cond) <= 1e-12);
+}
+
 //================================================================================
 /*!
  * \brief Return an angle between two EDGEs sharing a common VERTEX with reference
@@ -3341,7 +3351,9 @@ double SMESH_MesherHelper::GetAngle( const TopoDS_Edge &   theE1,
     if ( theE2.Orientation() /*GetSubShapeOri( F, theE2 )*/ == TopAbs_REVERSED )
       vec2.Reverse();
     angle = vec1.AngleWithRef( vec2, vecRef );
-
+    if ( angle < 0. && CheckAlmostZero(vec1,vec2,vecRef))
+      angle*=-1;
+      
     if ( Abs ( angle ) >= 0.99 * M_PI )
     {
       BRep_Tool::Range( theE1, f, l );
index f8ce927f03ec780398840ae7eadd854fcc5470da..014ab56fe5b0ee8b93a257d59fbe27f880e2ea54 100644 (file)
@@ -106,7 +106,10 @@ class fissureCoude(fissureGenerique):
 
     # --- tube coude sain
 
-    geometrieSaine = geompy.MakePartition([tube_1, coude, tube_2, P1, P2], [plan_y], [], [], geompy.ShapeType["SOLID"], 0, [], 1)
+    #Refactor to perform the partition in two steps to avoid break from occt (reported bug#)
+    #geometrieSaine = geompy.MakePartition([tube_1, coude, tube_2, P1, P2], [plan_y], [], [], geompy.ShapeType["SOLID"], 0, [], 1)
+    geometrieSaine0 = geompy.MakePartition([tube_1, coude], [plan_y], [], [], geompy.ShapeType["SOLID"], 0, [], 1)
+    geometrieSaine = geompy.MakePartition([geometrieSaine0, tube_2, P1, P2], [plan_y], [], [], geompy.ShapeType["SOLID"], 0, [], 1)
     geomPublish(initLog.debug, geometrieSaine, self.nomCas, self.numeroCas )
     [P1, P2] = geompy.RestoreGivenSubShapes(geometrieSaine, [P1, P2], GEOM.FSM_GetInPlaceByHistory, False, True)
 
index 36be1b7170b22e7bfc39aeb05a4eea01ee087000..255a4a61a71208e4abbc1ed9ac4653d887696edc 100644 (file)
@@ -169,8 +169,8 @@ def test_netgen2dLenghtFromEdge():
     print("Nb Segments:", nb_segments)
     print("Nb Points:", nb_points)
 
-    assert nb_triangles == 12
-    assert nb_points == 8
+    assert nb_triangles == 12*2
+    assert nb_points == 14
     assert nb_segments == 12
 
 if __name__ == "__main__":