X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FSMESH_I%2FSMESH_Gen_i_1.cxx;h=b0701ea596b22275ba4b38fcc0def7b32aea948f;hb=586cf75e22889d19a66bc5c73b4e5e90d626c6d1;hp=02358c7890f4c2ce22c87ef5bbaa70ea6e15d89e;hpb=3443420a18b6f6fee4fe826191acd7512772e477;p=modules%2Fsmesh.git diff --git a/src/SMESH_I/SMESH_Gen_i_1.cxx b/src/SMESH_I/SMESH_Gen_i_1.cxx index 02358c789..b0701ea59 100644 --- a/src/SMESH_I/SMESH_Gen_i_1.cxx +++ b/src/SMESH_I/SMESH_Gen_i_1.cxx @@ -43,8 +43,10 @@ #ifdef _DEBUG_ static int MYDEBUG = 0; +static int VARIABLE_DEBUG = 0; #else static int MYDEBUG = 0; +static int VARIABLE_DEBUG = 0; #endif //============================================================================= @@ -863,3 +865,100 @@ bool SMESH_Gen_i::RemoveHypothesisFromShape(SALOMEDS::Study_ptr theStudy return true; } +//======================================================================= +//function : UpdateParameters +//purpose : +//======================================================================= +void SMESH_Gen_i::UpdateParameters(CORBA::Object_ptr theObject, const char* theParameters) +{ + + if(VARIABLE_DEBUG) + cout<<"UpdateParameters : "<_is_nil() || CORBA::is_nil(theObject)) + return; + + SALOMEDS::SObject_var aSObj = ObjectToSObject(aStudy,theObject); + if(aSObj->_is_nil()) + return; + + SALOMEDS::StudyBuilder_var aStudyBuilder = aStudy->NewBuilder(); + + SALOMEDS::GenericAttribute_var aFindAttr; + bool hasAttr = aSObj->FindAttribute(aFindAttr, "AttributeString"); + if(VARIABLE_DEBUG) + cout<<"Find Attribute "<FindOrCreateAttribute( aSObj, "AttributeString"); + SALOMEDS::AttributeString_var aStringAttr = SALOMEDS::AttributeString::_narrow(anAttr); + + TCollection_AsciiString aNewParams; + TCollection_AsciiString aOldParameters(aStringAttr->Value()); + TCollection_AsciiString anInputParams(ParseParameters(theParameters)); + + if(!hasAttr) + aNewParams = anInputParams; + else + aNewParams = aOldParameters+"|"+anInputParams; + + if(VARIABLE_DEBUG) + { + cout<<"Input Parameters : "<SetValue( aNewParams.ToCString() ); +} + +//======================================================================= +//function : ParseParameters +//purpose : +//======================================================================= +char* SMESH_Gen_i::ParseParameters(const char* theParameters) +{ + const char* aParameters = CORBA::string_dup(theParameters); + TCollection_AsciiString anInputParams; + SALOMEDS::Study_ptr aStudy = GetCurrentStudy(); + if( !aStudy->_is_nil() ) { + SALOMEDS::ListOfListOfStrings_var aSections = aStudy->ParseVariables(aParameters); + for(int j=0;jlength();j++) { + SALOMEDS::ListOfStrings aVars= aSections[j]; + for(int i=0;iIsVariable(aVars[i].in()) ? + TCollection_AsciiString(aVars[i].in()) : TCollection_AsciiString(""); + if(i != aVars.length()-1) + anInputParams+=":"; + } + if(j!=aSections->length()-1) + anInputParams+="|"; + } + } + return CORBA::string_dup(anInputParams.ToCString()); +} + +//======================================================================= +//function : GetParameters +//purpose : +//======================================================================= +char* SMESH_Gen_i::GetParameters(CORBA::Object_ptr theObject) +{ + TCollection_AsciiString aResult; + + SALOMEDS::Study_ptr aStudy = GetCurrentStudy(); + SALOMEDS::SObject_var aSObj = ObjectToSObject(aStudy,theObject); + + if(!aStudy->_is_nil() && + !CORBA::is_nil(theObject) && + !aSObj->_is_nil()){ + + SALOMEDS::GenericAttribute_var anAttr; + if ( aSObj->FindAttribute(anAttr, "AttributeString")) { + aResult = TCollection_AsciiString(SALOMEDS::AttributeString::_narrow(anAttr)->Value()); + } + } + + return CORBA::string_dup( aResult.ToCString() ); +}