X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FSMESH%2FSMESH_Mesh.cxx;h=22fd2e44e51e28713d2213b04adf2bccfaa680db;hb=751d20eca2ea1e2ef9e7f71f5a6703d775922467;hp=2616e0b5f368b3b2c58b8d576a9590f7351ca54e;hpb=1067ffa6e7e5c394e3a1b17219d8b355a57607cd;p=modules%2Fsmesh.git diff --git a/src/SMESH/SMESH_Mesh.cxx b/src/SMESH/SMESH_Mesh.cxx index 2616e0b5f..22fd2e44e 100644 --- a/src/SMESH/SMESH_Mesh.cxx +++ b/src/SMESH/SMESH_Mesh.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2013 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 @@ -103,13 +103,12 @@ SMESH_Mesh::SMESH_Mesh(int theLocalId, _studyId = theStudyId; _gen = theGen; _myDocument = theDocument; - _idDoc = theDocument->NewMesh(theIsEmbeddedMode); - _myMeshDS = theDocument->GetMesh(_idDoc); + _myMeshDS = theDocument->NewMesh(theIsEmbeddedMode,theLocalId); _isShapeToMesh = false; _isAutoColor = false; _isModified = false; _shapeDiagonal = 0.0; - _callUp = 0; + _callUp = NULL; _myMeshDS->ShapeToMesh( PseudoShape() ); } @@ -122,7 +121,6 @@ SMESH_Mesh::SMESH_Mesh(int theLocalId, SMESH_Mesh::SMESH_Mesh(): _id(-1), _studyId(-1), - _idDoc(-1), _groupId( 0 ), _nbSubShapes( 0 ), _isShapeToMesh( false ), @@ -660,8 +658,6 @@ SMESH_Hypothesis::Hypothesis_Status } HasModificationsToDiscard(); // to reset _isModified flag if a mesh becomes empty - GetMeshDS()->Modified(); - if(MYDEBUG) subMesh->DumpAlgoState(true); if(MYDEBUG) SCRUTE(ret); return ret; @@ -735,8 +731,6 @@ SMESH_Hypothesis::Hypothesis_Status HasModificationsToDiscard(); // to reset _isModified flag if mesh become empty - GetMeshDS()->Modified(); - if(MYDEBUG) subMesh->DumpAlgoState(true); if(MYDEBUG) SCRUTE(ret); return ret; @@ -924,10 +918,9 @@ SMESH_subMesh *SMESH_Mesh::GetSubMesh(const TopoDS_Shape & aSubShape) if ( it.More() ) { index = _myMeshDS->AddCompoundSubmesh( aSubShape, it.Value().ShapeType() ); - if ( index > _nbSubShapes ) _nbSubShapes = index; // not to create sm for this group again - // fill map of Ancestors - fillAncestorsMap(aSubShape); + while ( _nbSubShapes < index ) + fillAncestorsMap( _myMeshDS->IndexToShape( ++_nbSubShapes )); } } // if ( !index ) @@ -1262,7 +1255,7 @@ void SMESH_Mesh::ExportMED(const char * file, myWriter.SetFile ( file, MED::EVersion(theVersion) ); myWriter.SetMesh ( meshPart ? (SMESHDS_Mesh*) meshPart : _myMeshDS ); if ( !theMeshName ) - myWriter.SetMeshId ( _idDoc ); + myWriter.SetMeshId ( _id ); else { myWriter.SetMeshId ( -1 ); myWriter.SetMeshName( theMeshName ); @@ -1355,7 +1348,7 @@ void SMESH_Mesh::ExportDAT(const char * file, DriverDAT_W_SMDS_Mesh myWriter; myWriter.SetFile( file ); myWriter.SetMesh( meshPart ? (SMESHDS_Mesh*) meshPart : _myMeshDS ); - myWriter.SetMeshId(_idDoc); + myWriter.SetMeshId(_id); myWriter.Perform(); } @@ -1372,7 +1365,7 @@ void SMESH_Mesh::ExportUNV(const char * file, DriverUNV_W_SMDS_Mesh myWriter; myWriter.SetFile( file ); myWriter.SetMesh( meshPart ? (SMESHDS_Mesh*) meshPart : _myMeshDS ); - myWriter.SetMeshId(_idDoc); + myWriter.SetMeshId(_id); // myWriter.SetGroups(_mapGroup); if ( !meshPart ) @@ -1405,7 +1398,7 @@ void SMESH_Mesh::ExportSTL(const char * file, myWriter.SetFile( file ); myWriter.SetIsAscii( isascii ); myWriter.SetMesh( meshPart ? (SMESHDS_Mesh*) meshPart : _myMeshDS); - myWriter.SetMeshId(_idDoc); + myWriter.SetMeshId(_id); myWriter.Perform(); } @@ -1508,6 +1501,18 @@ int SMESH_Mesh::NbTriangles(SMDSAbs_ElementOrder order) const throw(SALOME_Excep return _myMeshDS->GetMeshInfo().NbTriangles(order); } +//================================================================================ +/*! + * \brief Return number of biquadratic triangles in the mesh + */ +//================================================================================ + +int SMESH_Mesh::NbBiQuadTriangles() const throw(SALOME_Exception) +{ + Unexpect aCatch(SalomeException); + return _myMeshDS->GetMeshInfo().NbBiQuadTriangles(); +} + //================================================================================ /*! * \brief Return the number nodes faces in the mesh