mirror of
https://git.salome-platform.org/gitpub/modules/smesh.git
synced 2025-03-07 01:55:36 +05:00
IMP 0019925 (Improve Precompute modes detection)
This commit is contained in:
parent
bd5974724b
commit
a351e17e75
@ -3051,7 +3051,7 @@ void SMESHGUI::initialize( CAM_Application* app )
|
|||||||
|
|
||||||
popupMgr()->insert( separator(), -1, 0 );
|
popupMgr()->insert( separator(), -1, 0 );
|
||||||
createPopupItem( 701, OB, mesh, "&& isComputable" ); // COMPUTE
|
createPopupItem( 701, OB, mesh, "&& isComputable" ); // COMPUTE
|
||||||
createPopupItem( 711, OB, mesh, "&& isComputable" ); // PRECOMPUTE
|
createPopupItem( 711, OB, mesh, "&& isComputable && isPreComputable" ); // PRECOMPUTE
|
||||||
createPopupItem( 214, OB, mesh_group ); // UPDATE
|
createPopupItem( 214, OB, mesh_group ); // UPDATE
|
||||||
createPopupItem( 900, OB, mesh_group ); // ADV_INFO
|
createPopupItem( 900, OB, mesh_group ); // ADV_INFO
|
||||||
createPopupItem( 902, OB, mesh ); // STD_INFO
|
createPopupItem( 902, OB, mesh ); // STD_INFO
|
||||||
|
@ -1617,7 +1617,7 @@ void SMESHGUI_PrecomputeOp::stopOperation()
|
|||||||
|
|
||||||
//================================================================================
|
//================================================================================
|
||||||
/*!
|
/*!
|
||||||
* \brief perform it's intention action: reinitialise dialog
|
* \brief reinitialize dialog after operaiton become active again
|
||||||
*/
|
*/
|
||||||
//================================================================================
|
//================================================================================
|
||||||
|
|
||||||
@ -1628,16 +1628,48 @@ void SMESHGUI_PrecomputeOp::resumeOperation()
|
|||||||
SMESHGUI_BaseComputeOp::resumeOperation();
|
SMESHGUI_BaseComputeOp::resumeOperation();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//================================================================================
|
||||||
|
/*!
|
||||||
|
* \brief perform it's intention action: reinitialise dialog
|
||||||
|
*/
|
||||||
|
//================================================================================
|
||||||
|
|
||||||
void SMESHGUI_PrecomputeOp::initDialog()
|
void SMESHGUI_PrecomputeOp::initDialog()
|
||||||
{
|
{
|
||||||
QList<int> modes;
|
QList<int> modes;
|
||||||
|
|
||||||
QMap<int, int> modeMap;
|
QMap<int, int> modeMap;
|
||||||
|
_PTR(SObject) pMesh = studyDS()->FindObjectID( myIObject->getEntry() );
|
||||||
|
getAssignedAlgos( pMesh, modeMap );
|
||||||
|
if ( modeMap.contains( SMESH::DIM_3D ) )
|
||||||
|
{
|
||||||
|
if ( modeMap.contains( SMESH::DIM_2D ) )
|
||||||
|
modes.append( SMESH::DIM_2D );
|
||||||
|
if ( modeMap.contains( SMESH::DIM_1D ) )
|
||||||
|
modes.append( SMESH::DIM_1D );
|
||||||
|
}
|
||||||
|
else if ( modeMap.contains( SMESH::DIM_2D ) )
|
||||||
|
{
|
||||||
|
if ( modeMap.contains( SMESH::DIM_1D ) )
|
||||||
|
modes.append( SMESH::DIM_1D );
|
||||||
|
}
|
||||||
|
|
||||||
|
myDlg->setPreviewModes( modes );
|
||||||
|
}
|
||||||
|
|
||||||
|
//================================================================================
|
||||||
|
/*!
|
||||||
|
* \brief detect asigned mesh algorithms
|
||||||
|
*/
|
||||||
|
//================================================================================
|
||||||
|
|
||||||
|
void SMESHGUI_PrecomputeOp::getAssignedAlgos(_PTR(SObject) theMesh,
|
||||||
|
QMap<int,int>& theModeMap)
|
||||||
|
{
|
||||||
_PTR(SObject) aHypRoot;
|
_PTR(SObject) aHypRoot;
|
||||||
_PTR(GenericAttribute) anAttr;
|
_PTR(GenericAttribute) anAttr;
|
||||||
int aPart = SMESH::Tag_RefOnAppliedAlgorithms;
|
int aPart = SMESH::Tag_RefOnAppliedAlgorithms;
|
||||||
|
if ( theMesh && theMesh->FindSubObject( aPart, aHypRoot ) )
|
||||||
_PTR(SObject) pMesh = studyDS()->FindObjectID( myIObject->getEntry() );
|
|
||||||
if ( pMesh && pMesh->FindSubObject( aPart, aHypRoot ) )
|
|
||||||
{
|
{
|
||||||
_PTR(ChildIterator) anIter =
|
_PTR(ChildIterator) anIter =
|
||||||
SMESH::GetActiveStudyDocument()->NewChildIterator( aHypRoot );
|
SMESH::GetActiveStudyDocument()->NewChildIterator( aHypRoot );
|
||||||
@ -1656,27 +1688,21 @@ void SMESHGUI_PrecomputeOp::initDialog()
|
|||||||
if ( CORBA::is_nil( aVar ) )
|
if ( CORBA::is_nil( aVar ) )
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
SMESH::SMESH_Algo_var algo = SMESH::SMESH_3D_Algo::_narrow( aVar );
|
for( int dim = SMESH::DIM_1D; dim <= SMESH::DIM_3D; dim++ )
|
||||||
if ( !algo->_is_nil() )
|
|
||||||
{
|
{
|
||||||
modeMap[ SMESH::DIM_1D ] = 0;
|
SMESH::SMESH_Algo_var algo;
|
||||||
modeMap[ SMESH::DIM_2D ] = 0;
|
switch(dim) {
|
||||||
|
case SMESH::DIM_1D: algo = SMESH::SMESH_1D_Algo::_narrow( aVar ); break;
|
||||||
|
case SMESH::DIM_2D: algo = SMESH::SMESH_2D_Algo::_narrow( aVar ); break;
|
||||||
|
case SMESH::DIM_3D: algo = SMESH::SMESH_3D_Algo::_narrow( aVar ); break;
|
||||||
|
default: break;
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
algo = SMESH::SMESH_2D_Algo::_narrow( aVar );
|
|
||||||
if ( !algo->_is_nil() )
|
if ( !algo->_is_nil() )
|
||||||
modeMap[ SMESH::DIM_1D ] = 0;
|
theModeMap[ dim ] = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if ( modeMap.contains( SMESH::DIM_1D ) )
|
|
||||||
modes.append( SMESH::DIM_1D );
|
|
||||||
if ( modeMap.contains( SMESH::DIM_2D ) )
|
|
||||||
modes.append( SMESH::DIM_2D );
|
|
||||||
|
|
||||||
myDlg->setPreviewModes( modes );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//================================================================================
|
//================================================================================
|
||||||
|
@ -136,6 +136,12 @@ public:
|
|||||||
|
|
||||||
virtual LightApp_Dialog* dlg() const;
|
virtual LightApp_Dialog* dlg() const;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* \brief returns map of assigned algorithms modes
|
||||||
|
*/
|
||||||
|
static void getAssignedAlgos(_PTR(SObject) theMesh,
|
||||||
|
QMap<int,int>& theModeMap);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual void startOperation();
|
virtual void startOperation();
|
||||||
virtual void stopOperation();
|
virtual void stopOperation();
|
||||||
|
@ -29,6 +29,7 @@
|
|||||||
#include "SMESHGUI_Utils.h"
|
#include "SMESHGUI_Utils.h"
|
||||||
#include "SMESHGUI_VTKUtils.h"
|
#include "SMESHGUI_VTKUtils.h"
|
||||||
#include "SMESHGUI_GEOMGenUtils.h"
|
#include "SMESHGUI_GEOMGenUtils.h"
|
||||||
|
#include "SMESHGUI_ComputeDlg.h"
|
||||||
|
|
||||||
#include <SMESH_Type.h>
|
#include <SMESH_Type.h>
|
||||||
#include <SMESH_Actor.h>
|
#include <SMESH_Actor.h>
|
||||||
@ -113,6 +114,7 @@ QVariant SMESHGUI_Selection::parameter( const int ind, const QString& p ) const
|
|||||||
else if ( p=="controlMode" ) val = QVariant( controlMode( ind ) );
|
else if ( p=="controlMode" ) val = QVariant( controlMode( ind ) );
|
||||||
else if ( p=="displayMode" ) val = QVariant( displayMode( ind ) );
|
else if ( p=="displayMode" ) val = QVariant( displayMode( ind ) );
|
||||||
else if ( p=="isComputable" ) val = QVariant( isComputable( ind ) );
|
else if ( p=="isComputable" ) val = QVariant( isComputable( ind ) );
|
||||||
|
else if ( p=="isPreComputable" ) val = QVariant( isPreComputable( ind ) );
|
||||||
else if ( p=="hasReference" ) val = QVariant( hasReference( ind ) );
|
else if ( p=="hasReference" ) val = QVariant( hasReference( ind ) );
|
||||||
else if ( p=="isImported" ) val = QVariant( isImported( ind ) );
|
else if ( p=="isImported" ) val = QVariant( isImported( ind ) );
|
||||||
else if ( p=="facesOrientationMode" ) val = QVariant( facesOrientationMode( ind ) );
|
else if ( p=="facesOrientationMode" ) val = QVariant( facesOrientationMode( ind ) );
|
||||||
@ -384,6 +386,23 @@ QVariant SMESHGUI_Selection::isComputable( int ind ) const
|
|||||||
return QVariant( false );
|
return QVariant( false );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function : isPreComputable
|
||||||
|
//purpose :
|
||||||
|
//=======================================================================
|
||||||
|
|
||||||
|
QVariant SMESHGUI_Selection::isPreComputable( int ind ) const
|
||||||
|
{
|
||||||
|
if ( ind >= 0 && ind < myTypes.count() && myTypes[ind] != "Unknown" )
|
||||||
|
{
|
||||||
|
QMap<int,int> modeMap;
|
||||||
|
_PTR(SObject) pMesh = SMESH::GetActiveStudyDocument()->FindObjectID( entry( ind ).toLatin1().data() );
|
||||||
|
SMESHGUI_PrecomputeOp::getAssignedAlgos( pMesh, modeMap );
|
||||||
|
return QVariant( modeMap.size() > 1 );
|
||||||
|
}
|
||||||
|
return QVariant( false );
|
||||||
|
}
|
||||||
|
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
//function : hasReference
|
//function : hasReference
|
||||||
//purpose :
|
//purpose :
|
||||||
|
@ -54,6 +54,7 @@ public:
|
|||||||
virtual bool isAutoColor( int ) const;
|
virtual bool isAutoColor( int ) const;
|
||||||
virtual int numberOfNodes( int ) const;
|
virtual int numberOfNodes( int ) const;
|
||||||
virtual QVariant isComputable( int ) const;
|
virtual QVariant isComputable( int ) const;
|
||||||
|
virtual QVariant isPreComputable( int ) const;
|
||||||
virtual QVariant hasReference( int ) const;
|
virtual QVariant hasReference( int ) const;
|
||||||
virtual QVariant isVisible( int ) const;
|
virtual QVariant isVisible( int ) const;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user