#ifdef _DEBUG_
static int MYDEBUG = 0;
+static int VARIABLE_DEBUG = 0;
#else
static int MYDEBUG = 0;
+static int VARIABLE_DEBUG = 0;
#endif
//=============================================================================
}
//=======================================================================
-//function : UpdateSObject
+//function : UpdateParameters
//purpose :
//=======================================================================
void SMESH_Gen_i::UpdateParameters(CORBA::Object_ptr theObject, const char* theParameters)
{
+
+ if(VARIABLE_DEBUG)
+ cout<<"UpdateParameters : "<<theParameters<<endl;
SALOMEDS::Study_ptr aStudy = GetCurrentStudy();
if(aStudy->_is_nil() || CORBA::is_nil(theObject))
return;
SALOMEDS::SObject_var aSObj = ObjectToSObject(aStudy,theObject);
- if(aSObj->_is_nil())
+ if(aSObj->_is_nil())
return;
-
+
SALOMEDS::StudyBuilder_var aStudyBuilder = aStudy->NewBuilder();
- SMESH::SMESH_Hypothesis_var aHyp = SMESH::SMESH_Hypothesis::_narrow( theObject );
-
- if ( !aHyp->_is_nil() ) {
- CORBA::String_var objStr = aHyp->GetParameters();
- TCollection_AsciiString aParams(theParameters);
- if(aParams.Length()) {
- SALOMEDS::GenericAttribute_var anAttr;
- anAttr = aStudyBuilder->FindOrCreateAttribute( aSObj, "AttributeString");
- SALOMEDS::AttributeString::_narrow(anAttr)->SetValue( aParams.ToCString() );
+
+ SALOMEDS::GenericAttribute_var aFindAttr;
+ bool hasAttr = aSObj->FindAttribute(aFindAttr, "AttributeString");
+ if(VARIABLE_DEBUG)
+ cout<<"Find Attribute "<<hasAttr<<endl;
+
+ SALOMEDS::GenericAttribute_var anAttr;
+ anAttr = aStudyBuilder->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 : "<<anInputParams<<endl;
+ cout<<"Old Parameters : "<<aOldParameters<<endl;
+ cout<<"New Parameters : "<<aNewParams<<endl;
}
- else
- aStudyBuilder->RemoveAttribute(aSObj,"AttributeString");
- }
+
+
+ aStringAttr->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;j<aSections->length();j++) {
+ SALOMEDS::ListOfStrings aVars= aSections[j];
+ for(int i=0;i<aVars.length();i++ ) {
+ anInputParams += aStudy->IsVariable(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
SALOMEDS::Study_ptr aStudy = GetCurrentStudy();
SALOMEDS::SObject_var aSObj = ObjectToSObject(aStudy,theObject);
- SMESH::SMESH_Hypothesis_var aHyp = SMESH::SMESH_Hypothesis::_narrow( theObject );
if(!aStudy->_is_nil() &&
!CORBA::is_nil(theObject) &&
- !aSObj->_is_nil() &&
- !aHyp->_is_nil()){
+ !aSObj->_is_nil()){
SALOMEDS::GenericAttribute_var anAttr;
if ( aSObj->FindAttribute(anAttr, "AttributeString")) {