X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2FSMESH_I%2FSMESH_MeshEditor_i.cxx;h=ac397370243607201fe0859315ab8fbf154c4358;hb=da61389f82fbe9af224568dbc121ae92833446cf;hp=4c034b99c814a093e75ebe3077c425e0c04e6ff3;hpb=faf45035fc7589def5fefb624752f48c989d3a6b;p=modules%2Fsmesh.git diff --git a/src/SMESH_I/SMESH_MeshEditor_i.cxx b/src/SMESH_I/SMESH_MeshEditor_i.cxx index 4c034b99c..ac3973702 100644 --- a/src/SMESH_I/SMESH_MeshEditor_i.cxx +++ b/src/SMESH_I/SMESH_MeshEditor_i.cxx @@ -94,7 +94,7 @@ namespace { myPreviewType = previewElements; } //!< Destructor - virtual ~TPreviewMesh() { delete _myMeshDS; } + virtual ~TPreviewMesh() { delete _myMeshDS; _myMeshDS = 0; } //!< Copy a set of elements void Copy(const TIDSortedElemSet & theElements, TIDSortedElemSet& theCopyElements, @@ -169,7 +169,8 @@ namespace { SMESH_Mesh* myMesh; string myMeshPartIOR; //!< Constructor - TSearchersDeleter(): SMESH_subMeshEventListener( false ), // won't be deleted by submesh + TSearchersDeleter(): SMESH_subMeshEventListener( false, // won't be deleted by submesh + "SMESH_MeshEditor_i::TSearchersDeleter"), myMesh(0) {} //!< Delete theNodeSearcher static void Delete() @@ -530,12 +531,14 @@ CORBA::Long SMESH_MeshEditor_i::RemoveOrphanNodes() for ( int i = 0; i < seq.size(); i++ ) IdList.push_back( seq[i] ); - bool ret = anEditor.Remove( IdList, true ); + int nbNodesBefore = myMesh->NbNodes(); + anEditor.Remove( IdList, true ); myMesh->GetMeshDS()->Modified(); if ( IdList.size() ) myMesh->SetIsModified( true ); + int nbNodesAfter = myMesh->NbNodes(); - return ret; + return nbNodesBefore - nbNodesAfter; } //============================================================================= @@ -3000,11 +3003,19 @@ SMESH_MeshEditor_i::mirror(TIDSortedElemSet & theElements, anEditor.Transform (*workElements, aTrsf, theCopy, theMakeGroups, theTargetMesh); if(theCopy || myPreviewMode) - storeResult(anEditor); - else + storeResult(anEditor); // store preview data or new elements + + if ( !myPreviewMode ) { - myMesh->SetIsModified( true ); - myMesh->GetMeshDS()->Modified(); + if ( theTargetMesh ) + { + theTargetMesh->GetMeshDS()->Modified(); + } + else + { + myMesh->GetMeshDS()->Modified(); + myMesh->SetIsModified( true ); + } } return theMakeGroups ? getGroups(groupIds.get()) : 0; } @@ -3256,10 +3267,18 @@ SMESH_MeshEditor_i::translate(TIDSortedElemSet & theElements, if(theCopy || myPreviewMode) storeResult(anEditor); - else + + if ( !myPreviewMode ) { - myMesh->GetMeshDS()->Modified(); - myMesh->SetIsModified( true ); + if ( theTargetMesh ) + { + theTargetMesh->GetMeshDS()->Modified(); + } + else + { + myMesh->GetMeshDS()->Modified(); + myMesh->SetIsModified( true ); + } } return theMakeGroups ? getGroups(groupIds.get()) : 0; @@ -3498,10 +3517,18 @@ SMESH_MeshEditor_i::rotate(TIDSortedElemSet & theElements, if(theCopy || myPreviewMode) storeResult(anEditor); - else + + if ( !myPreviewMode ) { - myMesh->GetMeshDS()->Modified(); - myMesh->SetIsModified( true ); + if ( theTargetMesh ) + { + theTargetMesh->GetMeshDS()->Modified(); + } + else + { + myMesh->GetMeshDS()->Modified(); + myMesh->SetIsModified( true ); + } } return theMakeGroups ? getGroups(groupIds.get()) : 0; @@ -3769,11 +3796,20 @@ SMESH_MeshEditor_i::scale(SMESH::SMESH_IDSource_ptr theObject, if(theCopy || myPreviewMode ) storeResult(anEditor); - else + + if ( !myPreviewMode ) { - myMesh->GetMeshDS()->Modified(); - myMesh->SetIsModified( true ); + if ( theTargetMesh ) + { + theTargetMesh->GetMeshDS()->Modified(); + } + else + { + myMesh->GetMeshDS()->Modified(); + myMesh->SetIsModified( true ); + } } + return theMakeGroups ? getGroups(groupIds.get()) : 0; } @@ -4118,6 +4154,8 @@ void SMESH_MeshEditor_i::MergeEqualElements() ::SMESH_MeshEditor anEditor( myMesh ); anEditor.MergeEqualElements(); + myMesh->GetMeshDS()->Modified(); + TPythonDump() << this << ".MergeEqualElements()"; }