-// Copyright (C) 2007-2014 CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2016 CEA/DEN, EDF R&D, OPEN CASCADE
//
// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
#include <string>
// Qt includes
-#include <QMap>
#include <QDir>
-//#include <QList>
// Other includes
#endif
#ifdef _DEBUG_
-static int MYDEBUG = 1;
+static int MYDEBUG = 0;
#else
static int MYDEBUG = 0;
#endif
void InitAvailableHypotheses()
{
SUIT_OverrideCursor wc;
- if (myHypothesesMap.empty() && myAlgorithmsMap.empty()) {
+ if ( myHypothesesMap.empty() && myAlgorithmsMap.empty() )
+ {
// Resource manager
SUIT_ResourceMgr* resMgr = SMESHGUI::resourceMgr();
if (!resMgr) return;
return aHypData;
}
+ //================================================================================
+ /*!
+ * \brief Return the HypothesisData holding a name of a group of hypotheses
+ * a given hypothesis belongs to
+ */
+ //================================================================================
+
+ HypothesisData* GetGroupTitle( const HypothesisData* hyp, const bool isAlgo )
+ {
+ static std::vector< std::vector< HypothesisData > > theGroups;
+ if ( theGroups.empty() )
+ {
+ theGroups.resize(14); // 14: isAlgo * 10 + dim
+
+ QString dummyS("GROUP");
+ QList<int> dummyIL; dummyIL << 1;
+ QStringList dummySL;
+ HypothesisData group( dummyS,dummyS,dummyS,dummyS,dummyS,dummyS,dummyS,-1,-1,
+ dummyIL, 0, dummySL,dummySL,dummySL,dummySL );
+ // no group
+ int key = 0;
+ theGroups[ key ].push_back( group );
+
+ // 1D algo
+ key = 11;
+ // 0: Basic
+ group.Label = "GROUP:" + QObject::tr( "SMESH_1D_ALGO_GROUP_BASIC" );
+ theGroups[ key ].push_back( group );
+ // 1: Advanced
+ group.Label = "GROUP:" + QObject::tr( "SMESH_1D_ALGO_GROUP_ADVANCED" );
+ theGroups[ key ].push_back( group );
+
+ // 1D hypotheses
+ key = 01;
+ // 0: Basic
+ group.Label = "GROUP:" + QObject::tr( "SMESH_1D_HYP_GROUP_BASIC" );
+ theGroups[ key ].push_back( group );
+ // 1: Progression
+ group.Label = "GROUP:" + QObject::tr( "SMESH_1D_HYP_GROUP_PROGRESSION" );
+ theGroups[ key ].push_back( group );
+ // 2: Advanced
+ group.Label = "GROUP:" + QObject::tr( "SMESH_1D_HYP_GROUP_ADVANCED" );
+ theGroups[ key ].push_back( group );
+
+ // 2D algo
+ key = 12;
+ // 0: Regular
+ group.Label = "GROUP:" + QObject::tr( "SMESH_2D_ALGO_GROUP_REGULAR" );
+ theGroups[ key ].push_back( group );
+ // 1: Free
+ group.Label = "GROUP:" + QObject::tr( "SMESH_2D_ALGO_GROUP_FREE" );
+ theGroups[ key ].push_back( group );
+ // 2: Advanced
+ group.Label = "GROUP:" + QObject::tr( "SMESH_2D_ALGO_GROUP_ADVANCED" );
+ theGroups[ key ].push_back( group );
+
+ // 3D algo
+ key = 13;
+ // 0: Regular
+ group.Label = "GROUP:" + QObject::tr( "SMESH_3D_ALGO_GROUP_REGULAR" );
+ theGroups[ key ].push_back( group );
+ // 1: Free
+ group.Label = "GROUP:" + QObject::tr( "SMESH_3D_ALGO_GROUP_FREE" );
+ theGroups[ key ].push_back( group );
+ // 2: Advanced
+ group.Label = "GROUP:" + QObject::tr( "SMESH_3D_ALGO_GROUP_ADVANCED" );
+ theGroups[ key ].push_back( group );
+ }
+
+ size_t key = 0, groupID = 0;
+ if ( hyp && !hyp->Dim.isEmpty() )
+ {
+ key = hyp->Dim[0] + isAlgo * 10;
+ groupID = hyp->GroupID;
+ }
+
+ if ( key < theGroups.size() && !theGroups[ key ].empty() )
+ {
+ std::vector< HypothesisData > & group = theGroups[ key ];
+ return & ( groupID < group.size() ? group[ groupID ] : group.back() );
+ }
+ return & theGroups[ 0 ][ 0 ];
+ }
+
bool IsAvailableHypothesis(const HypothesisData* algoData,
const QString& hypType,
bool& isAuxiliary)
return false;
if ( algoData->BasicHypos.contains( hypType ))
return true;
- if ( algoData->OptionalHypos.contains( hypType)) {
+ if ( algoData->OptionalHypos.contains( hypType )) {
isAuxiliary = true;
return true;
}
return SMESH::SMESH_Hypothesis::_nil();
}
+
bool IsApplicable(const QString& aHypType,
GEOM::GEOM_Object_ptr theGeomObject,
const bool toCheckAll)
{
+ if ( getenv("NO_LIMIT_ALGO_BY_SHAPE")) // allow a workaround for a case if
+ return true; // IsApplicable() returns false due to a bug
+
HypothesisData* aHypData = GetHypothesisData(aHypType);
QString aServLib = aHypData->ServerLibName;
return SMESHGUI::GetSMESHGen()->IsApplicable( aHypType.toLatin1().data(),
{
SMESH_Hypothesis_var hypo = SMESH_Hypothesis::_narrow( SObjectToObject( aHypObj ) );
SObjectList meshList = GetMeshesUsingAlgoOrHypothesis( hypo );
- for( int i = 0; i < meshList.size(); i++ )
+ for( size_t i = 0; i < meshList.size(); i++ )
RemoveHypothesisOrAlgorithmOnMesh( meshList[ i ], hypo );
}
}
QString GetMessageOnAlgoStateErrors(const algo_error_array& errors)
{
QString resMsg; // PAL14861 = QObject::tr("SMESH_WRN_MISSING_PARAMETERS") + ":\n";
- for ( int i = 0; i < errors.length(); ++i ) {
+ for ( size_t i = 0; i < errors.length(); ++i ) {
const SMESH::AlgoStateError & error = errors[ i ];
const bool hasAlgo = ( strlen( error.algoName ) != 0 );
QString msg;