- case SMESHDS_Hypothesis::ALGO_1D: algoDim=1; break;
- case SMESHDS_Hypothesis::ALGO_2D: algoDim=2; break;
- case SMESHDS_Hypothesis::ALGO_3D: algoDim=3; break;
- default: algoDim=0; break;
+ const SMESHDS_Hypothesis *anHyp = *it;
+ hypType = anHyp->GetType();
+ //SCRUTE(hypType);
+ if (hypType > SMESHDS_Hypothesis::PARAM_ALGO)
+ {
+ switch (hypType)
+ {
+ case SMESHDS_Hypothesis::ALGO_1D:
+ algoDim = 1;
+ break;
+ case SMESHDS_Hypothesis::ALGO_2D:
+ algoDim = 2;
+ break;
+ case SMESHDS_Hypothesis::ALGO_3D:
+ algoDim = 3;
+ break;
+ default:
+ algoDim = 0;
+ break;
+ }
+ //SCRUTE(algoDim);
+ //SCRUTE(shapeDim);
+ //SCRUTE(typeOfShape);
+ if (shapeDim == algoDim) // count only algos of shape dim.
+ { // discard algos for subshapes
+ hypId = anHyp->GetID(); // (of lower dim.)
+ ASSERT(_mapAlgo.find(hypId) != _mapAlgo.end());
+ SMESH_Algo *anAlgo = _mapAlgo[hypId];
+ //SCRUTE(anAlgo->GetShapeType());
+ //if (anAlgo->GetShapeType() == typeOfShape)
+ if ((anAlgo->GetShapeType()) & (1 << typeOfShape))
+ { // only specific TopoDS_Shape
+ nb_algo++;
+ theHyp = anHyp;
+ }
+ }
+ }
+ if (nb_algo > 1) return NULL; // more than one algo
+ it++;