Additional fix for the bug 0020944: EDF 1464 SMESH: detection of over-constrained elements of a mesh.

This commit is contained in:
ana 2011-12-15 14:35:34 +00:00
parent 6665afd414
commit 44a302322a
3 changed files with 38 additions and 8 deletions

View File

@ -72,6 +72,7 @@
<parameter name="DisplayMode" value="true" />
<parameter name="auto_update" value="true" />
<parameter name="update_limit" value="500000" />
<parameter name="display_entity" value="true" />
<parameter name="display_mode" value="1" />
<parameter name="auto_groups" value="false"/>
<parameter name="show_result_notification" value="2"/>

View File

@ -125,6 +125,7 @@ SMESH_ActorDef::SMESH_ActorDef()
myTimeStamp = vtkTimeStamp::New();
myIsPointsVisible = false;
myIsEntityModeCache = false;
myIsShrinkable = false;
myIsShrunk = false;
@ -431,6 +432,7 @@ SMESH_ActorDef::SMESH_ActorDef()
return;
myEntityMode = eAllEntity;
myEntityModeCache = eAllEntity;
// Clipping planes
myImplicitBoolean = vtkImplicitBoolean::New();
@ -828,28 +830,47 @@ SetControlMode(eControl theMode,
}
if(theCheckEntityMode) {
if(myControlActor == my1DActor)
if(myControlActor == my1DActor) {
if (!myIsEntityModeCache){
myEntityModeCache = GetEntityMode();
myIsEntityModeCache=true;
}
SetEntityMode(eEdges);
}
else if(myControlActor == my2DActor) {
switch(myControlMode) {
case eLength2D:
case eFreeEdges:
case eFreeFaces:
case eMultiConnection2D:
//SetEntityMode(eEdges);
if (!myIsEntityModeCache){
myEntityModeCache = GetEntityMode();
myIsEntityModeCache=true;
}
SetEntityMode(eFaces);
break;
default:
if (!myIsEntityModeCache){
myEntityModeCache = GetEntityMode();
myIsEntityModeCache=true;
}
SetEntityMode(eFaces);
}
}else if(myControlActor == my3DActor)
}else if(myControlActor == my3DActor) {
if (!myIsEntityModeCache){
myEntityModeCache = GetEntityMode();
myIsEntityModeCache=true;
}
SetEntityMode(eVolumes);
}
}
}
else {
if(theCheckEntityMode)
myEntityMode = eAllEntity;
if(theCheckEntityMode){
myEntityMode = myEntityModeCache;
myIsEntityModeCache = false;
}
myFunctor.reset();
}
@ -857,6 +878,7 @@ SetControlMode(eControl theMode,
myTimeStamp->Modified();
Modified();
Update();
}
@ -1611,6 +1633,11 @@ void SMESH_ActorDef::Update(){
if(myIsFacesOriented){
SetFacesOriented(myIsFacesOriented);
}
if(myVisualObj->GetEntitiesFlag()) {
myEntityMode |= myVisualObj->GetEntitiesState();
}
SetEntityMode(GetEntityMode());
SetVisibility(GetVisibility());

View File

@ -262,6 +262,8 @@ class SMESH_ActorDef : public SMESH_Actor
unsigned int myEntityMode;
unsigned int myEntityState;
unsigned int myEntityModeCache;
bool myIsEntityModeCache;
bool myIsPointsVisible;
bool myIsShrinkable;