IPAL16934: Selection works incorrectly if Source and Target Vertices in Projection 1D are the same vertex.

1) BUG: impossible to use shared vertices for vertex association in Projection Source hyps
2) Regression: Order of Sub-meshes dialog dialog does not appear when a sub-mesh is created
This commit is contained in:
eap 2014-11-19 16:18:58 +03:00
parent b9986eb294
commit b73d2603ed
5 changed files with 28 additions and 18 deletions

View File

@ -92,14 +92,14 @@
#include "SMESHGUI_Utils.h" #include "SMESHGUI_Utils.h"
#include "SMESHGUI_VTKUtils.h" #include "SMESHGUI_VTKUtils.h"
#include <SMESH_version.h> #include "SMESH_version.h"
#include "SMESH_ControlsDef.hxx" #include "SMESH_ControlsDef.hxx"
#include <SMESH_Actor.h> #include "SMESH_Actor.h"
#include <SMESH_ActorUtils.h> #include "SMESH_ActorUtils.h"
#include <SMESH_Client.hxx> #include "SMESH_Client.hxx"
#include <SMESH_ScalarBarActor.h> #include "SMESH_ScalarBarActor.h"
#include <SMESH_TypeFilter.hxx> #include "SMESH_TypeFilter.hxx"
// SALOME GUI includes // SALOME GUI includes
#include <SalomeApp_Application.h> #include <SalomeApp_Application.h>

View File

@ -26,15 +26,15 @@
#include "SMESHGUI_MeshOp.h" #include "SMESHGUI_MeshOp.h"
#include "SMESHGUI.h" #include "SMESHGUI.h"
#include "SMESHGUI_MeshDlg.h"
#include "SMESHGUI_ShapeByMeshDlg.h"
#include "SMESHGUI_HypothesesUtils.h"
#include "SMESHGUI_Hypotheses.h"
#include "SMESHGUI_Utils.h"
#include "SMESHGUI_GEOMGenUtils.h" #include "SMESHGUI_GEOMGenUtils.h"
#include "SMESHGUI_Hypotheses.h"
#include <SMESH_TypeFilter.hxx> #include "SMESHGUI_HypothesesUtils.h"
#include <SMESH_NumberFilter.hxx> #include "SMESHGUI_MeshDlg.h"
#include "SMESHGUI_Operations.h"
#include "SMESHGUI_ShapeByMeshDlg.h"
#include "SMESHGUI_Utils.h"
#include "SMESH_NumberFilter.hxx"
#include "SMESH_TypeFilter.hxx"
// SALOME GEOM includes // SALOME GEOM includes
#include <GEOM_SelectionFilter.h> #include <GEOM_SelectionFilter.h>
@ -2408,7 +2408,7 @@ bool SMESHGUI_MeshOp::checkSubMeshConcurrency(SMESH::SMESH_Mesh_ptr mesh,
myDlg->setEnabled( false ); // disactivate selection myDlg->setEnabled( false ); // disactivate selection
selectionMgr()->clearFilters(); selectionMgr()->clearFilters();
selectObject( meshSO ); selectObject( meshSO );
SMESHGUI::GetSMESHGUI()->OnGUIEvent( 713 ); // MESH_ORDER SMESHGUI::GetSMESHGUI()->OnGUIEvent( SMESHOp::OpMeshOrder ); // MESH_ORDER
qApp->processEvents(); qApp->processEvents();
myDlg->setEnabled( true ); myDlg->setEnabled( true );

View File

@ -1320,7 +1320,17 @@ bool StdMeshers_Prism_3D::compute(const Prism_3D::TPrismTopo& thePrism)
// clear data // clear data
myBotToColumnMap.clear(); myBotToColumnMap.clear();
myBlock.Clear(); myBlock.Clear();
// update state of sub-meshes (mostly in order to erase improper errors)
SMESH_subMesh* sm = myHelper->GetMesh()->GetSubMesh( thePrism.myShape3D );
SMESH_subMeshIteratorPtr smIt = sm->getDependsOnIterator(/*includeSelf=*/false);
while ( smIt->more() )
{
sm = smIt->next();
sm->GetComputeError().reset();
sm->ComputeStateEngine( SMESH_subMesh::CHECK_COMPUTE_STATE );
}
return true; return true;
} }

View File

@ -550,7 +550,7 @@ bool StdMeshers_ProjectionUtils::FindSubShapeAssociation(const TopoDS_Shape& the
// ---------------------------------------------------------------------- // ----------------------------------------------------------------------
case TopAbs_EDGE: { // TopAbs_EDGE case TopAbs_EDGE: { // TopAbs_EDGE
// ---------------------------------------------------------------------- // ----------------------------------------------------------------------
if ( theMap.Extent() != 2 ) if ( theMap.Extent() != 1 )
RETURN_BAD_RESULT("Wrong map extent " << theMap.Extent() ); RETURN_BAD_RESULT("Wrong map extent " << theMap.Extent() );
TopoDS_Edge edge1 = TopoDS::Edge( theShape1 ); TopoDS_Edge edge1 = TopoDS::Edge( theShape1 );
TopoDS_Edge edge2 = TopoDS::Edge( theShape2 ); TopoDS_Edge edge2 = TopoDS::Edge( theShape2 );

View File

@ -408,7 +408,7 @@ bool StdMeshersGUI_StdHypothesisCreator::checkParams( QString& msg ) const
srcV = w1->GetValue(); srcV = w1->GetValue();
tgtV = w2->GetValue(); tgtV = w2->GetValue();
ok = (( srcV.isEmpty() && tgtV.isEmpty() ) || ok = (( srcV.isEmpty() && tgtV.isEmpty() ) ||
( !srcV.isEmpty() && !tgtV.isEmpty() && srcV != tgtV )); ( !srcV.isEmpty() && !tgtV.isEmpty() /*&& srcV != tgtV*/ ));
if ( !ok ) { if ( !ok ) {
w1->SetObject( CORBA::Object::_nil() ); w1->SetObject( CORBA::Object::_nil() );
w2->SetObject( CORBA::Object::_nil() ); w2->SetObject( CORBA::Object::_nil() );