]> SALOME platform Git repositories - modules/smesh.git/commitdiff
Salome HOME
0020982: EDF 1547 SMESH: Creation of non-conformal quadratic pyramids
authoreap <eap@opencascade.com>
Mon, 17 Sep 2012 10:18:07 +0000 (10:18 +0000)
committereap <eap@opencascade.com>
Mon, 17 Sep 2012 10:18:07 +0000 (10:18 +0000)
  Returns description of an error/warning occured during the last mesh edition

src/SMESH/SMESH_Gen.cxx
src/SMESH/SMESH_MeshEditor.cxx
src/SMESH/SMESH_MeshEditor.hxx
src/SMESH/SMESH_MesherHelper.hxx

index 29faef59642973b4b6dce4615924862d65d68b78..ba02a6828923e63da9d85a70246310db948c7951 100644 (file)
@@ -375,7 +375,9 @@ bool SMESH_Gen::Compute(SMESH_Mesh &          aMesh,
   {
     SMESH_MesherHelper aHelper( aMesh );
     if ( aHelper.IsQuadraticMesh() != SMESH_MesherHelper::LINEAR )
-      aHelper.FixQuadraticElements();
+    {
+      aHelper.FixQuadraticElements( sm->GetComputeError() );
+    }
   }
   return ret;
 }
index 87784b2d749c4fb3c4c989cc138141a8af6927a1..2110a913200e0aa16ca66822760915578ef55ea2 100644 (file)
@@ -9635,7 +9635,7 @@ void SMESH_MeshEditor::ConvertToQuadratic(const bool theForce3d)
   if ( !theForce3d )
   { // setenv NO_FixQuadraticElements to know if FixQuadraticElements() is guilty of bad conversion
     aHelper.SetSubShape(0); // apply FixQuadraticElements() to the whole mesh
-    aHelper.FixQuadraticElements();
+    aHelper.FixQuadraticElements(myError);
   }
 }
 
@@ -9775,7 +9775,7 @@ void SMESH_MeshEditor::ConvertToQuadratic(const bool        theForce3d,
   if ( !theForce3d  && !getenv("NO_FixQuadraticElements"))
   { // setenv NO_FixQuadraticElements to know if FixQuadraticElements() is guilty of bad conversion
     helper.SetSubShape(0); // apply FixQuadraticElements() to the whole mesh
-    helper.FixQuadraticElements();
+    helper.FixQuadraticElements( myError );
   }
 }
 
index d2d06adeb2458bcf36bcd418c0b44792550637be..1874360a79fdda983309e0359d18dea871d32e7e 100644 (file)
@@ -34,6 +34,7 @@
 #include "SMESH_Controls.hxx"
 #include "SMESH_Mesh.hxx"
 #include "SMESH_TypeDefs.hxx"
+#include "SMESH_ComputeError.hxx"
 
 #include <utilities.h>
 
@@ -110,6 +111,14 @@ public:
 
   SMESH_MeshEditor( SMESH_Mesh* theMesh );
 
+  SMESH_Mesh   *                 GetMesh()   { return myMesh; }
+  SMESHDS_Mesh *                 GetMeshDS() { return myMesh->GetMeshDS(); }
+
+  const SMESH_SequenceOfElemPtr& GetLastCreatedNodes() const { return myLastCreatedNodes; }
+  const SMESH_SequenceOfElemPtr& GetLastCreatedElems() const { return myLastCreatedElems; }
+
+  SMESH_ComputeErrorPtr &        GetError() { return myError; }
+
   /*!
    * \brief Add element
    */
@@ -561,14 +570,6 @@ public:
   // Return an index of the shape theElem is on
   // or zero if a shape not found
 
-  SMESH_Mesh * GetMesh() { return myMesh; }
-
-  SMESHDS_Mesh * GetMeshDS() { return myMesh->GetMeshDS(); }
-
-  const SMESH_SequenceOfElemPtr& GetLastCreatedNodes() const { return myLastCreatedNodes; }
-
-  const SMESH_SequenceOfElemPtr& GetLastCreatedElems() const { return myLastCreatedElems; }
-
   bool DoubleNodes( const std::list< int >& theListOfNodes, 
                     const std::list< int >& theListOfModifiedElems );
   
@@ -721,18 +722,13 @@ public:
 
 private:
 
-  SMESH_Mesh * myMesh;
-
-  /*!
-   * Sequence for keeping nodes created during last operation
-   */
-  SMESH_SequenceOfElemPtr myLastCreatedNodes;
+  SMESH_Mesh *            myMesh;
 
-  /*!
-   * Sequence for keeping elements created during last operation
-   */
-  SMESH_SequenceOfElemPtr myLastCreatedElems;
+  // Nodes and elements created during last operation
+  SMESH_SequenceOfElemPtr myLastCreatedNodes, myLastCreatedElems;
 
+  // Description of error/warning occured during last operation
+  SMESH_ComputeErrorPtr   myError;
 };
 
 #endif
index faffe5b7a412144a4e0e59407f84d7ec1702322c..da6cfcbfb3efb5ed7e0ec86a00149c9514087217 100644 (file)
@@ -195,9 +195,10 @@ public:
 
   /*!
    * \brief Move medium nodes of faces and volumes to fix distorted elements
+   * \param error - container of fixed distorted elements
    * \param volumeOnly - fix nodes on geom faces or not if the shape is solid
    */
-  void FixQuadraticElements(bool volumeOnly=true);
+  void FixQuadraticElements(SMESH_ComputeErrorPtr& error, bool volumeOnly=true);
 
   /*!
    * \brief To set created elements on the shape set by IsQuadraticSubMesh()