23033: EDF 10568 SMESH: wrong header when exporting 2D to gmf

Write 'MeshVersionFormatted 2' instead of 'MeshVersionFormatted 3'
  though '3' is strongly recomended by libmesh manual


+ IPAL52653: Some quality controls does not work (SIGSEGV)
This commit is contained in:
eap 2015-04-02 17:48:04 +03:00
parent b0a962d83d
commit c1754b24c3
3 changed files with 14 additions and 15 deletions

View File

@ -121,7 +121,7 @@ Driver_Mesh::Status DriverGMF_Write::Perform()
{ {
Kernel_Utils::Localizer loc; Kernel_Utils::Localizer loc;
const int dim = 3, version = sizeof(long) == 4 ? 2 : 3; const int dim = 3, version = sizeof(double) < 8 ? 1 : 2;
int meshID = GmfOpenMesh( myFile.c_str(), GmfWrite, version, dim ); int meshID = GmfOpenMesh( myFile.c_str(), GmfWrite, version, dim );
if ( !meshID ) if ( !meshID )

View File

@ -516,17 +516,17 @@ SMESH_DeviceActor
myVisualObj->UpdateFunctor(theFunctor); myVisualObj->UpdateFunctor(theFunctor);
using namespace SMESH::Controls; using namespace SMESH::Controls;
if ( dynamic_cast<FreeBorders *>(theFunctor.get()) || Predicate* aPredicate = 0;
dynamic_cast<FreeFaces *>(theFunctor.get()) || if (( aPredicate = dynamic_cast<FreeBorders *>(theFunctor.get())) ||
dynamic_cast<BareBorderVolume *>(theFunctor.get()) || ( aPredicate = dynamic_cast<FreeFaces *>(theFunctor.get())) ||
dynamic_cast<BareBorderFace *>(theFunctor.get()) || ( aPredicate = dynamic_cast<BareBorderVolume *>(theFunctor.get())) ||
dynamic_cast<OverConstrainedVolume*>(theFunctor.get()) || ( aPredicate = dynamic_cast<BareBorderFace *>(theFunctor.get())) ||
dynamic_cast<CoincidentElements1D *>(theFunctor.get()) || ( aPredicate = dynamic_cast<OverConstrainedVolume*>(theFunctor.get())) ||
dynamic_cast<CoincidentElements2D *>(theFunctor.get()) || ( aPredicate = dynamic_cast<CoincidentElements1D *>(theFunctor.get())) ||
dynamic_cast<CoincidentElements3D *>(theFunctor.get()) || ( aPredicate = dynamic_cast<CoincidentElements2D *>(theFunctor.get())) ||
dynamic_cast<OverConstrainedFace *>(theFunctor.get())) ( aPredicate = dynamic_cast<CoincidentElements3D *>(theFunctor.get())) ||
( aPredicate = dynamic_cast<OverConstrainedFace *>(theFunctor.get())))
{ {
Predicate* aPredicate = dynamic_cast<Predicate*>(theFunctor.get());
myExtractUnstructuredGrid->SetModeOfChanging(VTKViewer_ExtractUnstructuredGrid::eAdding); myExtractUnstructuredGrid->SetModeOfChanging(VTKViewer_ExtractUnstructuredGrid::eAdding);
vtkUnstructuredGrid* aGrid = myVisualObj->GetUnstructuredGrid(); vtkUnstructuredGrid* aGrid = myVisualObj->GetUnstructuredGrid();
vtkIdType aNbCells = aGrid->GetNumberOfCells(); vtkIdType aNbCells = aGrid->GetNumberOfCells();
@ -588,10 +588,9 @@ SMESH_DeviceActor
SetUnstructuredGrid(aDataSet); SetUnstructuredGrid(aDataSet);
aDataSet->Delete(); aDataSet->Delete();
} }
else if(dynamic_cast<FreeNodes *>(theFunctor.get()) || else if (( aPredicate = dynamic_cast<FreeNodes *>(theFunctor.get())) ||
dynamic_cast<CoincidentNodes*>(theFunctor.get())) ( aPredicate = dynamic_cast<CoincidentNodes*>(theFunctor.get())))
{ {
Predicate* aPredicate = dynamic_cast<Predicate*>(theFunctor.get());
myExtractUnstructuredGrid->SetModeOfChanging(VTKViewer_ExtractUnstructuredGrid::eAdding); myExtractUnstructuredGrid->SetModeOfChanging(VTKViewer_ExtractUnstructuredGrid::eAdding);
vtkIdType aNbNodes = myVisualObj->GetNbEntities(SMDSAbs_Node); vtkIdType aNbNodes = myVisualObj->GetNbEntities(SMDSAbs_Node);
for( vtkIdType i = 0; i < aNbNodes; i++ ){ for( vtkIdType i = 0; i < aNbNodes; i++ ){

View File

@ -425,7 +425,7 @@ protected:
bool _requireDiscreteBoundary;// GetDim()-1 mesh must be present. Default TRUE bool _requireDiscreteBoundary;// GetDim()-1 mesh must be present. Default TRUE
bool _requireShape; // work with GetDim()-1 mesh bound to geom only. Default TRUE bool _requireShape; // work with GetDim()-1 mesh bound to geom only. Default TRUE
bool _supportSubmeshes; // if !_requireDiscreteBoundary. Default FALSE bool _supportSubmeshes; // if !_requireDiscreteBoundary. Default FALSE
bool _neededLowerHyps[4]; // hyp dims needed by algo that !NeedDiscreteBoundary(). Df. FALSE bool _neededLowerHyps[4]; // hyp dims needed by algo that !_requireDiscreteBoundary. Df. FALSE
// indicates if quadratic mesh creation is required, // indicates if quadratic mesh creation is required,
// is usually set like this: _quadraticMesh = SMESH_MesherHelper::IsQuadraticSubMesh(shape) // is usually set like this: _quadraticMesh = SMESH_MesherHelper::IsQuadraticSubMesh(shape)