0020982: EDF 1547 SMESH: Creation of non-conformal quadratic pyramids

Returns description of an error/warning occured during the last mesh edition
This commit is contained in:
eap 2012-09-17 10:18:07 +00:00
parent 3a58968846
commit 12c889c3f6
4 changed files with 21 additions and 22 deletions

View 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;
}

View 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 );
}
}

View 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;
SMESH_Mesh * myMesh;
/*!
* Sequence for keeping nodes created during last operation
*/
SMESH_SequenceOfElemPtr myLastCreatedNodes;
/*!
* 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

View 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()