Salome HOME
23033: EDF 10568 SMESH: wrong header when exporting 2D to gmf
authoreap <eap@opencascade.com>
Thu, 2 Apr 2015 14:48:04 +0000 (17:48 +0300)
committereap <eap@opencascade.com>
Thu, 2 Apr 2015 14:48:04 +0000 (17:48 +0300)
  Write 'MeshVersionFormatted 2' instead of 'MeshVersionFormatted 3'
  though '3' is strongly recomended by libmesh manual

+ IPAL52653: Some quality controls does not work (SIGSEGV)

src/DriverGMF/DriverGMF_Write.cxx
src/OBJECT/SMESH_DeviceActor.cxx
src/SMESH/SMESH_Algo.hxx

index f2dc95be7181b7690b66a8accae4f44f9794dd04..158eea06760e45717a5bda9b7204e77f5be4dcf1 100644 (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 );
   if ( !meshID )
 
   int meshID = GmfOpenMesh( myFile.c_str(), GmfWrite, version, dim );
   if ( !meshID )
index 19ddd5bc60bf8693bee4eabd1fe8d5ba22d50f6c..cf64055548d061995597599ddb4dd94a79305c8e 100644 (file)
@@ -516,17 +516,17 @@ SMESH_DeviceActor
   myVisualObj->UpdateFunctor(theFunctor);
 
   using namespace SMESH::Controls;
   myVisualObj->UpdateFunctor(theFunctor);
 
   using namespace SMESH::Controls;
-  if ( dynamic_cast<FreeBorders          *>(theFunctor.get()) ||
-       dynamic_cast<FreeFaces            *>(theFunctor.get()) ||
-       dynamic_cast<BareBorderVolume     *>(theFunctor.get()) ||
-       dynamic_cast<BareBorderFace       *>(theFunctor.get()) ||
-       dynamic_cast<OverConstrainedVolume*>(theFunctor.get()) ||
-       dynamic_cast<CoincidentElements1D *>(theFunctor.get()) ||
-       dynamic_cast<CoincidentElements2D *>(theFunctor.get()) ||
-       dynamic_cast<CoincidentElements3D *>(theFunctor.get()) ||
-       dynamic_cast<OverConstrainedFace  *>(theFunctor.get()))
+  Predicate* aPredicate = 0;
+  if (( aPredicate =  dynamic_cast<FreeBorders          *>(theFunctor.get())) ||
+      ( aPredicate =  dynamic_cast<FreeFaces            *>(theFunctor.get())) ||
+      ( aPredicate =  dynamic_cast<BareBorderVolume     *>(theFunctor.get())) ||
+      ( aPredicate =  dynamic_cast<BareBorderFace       *>(theFunctor.get())) ||
+      ( aPredicate =  dynamic_cast<OverConstrainedVolume*>(theFunctor.get())) ||
+      ( aPredicate =  dynamic_cast<CoincidentElements1D *>(theFunctor.get())) ||
+      ( aPredicate =  dynamic_cast<CoincidentElements2D *>(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);
     vtkUnstructuredGrid* aGrid = myVisualObj->GetUnstructuredGrid();
     vtkIdType aNbCells = aGrid->GetNumberOfCells();
     myExtractUnstructuredGrid->SetModeOfChanging(VTKViewer_ExtractUnstructuredGrid::eAdding);
     vtkUnstructuredGrid* aGrid = myVisualObj->GetUnstructuredGrid();
     vtkIdType aNbCells = aGrid->GetNumberOfCells();
@@ -588,10 +588,9 @@ SMESH_DeviceActor
     SetUnstructuredGrid(aDataSet);
     aDataSet->Delete();
   }
     SetUnstructuredGrid(aDataSet);
     aDataSet->Delete();
   }
-  else if(dynamic_cast<FreeNodes      *>(theFunctor.get()) ||
-          dynamic_cast<CoincidentNodes*>(theFunctor.get()))
+  else if (( aPredicate = dynamic_cast<FreeNodes      *>(theFunctor.get())) ||
+           ( aPredicate = dynamic_cast<CoincidentNodes*>(theFunctor.get())))
   {
   {
-    Predicate* aPredicate = dynamic_cast<Predicate*>(theFunctor.get());
     myExtractUnstructuredGrid->SetModeOfChanging(VTKViewer_ExtractUnstructuredGrid::eAdding);
     vtkIdType aNbNodes = myVisualObj->GetNbEntities(SMDSAbs_Node);
     for( vtkIdType i = 0; i < aNbNodes; i++ ){
     myExtractUnstructuredGrid->SetModeOfChanging(VTKViewer_ExtractUnstructuredGrid::eAdding);
     vtkIdType aNbNodes = myVisualObj->GetNbEntities(SMDSAbs_Node);
     for( vtkIdType i = 0; i < aNbNodes; i++ ){
index 5c4b46cecb9b186cb2c881312fbde39ab1e80f54..3462f0a0db212570b83314350624f59ed18981a0 100644 (file)
@@ -425,7 +425,7 @@ protected:
   bool _requireDiscreteBoundary;// GetDim()-1 mesh must be present. Default TRUE
   bool _requireShape;           // work with GetDim()-1 mesh bound to geom only. Default TRUE
   bool _supportSubmeshes;       // if !_requireDiscreteBoundary. Default FALSE
   bool _requireDiscreteBoundary;// GetDim()-1 mesh must be present. Default TRUE
   bool _requireShape;           // work with GetDim()-1 mesh bound to geom only. Default TRUE
   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,
   // is usually set like this: _quadraticMesh = SMESH_MesherHelper::IsQuadraticSubMesh(shape)
 
   // indicates if quadratic mesh creation is required,
   // is usually set like this: _quadraticMesh = SMESH_MesherHelper::IsQuadraticSubMesh(shape)