Salome HOME
Copyright update 2021
[modules/smesh.git] / src / StdMeshers / StdMeshers_ProjectionUtils.cxx
index 2070ef108b407d2d8760e8dd820ace1654ca6318..64c0329719f46b38419d1d53c19de7ec465a5beb 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
@@ -20,7 +20,7 @@
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
-//  SMESH SMESH : idl implementation based on 'SMESH' unit's calsses
+//  SMESH SMESH : idl implementation based on 'SMESH' unit's classes
 // File      : StdMeshers_ProjectionUtils.cxx
 // Created   : Fri Oct 27 10:24:28 2006
 // Author    : Edward AGAPOV (eap)
@@ -37,6 +37,7 @@
 #include "SMESH_Hypothesis.hxx"
 #include "SMESH_Mesh.hxx"
 #include "SMESH_MeshAlgos.hxx"
+#include "SMESH_MeshEditor.hxx"
 #include "SMESH_MesherHelper.hxx"
 #include "SMESH_subMesh.hxx"
 #include "SMESH_subMeshEventListener.hxx"
@@ -96,7 +97,7 @@ namespace {
       return max(theMeshDS[0]->ShapeToIndex(S), theMeshDS[1]->ShapeToIndex(S) );
     return long(S.TShape().operator->());
   }
-  void show_shape( TopoDS_Shape v, const char* msg ) // debug
+  void show_shape( TopoDS_Shape v, const char* msg ) // debug // todo: unused in release mode
   {
     if ( v.IsNull() ) cout << msg << " NULL SHAPE" << endl;
     else if (v.ShapeType() == TopAbs_VERTEX) {
@@ -105,7 +106,7 @@ namespace {
     else {
       cout << msg << " "; TopAbs::Print((v).ShapeType(),cout) <<" "<<shapeIndex((v))<<endl;}
   }
-  void show_list( const char* msg, const list< TopoDS_Edge >& l ) // debug
+  void show_list( const char* msg, const list< TopoDS_Edge >& l ) // debug // todo: unused in release mode
   {
     cout << msg << " ";
     list< TopoDS_Edge >::const_iterator e = l.begin();
@@ -122,15 +123,19 @@ namespace {
 
   bool storeShapeForDebug(const TopoDS_Shape& shape)
   {
+    bool toShow;
 #ifdef _DEBUG_
     const char* type[] ={"COMPOUND","COMPSOLID","SOLID","SHELL","FACE","WIRE","EDGE","VERTEX"};
     BRepTools::Write( shape, SMESH_Comment("/tmp/") << type[shape.ShapeType()] << "_"
                       << shape.TShape().operator->() << ".brep");
-    if ( !theMeshDS[0] ) {
-      show_shape( TopoDS_Shape(), "avoid warning: show_shape() defined but not used");
+    toShow = !theMeshDS[0]; // no show
+#else
+    toShow = theMeshDS[0]; // no show
+#endif
+    if ( toShow ) {
+      show_shape( shape, "avoid warning: show_shape() defined but not used");
       show_list( "avoid warning: show_list() defined but not used", list< TopoDS_Edge >() );
     }
-#endif
     return false;
   }
   
@@ -537,8 +542,10 @@ bool StdMeshers_ProjectionUtils::FindSubShapeAssociation(const TopoDS_Shape& the
   //       b) find association of a couple of vertices and recall self.
   //
 
+#ifdef _DEBUG_
   theMeshDS[0] = theMesh1->GetMeshDS(); // debug
   theMeshDS[1] = theMesh2->GetMeshDS();
+#endif
 
   // =================================================================================
   // 1) Is it the case of associating a group member -> another group? (PAL16202, 16203)
@@ -2209,8 +2216,7 @@ FindMatchingNodesOnFaces( const TopoDS_Face&     face1,
       SMDS_NodeIteratorPtr nIt = edgeSM->GetNodes();
       while ( nIt->more() ) {
         const SMDS_MeshNode* node = nIt->next();
-        const SMDS_EdgePosition* pos =
-          static_cast<const SMDS_EdgePosition*>(node->GetPosition());
+        SMDS_EdgePositionPtr pos = node->GetPosition();
         pos2nodes.insert( make_pair( pos->GetUParameter(), node ));
       }
       if ((int) pos2nodes.size() != edgeSM->NbNodes() )
@@ -2886,7 +2892,6 @@ namespace StdMeshers_ProjectionUtils
 
     double bc[3]; // barycentric coordinates
     int    nodeIDs[3]; // nodes of a delaunay triangle
-    const SMDS_FacePosition* pos;
 
     _delaunay.InitTraversal( nbSrcNodes );
 
@@ -2904,8 +2909,8 @@ namespace StdMeshers_ProjectionUtils
       tgtNode = n2n->second;
       tgtMesh->MoveNode( tgtNode, xyz.X(), xyz.Y(), xyz.Z() );
 
-      if (( pos = dynamic_cast< const SMDS_FacePosition* >( tgtNode->GetPosition() )))
-        const_cast<SMDS_FacePosition*>( pos )->SetParameters( uvNew.X(), uvNew.Y() );
+      if ( SMDS_FacePositionPtr pos = tgtNode->GetPosition() )
+        pos->SetParameters( uvNew.X(), uvNew.Y() );
 
       --nbSrcNodes;
     }