X-Git-Url: http://git.salome-platform.org/gitweb/?p=modules%2Fsmesh.git;a=blobdiff_plain;f=src%2FDriverGMF%2FDriverGMF_Write.cxx;h=723f73d321f6c07b7da5ee52c89f5873cdf3c7c9;hp=178e0b52b5eb3033cf3fb6139058ebcf3cf83a27;hb=67312ab966a7c21fe835917978028643ffadd99e;hpb=95ac4b3747821ff5ec084ef062f40ffe8c67b59e diff --git a/src/DriverGMF/DriverGMF_Write.cxx b/src/DriverGMF/DriverGMF_Write.cxx index 178e0b52b..723f73d32 100644 --- a/src/DriverGMF/DriverGMF_Write.cxx +++ b/src/DriverGMF/DriverGMF_Write.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2013 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2016 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -6,7 +6,7 @@ // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either -// version 2.1 of the License. +// version 2.1 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -34,6 +34,8 @@ #include "utilities.h" +using SMESHUtils::ControlPnt; + extern "C" { #include "libmesh5.h" @@ -70,9 +72,9 @@ extern "C" elem->getshapeId() ); \ }} -#define END_ELEM_WRITE_ADD_TO_MAP( elem, e2id ) \ - elem->getshapeId() ); \ - e2id.insert( e2id.end(), make_pair( elem, gmfID )); \ +#define END_ELEM_WRITE_ADD_TO_MAP( elem, e2id ) \ + elem->getshapeId() ); \ + e2id.insert( e2id.end(), std::make_pair( elem, gmfID )); \ }} #define END_EXTRA_VERTICES_WRITE() \ @@ -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,7 +100,7 @@ Driver_Mesh::Status DriverGMF_Write::Perform() { 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 ) @@ -145,7 +124,7 @@ Driver_Mesh::Status DriverGMF_Write::Perform() const SMDS_MeshNode* n = nodeIt->next(); n->GetXYZ( xyz ); GmfSetLin( meshID, GmfVertices, xyz[0], xyz[1], xyz[2], n->getshapeId() ); - node2IdMap.insert( node2IdMap.end(), make_pair( n, ++iN )); + node2IdMap.insert( node2IdMap.end(), std::make_pair( n, ++iN )); } if ( iN != nbNodes ) return addMessage("Wrong nb of nodes returned by nodesIterator", /*fatal=*/true); @@ -225,10 +204,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 ); @@ -296,19 +275,19 @@ Driver_Mesh::Status DriverGMF_Write::Perform() SMDSAbs_EntityType smdsEntity; std::string entity = groupName.substr( pos + strlen("_required_")); if ( entity == "Vertices" ) { - gmfKwd = GmfRequiredVertices; + gmfKwd = GmfRequiredVertices; smdsEntity = SMDSEntity_Node; } else if ( entity == "Edges" ) { - gmfKwd = GmfRequiredEdges; + gmfKwd = GmfRequiredEdges; smdsEntity = SMDSEntity_Edge; } else if ( entity == "Triangles" ) { - gmfKwd = GmfRequiredTriangles; + gmfKwd = GmfRequiredTriangles; smdsEntity = SMDSEntity_Triangle; } else if ( entity == "Quadrilaterals" ) { - gmfKwd = GmfRequiredQuadrilaterals; + gmfKwd = GmfRequiredQuadrilaterals; smdsEntity = SMDSEntity_Quadrangle; } else { @@ -330,11 +309,11 @@ Driver_Mesh::Status DriverGMF_Write::Perform() // choose a TElem2IDMap TElem2IDMap* elem2IDMap = 0; - if ( smdsEntity == SMDSEntity_Quadrangle && nbOkElems != myMesh->NbFaces() ) + if ( smdsEntity == SMDSEntity_Quadrangle && nbOkElems != myMesh->NbFaces() ) elem2IDMap = & quad2IDMap; else if ( smdsEntity == SMDSEntity_Triangle && nbOkElems != myMesh->NbFaces() ) elem2IDMap = & tria2IDMap; - else if ( smdsEntity == SMDSEntity_Edge && nbOkElems != myMesh->NbEdges() ) + else if ( smdsEntity == SMDSEntity_Edge && nbOkElems != myMesh->NbEdges() ) elem2IDMap = & edge2IDMap; // write the group @@ -365,7 +344,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 +362,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 );