X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FSMESH_I%2FSMESH_Mesh_i.cxx;h=10bfa8d8ed6ad68ca63e07a7f6d44d7a0c9d69ea;hb=e330934ca6f8bb1f67b5367bb65a861868998aeb;hp=2b11922915c2f77addce88e7b2b928751be0ccb2;hpb=88a6b8d690a5410a9097c2f924d4a63be6db5e77;p=modules%2Fsmesh.git diff --git a/src/SMESH_I/SMESH_Mesh_i.cxx b/src/SMESH_I/SMESH_Mesh_i.cxx index 2b1192291..10bfa8d8e 100644 --- a/src/SMESH_I/SMESH_Mesh_i.cxx +++ b/src/SMESH_I/SMESH_Mesh_i.cxx @@ -106,14 +106,12 @@ int SMESH_Mesh_i::_idGenerator = 0; //============================================================================= SMESH_Mesh_i::SMESH_Mesh_i( PortableServer::POA_ptr thePOA, - SMESH_Gen_i* gen_i, - CORBA::Long studyId ) + SMESH_Gen_i* gen_i ) : SALOME::GenericObj_i( thePOA ) { _impl = NULL; _gen_i = gen_i; _id = _idGenerator++; - _studyId = studyId; _editor = NULL; _previewEditor = NULL; _preMeshInfo = NULL; @@ -241,9 +239,7 @@ GEOM::GEOM_Object_ptr SMESH_Mesh_i::GetShapeToMesh() for ( ; data != _geomGroupData.end(); ++data ) if ( data->_smeshObject->_is_equivalent( _this() )) { - SALOMEDS::Study_var study = _gen_i->GetCurrentStudy(); - if ( study->_is_nil() ) break; - SALOMEDS::SObject_wrap so = study->FindObjectID( data->_groupEntry.c_str() ); + SALOMEDS::SObject_wrap so = SMESH_Gen_i::getStudyServant()->FindObjectID( data->_groupEntry.c_str() ); CORBA::Object_var obj = _gen_i->SObjectToObject( so ); aShapeObj = GEOM::GEOM_Object::_narrow( obj ); break; @@ -303,6 +299,9 @@ void SMESH_Mesh_i::Clear() throw (SALOME::SALOME_Exception) } TPythonDump() << SMESH::SMESH_Mesh_var(_this()) << ".Clear()"; + + SMESH::SMESH_Mesh_var mesh = _this(); + _gen_i->UpdateIcons( mesh ); } //================================================================================ @@ -408,8 +407,8 @@ SMESH_Mesh_i::ImportMEDFile( const char* theFileName, const char* theMeshName ) CreateGroupServants(); int major, minor, release; - if( !MED::getMEDVersion( theFileName, major, minor, release ) ) - major = minor = release = -1; + major = minor = release = 0; + MED::GetMEDVersion(theFileName, major, minor, release); _medFileInfo = new SMESH::MedFileInfo(); _medFileInfo->fileName = theFileName; _medFileInfo->fileSize = 0; @@ -455,9 +454,9 @@ SMESH::DriverMED_ReadStatus SMESH_Mesh_i::ImportCGNSFile( const char* theFileNa */ //================================================================================ -char* SMESH_Mesh_i::GetVersionString(SMESH::MED_VERSION version, CORBA::Short nbDigits) +char* SMESH_Mesh_i::GetVersionString(CORBA::Long minor, CORBA::Short nbDigits) { - string ver = DriverMED_W_SMESHDS_Mesh::GetVersionString(MED::EVersion(version), + string ver = DriverMED_W_SMESHDS_Mesh::GetVersionString(minor, nbDigits); return CORBA::string_dup( ver.c_str() ); } @@ -501,8 +500,7 @@ int SMESH_Mesh_i::ImportSTLFile( const char* theFileName ) std::string name = _impl->STLToMesh( theFileName ); if ( !name.empty() ) { - SALOMEDS::Study_var study = _gen_i->GetCurrentStudy(); - SALOMEDS::SObject_wrap meshSO = _gen_i->ObjectToSObject( study, _this() ); + SALOMEDS::SObject_wrap meshSO = _gen_i->ObjectToSObject( _this() ); _gen_i->SetName( meshSO, name.c_str() ); } @@ -611,8 +609,8 @@ SMESH_Mesh_i::AddHypothesis(GEOM::GEOM_Object_ptr aSubShape, SMESH::SMESH_Mesh_var mesh( _this() ); if ( !SMESH_Hypothesis::IsStatusFatal(status) ) { - SALOMEDS::Study_var study = _gen_i->GetCurrentStudy(); - _gen_i->AddHypothesisToShape( study, mesh, aSubShape, anHyp ); + _gen_i->AddHypothesisToShape( mesh, aSubShape, anHyp ); + _gen_i->UpdateIcons( mesh ); } if(MYDEBUG) MESSAGE( " AddHypothesis(): status = " << status ); @@ -697,8 +695,8 @@ SMESH::Hypothesis_Status SMESH_Mesh_i::RemoveHypothesis(GEOM::GEOM_Object_ptr aS if ( !SMESH_Hypothesis::IsStatusFatal(status) ) { - SALOMEDS::Study_var study = _gen_i->GetCurrentStudy(); - _gen_i->RemoveHypothesisFromShape( study, mesh, aSubShape, anHyp ); + _gen_i->RemoveHypothesisFromShape( mesh, aSubShape, anHyp ); + _gen_i->UpdateIcons( mesh ); } // Update Python script if(_impl->HasShapeToMesh()) @@ -868,9 +866,8 @@ SMESH::SMESH_subMesh_ptr SMESH_Mesh_i::GetSubMesh(GEOM::GEOM_Object_ptr aSubShap subMesh = createSubMesh( aSubShape ); if ( _gen_i->CanPublishInStudy( subMesh )) { - SALOMEDS::Study_var study = _gen_i->GetCurrentStudy(); SALOMEDS::SObject_wrap aSO = - _gen_i->PublishSubMesh( study, aMesh, subMesh, aSubShape, theName ); + _gen_i->PublishSubMesh( aMesh, subMesh, aSubShape, theName ); if ( !aSO->_is_nil()) { // Update Python script TPythonDump() << aSO << " = " << aMesh << ".GetSubMesh( " @@ -899,28 +896,25 @@ void SMESH_Mesh_i::RemoveSubMesh( SMESH::SMESH_subMesh_ptr theSubMesh ) return; GEOM::GEOM_Object_var aSubShape; - SALOMEDS::Study_var aStudy = _gen_i->GetCurrentStudy(); - if ( !aStudy->_is_nil() ) { - // Remove submesh's SObject - SALOMEDS::SObject_wrap anSO = _gen_i->ObjectToSObject( aStudy, theSubMesh ); - if ( !anSO->_is_nil() ) { - long aTag = SMESH_Gen_i::GetRefOnShapeTag(); - SALOMEDS::SObject_wrap anObj, aRef; - if ( anSO->FindSubObject( aTag, anObj.inout() ) && - anObj->ReferencedObject( aRef.inout() )) - { - CORBA::Object_var obj = aRef->GetObject(); - aSubShape = GEOM::GEOM_Object::_narrow( obj ); - } - // if ( aSubShape->_is_nil() ) // not published shape (IPAL13617) - // aSubShape = theSubMesh->GetSubShape(); + // Remove submesh's SObject + SALOMEDS::SObject_wrap anSO = _gen_i->ObjectToSObject( theSubMesh ); + if ( !anSO->_is_nil() ) { + long aTag = SMESH_Gen_i::GetRefOnShapeTag(); + SALOMEDS::SObject_wrap anObj, aRef; + if ( anSO->FindSubObject( aTag, anObj.inout() ) && + anObj->ReferencedObject( aRef.inout() )) + { + CORBA::Object_var obj = aRef->GetObject(); + aSubShape = GEOM::GEOM_Object::_narrow( obj ); + } + // if ( aSubShape->_is_nil() ) // not published shape (IPAL13617) + // aSubShape = theSubMesh->GetSubShape(); - SALOMEDS::StudyBuilder_var builder = aStudy->NewBuilder(); - builder->RemoveObjectWithChildren( anSO ); + SALOMEDS::StudyBuilder_var builder = SMESH_Gen_i::getStudyServant()->NewBuilder(); + builder->RemoveObjectWithChildren( anSO ); - // Update Python script - TPythonDump() << SMESH::SMESH_Mesh_var( _this() ) << ".RemoveSubMesh( " << anSO << " )"; - } + // Update Python script + TPythonDump() << SMESH::SMESH_Mesh_var( _this() ) << ".RemoveSubMesh( " << anSO << " )"; } if ( removeSubMesh( theSubMesh, aSubShape.in() )) @@ -950,9 +944,8 @@ SMESH::SMESH_Group_ptr SMESH_Mesh_i::CreateGroup( SMESH::ElementType theElemType if ( _gen_i->CanPublishInStudy( aNewGroup ) ) { SMESH::SMESH_Mesh_var mesh = _this(); - SALOMEDS::Study_var study = _gen_i->GetCurrentStudy(); SALOMEDS::SObject_wrap aSO = - _gen_i->PublishGroup( study, mesh, aNewGroup, GEOM::GEOM_Object::_nil(), theName); + _gen_i->PublishGroup( mesh, aNewGroup, GEOM::GEOM_Object::_nil(), theName); if ( !aSO->_is_nil()) // Update Python script TPythonDump() << aSO << " = " << mesh << ".CreateGroup( " @@ -987,9 +980,8 @@ SMESH_Mesh_i::CreateGroupFromGEOM (SMESH::ElementType theElemType, if ( _gen_i->CanPublishInStudy( aNewGroup ) ) { SMESH::SMESH_Mesh_var mesh = _this(); - SALOMEDS::Study_var study = _gen_i->GetCurrentStudy(); SALOMEDS::SObject_wrap aSO = - _gen_i->PublishGroup( study, mesh, aNewGroup, theGeomObj, theName ); + _gen_i->PublishGroup( mesh, aNewGroup, theGeomObj, theName ); if ( !aSO->_is_nil()) TPythonDump() << aSO << " = " << mesh << ".CreateGroupFromGEOM( " << theElemType << ", '" << theName << "', " << theGeomObj << " )"; @@ -1036,9 +1028,8 @@ SMESH_Mesh_i::CreateGroupFromFilter(SMESH::ElementType theElemType, if ( _gen_i->CanPublishInStudy( aNewGroup ) ) { SMESH::SMESH_Mesh_var mesh = _this(); - SALOMEDS::Study_var study = _gen_i->GetCurrentStudy(); SALOMEDS::SObject_wrap aSO = - _gen_i->PublishGroup( study, mesh, aNewGroup, GEOM::GEOM_Object::_nil(), theName ); + _gen_i->PublishGroup( mesh, aNewGroup, GEOM::GEOM_Object::_nil(), theName ); if ( !aSO->_is_nil()) pd << aSO << " = " << mesh << ".CreateGroupFromFilter( " @@ -1065,19 +1056,15 @@ void SMESH_Mesh_i::RemoveGroup( SMESH::SMESH_GroupBase_ptr theGroup ) if ( !aGroup ) return; - SALOMEDS::Study_var aStudy = _gen_i->GetCurrentStudy(); - if ( !aStudy->_is_nil() ) + SALOMEDS::SObject_wrap aGroupSO = _gen_i->ObjectToSObject( theGroup ); + if ( !aGroupSO->_is_nil() ) { - SALOMEDS::SObject_wrap aGroupSO = _gen_i->ObjectToSObject( aStudy, theGroup ); - if ( !aGroupSO->_is_nil() ) - { - // Update Python script - TPythonDump() << SMESH::SMESH_Mesh_var(_this()) << ".RemoveGroup( " << aGroupSO << " )"; + // Update Python script + TPythonDump() << SMESH::SMESH_Mesh_var(_this()) << ".RemoveGroup( " << aGroupSO << " )"; - // Remove group's SObject - SALOMEDS::StudyBuilder_var builder = aStudy->NewBuilder(); - builder->RemoveObjectWithChildren( aGroupSO ); - } + // Remove group's SObject + SALOMEDS::StudyBuilder_var builder = SMESH_Gen_i::getStudyServant()->NewBuilder(); + builder->RemoveObjectWithChildren( aGroupSO ); } aGroup->Modified(/*removed=*/true); // notify dependent Filter with FT_BelongToMeshGroup criterion @@ -1128,6 +1115,8 @@ void SMESH_Mesh_i::RemoveGroupWithContents( SMESH::SMESH_GroupBase_ptr theGroup // Remove contents for ( size_t i = 0; i < elems.size(); ++i ) { + // if ( !_impl->GetMeshDS()->Contains( elems[i] )) + // continue; if ( !isNodal ) { for ( SMDS_ElemIteratorPtr nIt = elems[i]->nodesIterator(); nIt->more(); ) @@ -1847,14 +1836,13 @@ void SMESH_Mesh_i::addGeomGroupData(GEOM::GEOM_Object_ptr theGeomObj, if ( CORBA::is_nil( theGeomObj ) || theGeomObj->GetType() != GEOM_GROUP ) return; // group SO - SALOMEDS::Study_var study = _gen_i->GetCurrentStudy(); - SALOMEDS::SObject_wrap groupSO = _gen_i->ObjectToSObject( study, theGeomObj ); + SALOMEDS::SObject_wrap groupSO = _gen_i->ObjectToSObject( theGeomObj ); if ( groupSO->_is_nil() ) return; // group indices GEOM::GEOM_Gen_var geomGen = _gen_i->GetGeomEngine(); GEOM::GEOM_IGroupOperations_wrap groupOp = - geomGen->GetIGroupOperations( _gen_i->GetCurrentStudyID() ); + geomGen->GetIGroupOperations(); GEOM::ListOfLong_var ids = groupOp->GetObjects( theGeomObj ); // store data @@ -1902,9 +1890,7 @@ TopoDS_Shape SMESH_Mesh_i::newGroupShape( TGeomGroupData & groupData) TopoDS_Shape newShape; // get geom group - SALOMEDS::Study_var study = _gen_i->GetCurrentStudy(); - if ( study->_is_nil() ) return newShape; // means "not changed" - SALOMEDS::SObject_wrap groupSO = study->FindObjectID( groupData._groupEntry.c_str() ); + SALOMEDS::SObject_wrap groupSO = SMESH_Gen_i::getStudyServant()->FindObjectID( groupData._groupEntry.c_str() ); if ( !groupSO->_is_nil() ) { CORBA::Object_var groupObj = _gen_i->SObjectToObject( groupSO ); @@ -1915,7 +1901,7 @@ TopoDS_Shape SMESH_Mesh_i::newGroupShape( TGeomGroupData & groupData) set curIndices; GEOM::GEOM_Gen_var geomGen = _gen_i->GetGeomEngine(); GEOM::GEOM_IGroupOperations_wrap groupOp = - geomGen->GetIGroupOperations( _gen_i->GetCurrentStudyID() ); + geomGen->GetIGroupOperations(); GEOM::ListOfLong_var ids = groupOp->GetObjects( geomGroup ); for ( CORBA::ULong i = 0; i < ids->length(); ++i ) curIndices.insert( ids[i] ); @@ -1980,9 +1966,6 @@ void SMESH_Mesh_i::CheckGeomModif() { if ( !_impl->HasShapeToMesh() ) return; - SALOMEDS::Study_var study = _gen_i->GetCurrentStudy(); - if ( study->_is_nil() ) return; - GEOM::GEOM_Object_var mainGO = _gen_i->ShapeToGeomObject( _impl->GetShapeToMesh() ); //if ( mainGO->_is_nil() ) return; @@ -2120,7 +2103,7 @@ void SMESH_Mesh_i::CheckGeomModif() /*! * \brief Update objects depending on changed geom groups * - * NPAL16168: geometrical group edition from a submesh don't modifiy mesh computation + * NPAL16168: geometrical group edition from a submesh don't modify mesh computation * issue 0020210: Update of a smesh group after modification of the associated geom group */ //============================================================================= @@ -2129,9 +2112,6 @@ void SMESH_Mesh_i::CheckGeomGroupModif() { if ( !_impl->HasShapeToMesh() ) return; - SALOMEDS::Study_var study = _gen_i->GetCurrentStudy(); - if ( study->_is_nil() ) return; - CORBA::Long nbEntities = NbNodes() + NbElements(); // Check if group contents changed @@ -2318,7 +2298,7 @@ void SMESH_Mesh_i::CheckGeomGroupModif() if ( _mapGroups.find( oldID ) == _mapGroups.end() ) continue; // get group name - SALOMEDS::SObject_wrap groupSO = _gen_i->ObjectToSObject( study,_mapGroups[oldID] ); + SALOMEDS::SObject_wrap groupSO = _gen_i->ObjectToSObject( _mapGroups[oldID] ); CORBA::String_var name = groupSO->GetName(); // update SMESH_GroupBase_i* group_i = SMESH::DownCast(_mapGroups[oldID] ); @@ -2339,15 +2319,15 @@ void SMESH_Mesh_i::CheckGeomGroupModif() if ( newNbEntities != nbEntities ) { // Add all SObjects with icons to soToUpdateIcons - soToUpdateIcons.push_back( _gen_i->ObjectToSObject( study, _this() )); // mesh + soToUpdateIcons.push_back( _gen_i->ObjectToSObject( _this() )); // mesh for (map::iterator i_sm = _mapSubMeshIor.begin(); i_sm != _mapSubMeshIor.end(); ++i_sm ) // submeshes - soToUpdateIcons.push_back( _gen_i->ObjectToSObject( study, i_sm->second )); + soToUpdateIcons.push_back( _gen_i->ObjectToSObject( i_sm->second )); for ( map::iterator i_gr = _mapGroups.begin(); i_gr != _mapGroups.end(); ++i_gr ) // groups - soToUpdateIcons.push_back( _gen_i->ObjectToSObject( study, i_gr->second )); + soToUpdateIcons.push_back( _gen_i->ObjectToSObject( i_gr->second )); } list< SALOMEDS::SObject_wrap >::iterator so = soToUpdateIcons.begin(); @@ -2393,10 +2373,10 @@ SMESH::SMESH_Group_ptr SMESH_Mesh_i::ConvertToStandalone( SMESH::SMESH_GroupBase SALOMEDS::StudyBuilder_var builder; SALOMEDS::SObject_wrap aGroupSO; - SALOMEDS::Study_var aStudy = _gen_i->GetCurrentStudy(); + SALOMEDS::Study_var aStudy = SMESH_Gen_i::getStudyServant(); if ( !aStudy->_is_nil() ) { builder = aStudy->NewBuilder(); - aGroupSO = _gen_i->ObjectToSObject( aStudy, theGroup ); + aGroupSO = _gen_i->ObjectToSObject( theGroup ); if ( !aGroupSO->_is_nil() ) { // remove reference to geometry @@ -2717,17 +2697,6 @@ CORBA::Long SMESH_Mesh_i::GetId()throw(SALOME::SALOME_Exception) return _id; } -//============================================================================= -/*! - * - */ -//============================================================================= - -CORBA::Long SMESH_Mesh_i::GetStudyId()throw(SALOME::SALOME_Exception) -{ - return _studyId; -} - //============================================================================= namespace { @@ -2754,6 +2723,9 @@ void SMESH_Mesh_i::onHypothesisModified() { if ( _preMeshInfo ) _preMeshInfo->ForgetOrLoad(); + + SMESH::SMESH_Mesh_var mesh = _this(); + _gen_i->UpdateIcons( mesh ); } //============================================================================= @@ -2987,9 +2959,9 @@ string SMESH_Mesh_i::prepareMeshNameAndGroups(const char* file, // Perform Export PrepareForWriting(file, overwrite); string aMeshName = "Mesh"; - SALOMEDS::Study_var aStudy = _gen_i->GetCurrentStudy(); + SALOMEDS::Study_var aStudy = SMESH_Gen_i::getStudyServant(); if ( !aStudy->_is_nil() ) { - SALOMEDS::SObject_wrap aMeshSO = _gen_i->ObjectToSObject( aStudy, _this() ); + SALOMEDS::SObject_wrap aMeshSO = _gen_i->ObjectToSObject( _this() ); if ( !aMeshSO->_is_nil() ) { CORBA::String_var name = aMeshSO->GetName(); aMeshName = name; @@ -3022,62 +2994,36 @@ string SMESH_Mesh_i::prepareMeshNameAndGroups(const char* file, //================================================================================ /*! - * \brief Export to med file + * \brief Export to MED file */ //================================================================================ -void SMESH_Mesh_i::ExportToMEDX (const char* file, - CORBA::Boolean auto_groups, - SMESH::MED_VERSION theVersion, - CORBA::Boolean overwrite, - CORBA::Boolean autoDimension) +void SMESH_Mesh_i::ExportMED(const char* file, + CORBA::Boolean auto_groups, + CORBA::Long minor, + CORBA::Boolean overwrite, + CORBA::Boolean autoDimension) throw(SALOME::SALOME_Exception) { - //MESSAGE("SMESH::MED_VERSION:"<< theVersion); + //MESSAGE("MED minor version: "<< minor); SMESH_TRY; if ( _preMeshInfo ) _preMeshInfo->FullLoadFromFile(); string aMeshName = prepareMeshNameAndGroups(file, overwrite); - _impl->ExportMED( file, aMeshName.c_str(), auto_groups, theVersion, 0, autoDimension ); + _impl->ExportMED( file, aMeshName.c_str(), auto_groups, minor, 0, autoDimension ); - TPythonDump() << SMESH::SMESH_Mesh_var(_this()) << ".ExportToMEDX( r'" - << file << "', " << auto_groups << ", " - << theVersion << ", " << overwrite << ", " - << autoDimension << " )"; + TPythonDump() << SMESH::SMESH_Mesh_var(_this()) << ".ExportMED( r'" + << file << "', " + << "auto_groups=" <GetCurrentStudy(); - SALOMEDS::SObject_wrap so = _gen_i->ObjectToSObject( study, _this() ); + SALOMEDS::SObject_wrap so = _gen_i->ObjectToSObject( _this() ); if ( !so->_is_nil() ) name = so->GetName(); @@ -3184,13 +3129,14 @@ void SMESH_Mesh_i::ExportSTL (const char *file, const bool isascii) void SMESH_Mesh_i::ExportPartToMED(SMESH::SMESH_IDSource_ptr meshPart, const char* file, CORBA::Boolean auto_groups, - SMESH::MED_VERSION version, + CORBA::Long minor, CORBA::Boolean overwrite, CORBA::Boolean autoDimension, const GEOM::ListOfFields& fields, const char* geomAssocFields) throw (SALOME::SALOME_Exception) { + //MESSAGE("MED minor version: "<< minor); SMESH_TRY; if ( _preMeshInfo ) _preMeshInfo->FullLoadFromFile(); @@ -3237,8 +3183,8 @@ void SMESH_Mesh_i::ExportPartToMED(SMESH::SMESH_IDSource_ptr meshPart, SMESH::DownCast< SMESH_Mesh_i* >( meshPart )) { aMeshName = prepareMeshNameAndGroups(file, overwrite); - _impl->ExportMED( file, aMeshName.c_str(), auto_groups, - version, 0, autoDimension, /*addODOnVertices=*/have0dField); + _impl->ExportMED( file, aMeshName.c_str(), auto_groups, minor, + 0, autoDimension, /*addODOnVertices=*/have0dField); meshDS = _impl->GetMeshDS(); } else @@ -3248,17 +3194,15 @@ void SMESH_Mesh_i::ExportPartToMED(SMESH::SMESH_IDSource_ptr meshPart, PrepareForWriting(file, overwrite); - SALOMEDS::Study_var aStudy = _gen_i->GetCurrentStudy(); - if ( !aStudy->_is_nil() ) { - SALOMEDS::SObject_wrap SO = _gen_i->ObjectToSObject( aStudy, meshPart ); - if ( !SO->_is_nil() ) { - CORBA::String_var name = SO->GetName(); - aMeshName = name; - } + SALOMEDS::SObject_wrap SO = _gen_i->ObjectToSObject( meshPart ); + if ( !SO->_is_nil() ) { + CORBA::String_var name = SO->GetName(); + aMeshName = name; } + SMESH_MeshPartDS* partDS = new SMESH_MeshPartDS( meshPart ); - _impl->ExportMED( file, aMeshName.c_str(), auto_groups, - version, partDS, autoDimension, /*addODOnVertices=*/have0dField); + _impl->ExportMED( file, aMeshName.c_str(), auto_groups, minor, + partDS, autoDimension, /*addODOnVertices=*/have0dField); meshDS = tmpDSDeleter._obj = partDS; } @@ -3282,11 +3226,15 @@ void SMESH_Mesh_i::ExportPartToMED(SMESH::SMESH_IDSource_ptr meshPart, GEOM::GEOM_BaseObject_var gbo = GEOM::GEOM_BaseObject::_narrow( fields[i] ); goList[i] = gbo; } - TPythonDump() << _this() << ".ExportPartToMED( " - << meshPart << ", r'" << file << "', " - << auto_groups << ", " << version << ", " << overwrite << ", " - << autoDimension << ", " << goList - << ", '" << ( geomAssocFields ? geomAssocFields : "" ) << "'" << " )"; + TPythonDump() << _this() << ".ExportPartToMED( r'" + << file << "', " + << "auto_groups=" << auto_groups << ", " + << "minor=" << minor << ", " + << "overwrite=" << overwrite << ", " + << "meshPart=" << meshPart << ", " + << "autoDimension=" << autoDimension << ", " + << "fields=" << goList << ", geomAssocFields='" + << ( geomAssocFields ? geomAssocFields : "" ) << "'" << " )"; SMESH_CATCH( SMESH::throwCorbaException ); } @@ -3622,8 +3570,7 @@ void SMESH_Mesh_i::ExportPartToSTL(::SMESH::SMESH_IDSource_ptr meshPart, PrepareForWriting(file); CORBA::String_var name; - SALOMEDS::Study_var study = _gen_i->GetCurrentStudy(); - SALOMEDS::SObject_wrap so = _gen_i->ObjectToSObject( study, meshPart ); + SALOMEDS::SObject_wrap so = _gen_i->ObjectToSObject( meshPart ); if ( !so->_is_nil() ) name = so->GetName(); @@ -3654,8 +3601,7 @@ void SMESH_Mesh_i::ExportCGNS(::SMESH::SMESH_IDSource_ptr meshPart, PrepareForWriting(file,overwrite); std::string meshName(""); - SALOMEDS::Study_var study = _gen_i->GetCurrentStudy(); - SALOMEDS::SObject_wrap so = _gen_i->ObjectToSObject( study, meshPart ); + SALOMEDS::SObject_wrap so = _gen_i->ObjectToSObject( meshPart ); if ( !so->_is_nil() ) { CORBA::String_var name = so->GetName(); @@ -4998,10 +4944,9 @@ SMESH_Mesh_i::MakeGroupsOfBadInputElements( int theSubShapeID, groups[ ++iG ] = createGroup( SMESH::ElementType(i), theGroupName ); if ( _gen_i->CanPublishInStudy( groups[ iG ] )) { - SALOMEDS::Study_var study = _gen_i->GetCurrentStudy(); SMESH::SMESH_Mesh_var mesh = _this(); SALOMEDS::SObject_wrap aSO = - _gen_i->PublishGroup( study, mesh, groups[ iG ], + _gen_i->PublishGroup( mesh, groups[ iG ], GEOM::GEOM_Object::_nil(), theGroupName); } SMESH_GroupBase_i* grp_i = SMESH::DownCast< SMESH_GroupBase_i* >( groups[ iG ]); @@ -5025,7 +4970,6 @@ SMESH_Mesh_i::MakeGroupsOfBadInputElements( int theSubShapeID, void SMESH_Mesh_i::CreateGroupServants() { - SALOMEDS::Study_var aStudy = _gen_i->GetCurrentStudy(); SMESH::SMESH_Mesh_var aMesh = _this(); set addedIDs; @@ -5062,10 +5006,8 @@ void SMESH_Mesh_i::CreateGroupServants() else { nextId = 0; } // avoid "unused variable" warning in release mode // publishing the groups in the study - if ( !aStudy->_is_nil() ) { - GEOM::GEOM_Object_var shapeVar = _gen_i->ShapeToGeomObject( shape ); - _gen_i->PublishGroup( aStudy, aMesh, groupVar, shapeVar, group->GetName()); - } + GEOM::GEOM_Object_var shapeVar = _gen_i->ShapeToGeomObject( shape ); + _gen_i->PublishGroup( aMesh, groupVar, shapeVar, group->GetName()); } if ( !addedIDs.empty() ) { @@ -5080,6 +5022,17 @@ void SMESH_Mesh_i::CreateGroupServants() } } +//============================================================================= +/*! + * \brief Return true if all sub-meshes are computed OK - to update an icon + */ +//============================================================================= + +bool SMESH_Mesh_i::IsComputedOK() +{ + return _impl->IsComputedOK(); +} + //============================================================================= /*! * \brief Return groups cantained in _mapGroups by their IDs @@ -5131,10 +5084,6 @@ void SMESH_Mesh_i::checkGroupNames() int nbGrp = NbGroups(); if ( !nbGrp ) return; - - SALOMEDS::Study_var aStudy = _gen_i->GetCurrentStudy(); - if ( aStudy->_is_nil() ) - return; // nothing to do SMESH::ListOfGroups* grpList = 0; // avoid dump of "GetGroups" @@ -5148,7 +5097,7 @@ void SMESH_Mesh_i::checkGroupNames() SMESH::SMESH_GroupBase_ptr aGrp = (*grpList)[ gIndx ]; if ( !aGrp ) continue; - SALOMEDS::SObject_wrap aGrpSO = _gen_i->ObjectToSObject( aStudy, aGrp ); + SALOMEDS::SObject_wrap aGrpSO = _gen_i->ObjectToSObject( aGrp ); if ( aGrpSO->_is_nil() ) continue; // correct name of the mesh group if necessary @@ -5191,15 +5140,12 @@ SMESH::string_array* SMESH_Mesh_i::GetLastParameters() SMESH_Gen_i *gen = SMESH_Gen_i::GetSMESHGen(); if(gen) { CORBA::String_var aParameters = GetParameters(); - SALOMEDS::Study_var aStudy = gen->GetCurrentStudy(); - if ( !aStudy->_is_nil()) { - SALOMEDS::ListOfListOfStrings_var aSections = aStudy->ParseVariables(aParameters); - if ( aSections->length() > 0 ) { - SALOMEDS::ListOfStrings aVars = aSections[ aSections->length() - 1 ]; - aResult->length( aVars.length() ); - for ( CORBA::ULong i = 0;i < aVars.length(); i++ ) - aResult[i] = CORBA::string_dup( aVars[i] ); - } + SALOMEDS::ListOfListOfStrings_var aSections = SMESH_Gen_i::getStudyServant()->ParseVariables(aParameters); + if ( aSections->length() > 0 ) { + SALOMEDS::ListOfStrings aVars = aSections[ aSections->length() - 1 ]; + aResult->length( aVars.length() ); + for ( CORBA::ULong i = 0;i < aVars.length(); i++ ) + aResult[i] = CORBA::string_dup( aVars[i] ); } } return aResult._retn(); @@ -5610,7 +5556,7 @@ TopAbs_ShapeEnum shapeTypeByDim(const int theDim) class SMESH_DimHyp { public: - //! fileds + //! fields int _dim; //!< a dimension the algo can build (concurrent dimension) int _ownDim; //!< dimension of shape of _subMesh (>=_dim) TopTools_MapOfShape _shapeMap; @@ -6064,6 +6010,9 @@ TListOfListOfInt SMESH_Mesh_i::findConcurrentSubMeshes() mesh.SetMeshOrder( subMeshOrder ); res = true; + SMESH::SMESH_Mesh_var me = _this(); + _gen_i->UpdateIcons( me ); + return res; }