SMESH::SetName( aMeshSO, QFileInfo(filename).fileName() );
anEntryList.append( aMeshSO->GetID().c_str() );
-
- // obj has been published in study. Its refcount has been incremented.
- // It is safe to decrement its refcount
- // so that it will be destroyed when the entry in study will be removed
- aMeshes[i]->UnRegister();
}
else {
isEmpty = true;
}
}
- void AutoColor(){
+ void AutoColor()
+ {
SALOME_ListIO selected;
SalomeApp_Application* app = dynamic_cast< SalomeApp_Application* >( SUIT_Session::session()->activeApplication() );
if( !app )
if( aMainObject->_is_nil() )
return;
+ SUIT_OverrideCursor wc;
+
aMainObject->SetAutoColor( true ); // mesh groups are re-colored here
QList<SALOMEDS::Color> aReservedColors;
SALOMEDS::Color aColor = SMESHGUI::getUniqueColor( aReservedColors );
aReservedColors.append( aColor );
#endif // SIMPLE_AUTOCOLOR
+ aGroupObject->SetColor( aColor );
_PTR(SObject) aGroupSObject = SMESH::FindSObject(aGroupObject);
if (aGroupSObject) {
aSO = aRefSObject; // Delete main Object instead of reference
listSO.push_back( aSO );
- std::list< _PTR(SObject) >::iterator itSO = listSO.begin();
+ std::list< _PTR(SObject) >::iterator itSO = --listSO.end();
for ( ; itSO != listSO.end(); ++itSO ) {
_PTR(ChildIterator) it = aStudy->NewChildIterator( *itSO );
for (it->InitEx(false); it->More(); it->Next())
if ( !SO ) continue;
std::string anEntry = SO->GetID();
- /** Erase graphical object **/
+ /** Erase graphical object and remove all its data **/
if(SO->FindAttribute(anAttr, "AttributeIOR")) {
SMESH::RemoveVisualObjectWithActors( anEntry.c_str(), true);
- // ViewManagerList aViewMenegers = anApp->viewManagers();
- // ViewManagerList::const_iterator it = aViewMenegers.begin();
- // for( ; it != aViewMenegers.end(); it++) {
- // SUIT_ViewManager* vm = *it;
- // int nbSf = vm ? vm->getViewsCount() : 0;
- // if(vm) {
- // QVector<SUIT_ViewWindow*> aViews = vm->getViews();
- // for(int i = 0; i < nbSf; i++){
- // SUIT_ViewWindow *sf = aViews[i];
- // if(SMESH_Actor* anActor = SMESH::FindActorByEntry(sf,anEntry.c_str())){
- // SMESH::RemoveActor(sf,anActor);
- // }
- // }
- // }
- // }
}
/** Remove an object from data structures **/
SMESH::SMESH_GroupBase_var aGroup = SMESH::SMESH_GroupBase::_narrow( SMESH::SObjectToObject( SO ));
*/
//=============================================================================
bool SMESHGUI::automaticUpdate( SMESH::SMESH_Mesh_ptr theMesh,
- int* entities, bool* limitExceeded )
+ int* entities, bool* limitExceeded, int* hidden )
{
SUIT_ResourceMgr* resMgr = SUIT_Session::session()->resourceMgr();
if ( !resMgr )
long requestedSize = theMesh->NbElements();
*entities = SMESH_Actor::eAllEntity;
+ *hidden = 0;
bool exceeded = updateLimit > 0 && requestedSize > updateLimit;
long total = 0;
if ( nbOdElems > 0 ) {
- if ( total + nbOdElems > updateLimit )
+ if ( total + nbOdElems > updateLimit ) {
*entities = *entities & ~SMESH_Actor::e0DElements;
+ *hidden = *hidden | SMESH_Actor::e0DElements;
+ }
else
exceeded = false;
}
total += nbOdElems;
if ( nbEdges > 0 ) {
- if ( total + nbEdges > updateLimit )
+ if ( total + nbEdges > updateLimit ) {
*entities = *entities & ~SMESH_Actor::eEdges;
+ *hidden = *hidden | SMESH_Actor::eEdges;
+ }
else
exceeded = false;
}
total += nbEdges;
if ( nbFaces > 0 ) {
- if ( total + nbFaces > updateLimit )
+ if ( total + nbFaces > updateLimit ) {
*entities = *entities & ~SMESH_Actor::eFaces;
+ *hidden = *hidden | SMESH_Actor::eFaces;
+ }
else
exceeded = false;
}
total += nbFaces;
if ( nbVolumes > 0 ) {
- if ( total + nbVolumes > updateLimit )
+ if ( total + nbVolumes > updateLimit ) {
*entities = *entities & ~SMESH_Actor::eVolumes;
+ *hidden = *hidden | SMESH_Actor::eVolumes;
+ }
else
exceeded = false;
}
total += nbVolumes;
if ( nbBalls > 0 ) {
- if ( total + nbBalls > updateLimit )
+ if ( total + nbBalls > updateLimit ) {
*entities = *entities & ~SMESH_Actor::eBallElem;
+ *hidden = *hidden | SMESH_Actor::eBallElem;
+ }
else
exceeded = false;
}
if (vtkwnd) {
SALOME_ListIteratorOfListIO It( to_process );
for ( ; It.More(); It.Next()) {
- MESSAGE("---");
+ MESSAGE("---");
Handle(SALOME_InteractiveObject) IOS = It.Value();
if (IOS->hasEntry()) {
- MESSAGE("---");
+ MESSAGE("---");
if (!SMESH::UpdateView(anAction, IOS->getEntry())) {
SMESHGUI::GetSMESHGUI()->EmitSignalVisibilityChanged();
break; // PAL16774 (Crash after display of many groups)
// PAL13338 + PAL15161 -->
if ( ( theCommandID==301 || theCommandID==302 ) && !checkLock(aStudy)) {
- MESSAGE("anAction = SMESH::eDisplayOnly");
+ MESSAGE("anAction = SMESH::eDisplayOnly");
SMESH::UpdateView();
SMESHGUI::GetSMESHGUI()->EmitSignalVisibilityChanged();
}
}
case 501:
case 502:
+ case 503:
+ case 504:
+ case 505:
{
- int page = theCommandID == 501 ? SMESHGUI_MeasureDlg::MinDistance : SMESHGUI_MeasureDlg::BoundingBox;
+ int page = SMESHGUI_MeasureDlg::MinDistance;
+ if ( theCommandID == 502 )
+ page = SMESHGUI_MeasureDlg::BoundingBox;
+ else if ( theCommandID == 503 )
+ page = SMESHGUI_MeasureDlg::Length;
+ else if ( theCommandID == 504 )
+ page = SMESHGUI_MeasureDlg::Area;
+ else if ( theCommandID == 505 )
+ page = SMESHGUI_MeasureDlg::Volume;
+
EmitSignalDeactivateDialog();
SMESHGUI_MeasureDlg* dlg = new SMESHGUI_MeasureDlg( SMESHGUI::desktop(), page );
dlg->show();
createSMESHAction( 501, "MEASURE_MIN_DIST", "ICON_MEASURE_MIN_DIST" );
createSMESHAction( 502, "MEASURE_BND_BOX", "ICON_MEASURE_BND_BOX" );
+ createSMESHAction( 503, "MEASURE_LENGTH", "ICON_MEASURE_LENGTH" );
+ createSMESHAction( 504, "MEASURE_AREA", "ICON_MEASURE_AREA" );
+ createSMESHAction( 505, "MEASURE_VOLUME", "ICON_MEASURE_VOLUME" );
createSMESHAction( 300, "HIDE" );
createSMESHAction( 301, "SHOW" );
addId = createMenu( tr( "MEN_ADD" ), modifyId, 402 ),
removeId = createMenu( tr( "MEN_REMOVE" ), modifyId, 403 ),
renumId = createMenu( tr( "MEN_RENUM" ), modifyId, 404 ),
- transfId = createMenu( tr( "MEN_TRANSF" ), modifyId, 405 );
+ transfId = createMenu( tr( "MEN_TRANSF" ), modifyId, 405 ),
+ basicPropId = createMenu( tr( "MEN_BASIC_PROPERTIES" ), measureId, -1, 10 );
//createMenu( 111, importId, -1 );
createMenu( 112, importId, -1 );
createMenu( 501, measureId, -1 );
createMenu( 502, measureId, -1 );
+ createMenu( 503, basicPropId, -1 );
+ createMenu( 504, basicPropId, -1 );
+ createMenu( 505, basicPropId, -1 );
createMenu( 214, viewId, -1 );
// ----- create toolbars --------------