INT PAL 0052864: Assigned algorithms are not shown in Edit Mesh dialog

This commit is contained in:
imn 2015-09-07 16:12:52 +03:00
parent 44cfe3f661
commit 293c27e277

View File

@ -1503,7 +1503,8 @@ void SMESHGUI_MeshOp::onAlgoSelected( const int theIndex,
if ( isAccessibleDim( aDim - 1 ) ) { if ( isAccessibleDim( aDim - 1 ) ) {
if ( algoData && myIsOnGeometry ) { if ( algoData && myIsOnGeometry ) {
for (int i = aDim - 1; i >= SMESH::DIM_0D; i--) { for (int i = aDim - 1; i >= SMESH::DIM_0D; i--) {
if ( isAccessibleDim( i ) && currentHyp( i, Algo ) < 0 ) { if ( isAccessibleDim( i ) && ( currentHyp( i, Algo ) < 0 ||
algoData->InputTypes.isEmpty() ) ) {
myDlg->disableTab( i ); myDlg->disableTab( i );
setCurrentHyp(i, Algo, -1); setCurrentHyp(i, Algo, -1);
} }
@ -1539,10 +1540,6 @@ void SMESHGUI_MeshOp::onAlgoSelected( const int theIndex,
bool noCompatible = false; bool noCompatible = false;
for ( ; dim * dir <= lastDim * dir; dim += dir) for ( ; dim * dir <= lastDim * dir; dim += dir)
{ {
HypothesisData* nextAlgo = 0;
if ( myMaxShapeDim == SMESH::DIM_3D && a3DAlgo && dim == SMESH::DIM_2D ) {
nextAlgo = a3DAlgo;
}
if ( !isAccessibleDim( dim )) if ( !isAccessibleDim( dim ))
continue; continue;
if ( noCompatible ) { // the selected algo has no compatible ones if ( noCompatible ) { // the selected algo has no compatible ones
@ -1552,14 +1549,13 @@ void SMESHGUI_MeshOp::onAlgoSelected( const int theIndex,
algoByDim[ dim ] = 0; algoByDim[ dim ] = 0;
continue; continue;
} }
HypothesisData* nextAlgo = 0;
if ( myMaxShapeDim == SMESH::DIM_3D && a3DAlgo && dim == SMESH::DIM_2D ) {
nextAlgo = a3DAlgo;
}
// get currently selected algo // get currently selected algo
int algoIndex = currentHyp( dim, Algo ); int algoIndex = currentHyp( dim, Algo );
HypothesisData* curAlgo = hypData( dim, Algo, algoIndex ); HypothesisData* curAlgo = hypData( dim, Algo, algoIndex );
if ( curAlgo ) { // some algo selected
if ( !isCompatible( prevAlgo, curAlgo, Algo ))
curAlgo = 0;
}
// set new available algoritms
QString anCompareType = currentMeshTypeName(myDlg->currentMeshType()); QString anCompareType = currentMeshTypeName(myDlg->currentMeshType());
QString anCurrentCompareType = ""; QString anCurrentCompareType = "";
@ -1569,13 +1565,15 @@ void SMESHGUI_MeshOp::onAlgoSelected( const int theIndex,
anCurrentCompareType = (anCompareType == "HEXA" || anCompareType == "QUAD") ? "QUAD" : "TRIA"; anCurrentCompareType = (anCompareType == "HEXA" || anCompareType == "QUAD") ? "QUAD" : "TRIA";
nextAlgo = 0; nextAlgo = 0;
} }
// set new available algoritms
availableHyps( dim, Algo, anAvailable, myAvailableHypData[dim][Algo], prevAlgo, nextAlgo, anCurrentCompareType); availableHyps( dim, Algo, anAvailable, myAvailableHypData[dim][Algo], prevAlgo, nextAlgo, anCurrentCompareType);
HypothesisData* soleCompatible = 0; HypothesisData* soleCompatible = 0;
if ( anAvailable.count() == 1 ) if ( anAvailable.count() == 1 )
soleCompatible = myAvailableHypData[dim][Algo][0]; soleCompatible = myAvailableHypData[dim][Algo][0];
myDlg->tab( dim )->setAvailableHyps( Algo, anAvailable ); myDlg->tab( dim )->setAvailableHyps( Algo, anAvailable );
noCompatible = anAvailable.isEmpty(); noCompatible = anAvailable.isEmpty();
algoIndex = myAvailableHypData[dim][Algo].indexOf( curAlgo ); algoIndex = myAvailableHypData[dim][Algo].indexOf( curAlgo );
if ( !isSubmesh && algoIndex < 0 && soleCompatible && !forward && dim != SMESH::DIM_0D) { if ( !isSubmesh && algoIndex < 0 && soleCompatible && !forward && dim != SMESH::DIM_0D) {
// select the sole compatible algo // select the sole compatible algo
algoIndex = myAvailableHypData[dim][Algo].indexOf( soleCompatible ); algoIndex = myAvailableHypData[dim][Algo].indexOf( soleCompatible );