X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FDriverGMF%2FDriverGMF_Write.cxx;h=1877f42b57799c29d034e45121c7cad1b10a876c;hb=b9d215ee2d335070116724cd20b2e89eba0a86ef;hp=7dc2a1fb9812adf36e4e944ceb9d30f8b7177b2c;hpb=a17b36970bc61da1d664453c615754997c925b18;p=modules%2Fsmesh.git diff --git a/src/DriverGMF/DriverGMF_Write.cxx b/src/DriverGMF/DriverGMF_Write.cxx index 7dc2a1fb9..1877f42b5 100644 --- a/src/DriverGMF/DriverGMF_Write.cxx +++ b/src/DriverGMF/DriverGMF_Write.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2016 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2024 CEA, EDF, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -34,6 +34,8 @@ #include "utilities.h" +using SMESHUtils::ControlPnt; + extern "C" { #include "libmesh5.h" @@ -55,8 +57,8 @@ extern "C" elemIt = elementIterator( SMDSGeom ); \ if ( elemIt->more() ) \ { \ - int totalNbElems = myMesh->GetMeshInfo().NbElements( SMDSGeom ); \ - int nbLinearElems = myMesh->GetMeshInfo().NbElements( LinType ); \ + smIdType totalNbElems = myMesh->GetMeshInfo().NbElements( SMDSGeom );\ + smIdType nbLinearElems = myMesh->GetMeshInfo().NbElements( LinType ); \ if ( totalNbElems - nbLinearElems > 0 ) \ { \ GmfSetKwd(meshID, GmfKwd, totalNbElems - nbLinearElems); \ @@ -80,29 +82,6 @@ extern "C" }}}} -Control_Pnt::Control_Pnt(): gp_Pnt() -{ - size=0; -} -Control_Pnt::Control_Pnt( const gp_Pnt& aPnt, - double theSize): gp_Pnt( aPnt ) -{ - size=theSize; -} -Control_Pnt::Control_Pnt(double theX, - double theY, - double theZ): gp_Pnt(theX, theY, theZ) -{ - size=0; -} -Control_Pnt::Control_Pnt(double theX, - double theY, - double theZ, - double theSize): gp_Pnt(theX, theY, theZ) -{ - size=theSize; -} - DriverGMF_Write::DriverGMF_Write(): Driver_SMESHDS_Mesh(), _exportRequiredGroups( true ) { @@ -121,6 +100,9 @@ Driver_Mesh::Status DriverGMF_Write::Perform() { Kernel_Utils::Localizer loc; + if ( Driver_Mesh::IsMeshTooLarge< int >( myMesh, /*checkIDs =*/ false)) + return DRS_TOO_LARGE_MESH; + const int dim = 3, version = sizeof(double) < 8 ? 1 : 2; int meshID = GmfOpenMesh( myFile.c_str(), GmfWrite, version, dim ); @@ -136,7 +118,7 @@ Driver_Mesh::Status DriverGMF_Write::Perform() // nodes std::map< const SMDS_MeshNode* , int > node2IdMap; - int iN = 0, nbNodes = myMesh->NbNodes(); + smIdType iN = 0, nbNodes = myMesh->NbNodes(); GmfSetKwd( meshID, GmfVertices, nbNodes ); double xyz[3]; SMDS_NodeIteratorPtr nodeIt = myMesh->nodesIterator(); @@ -225,10 +207,10 @@ Driver_Mesh::Status DriverGMF_Write::Perform() // pyramids BEGIN_ELEM_WRITE( SMDSEntity_Pyramid, GmfPyramids, pyra ) - node2IdMap[ pyra->GetNode( 0 )], + node2IdMap[ pyra->GetNode( 3 )], node2IdMap[ pyra->GetNode( 2 )], node2IdMap[ pyra->GetNode( 1 )], - node2IdMap[ pyra->GetNode( 3 )], + node2IdMap[ pyra->GetNode( 0 )], node2IdMap[ pyra->GetNode( 4 )], END_ELEM_WRITE( pyra ); @@ -365,7 +347,7 @@ Driver_Mesh::Status DriverGMF_Write::Perform() return DRS_OK; } -Driver_Mesh::Status DriverGMF_Write::PerformSizeMap( const std::vector& points ) +Driver_Mesh::Status DriverGMF_Write::PerformSizeMap( const std::vector& points ) { // const int dim = 3, version = sizeof(long) == 4 ? 2 : 3; const int dim = 3, version = 2; // Version 3 not supported by mg-hexa @@ -383,7 +365,7 @@ Driver_Mesh::Status DriverGMF_Write::PerformSizeMap( const std::vector::const_iterator points_it; + std::vector::const_iterator points_it; for (points_it = points.begin(); points_it != points.end(); points_it++ ) { GmfSetLin( verticesFileID, GmfVertices, points_it->X(), points_it->Y(), points_it->Z(), 0 );