mirror of
https://git.salome-platform.org/gitpub/modules/smesh.git
synced 2025-02-21 05:49:40 +05:00
0021308: Remove hard-coded dependency of the external mesh plugins from the SMESH module
Store names of variables set via UpdateParameters() in myLastParameters field - void UpdateParameters(CORBA::Object_ptr theObject, const char* theParameters); + void UpdateParameters(/*CORBA::Object_ptr theObject,*/ const char* theParameters); + const std::vector< std::string >& GetLastParameters() const { return myLastParameters; } + std::vector< std::string > myLastParameters;
This commit is contained in:
parent
27624ded2e
commit
f5efe8066b
@ -556,10 +556,10 @@ public:
|
||||
*/
|
||||
SALOMEDS::SObject_ptr GetAlgoSO(const ::SMESH_Algo* algo);
|
||||
|
||||
void UpdateParameters(CORBA::Object_ptr theObject, const char* theParameters);
|
||||
void UpdateParameters(/*CORBA::Object_ptr theObject,*/ const char* theParameters);
|
||||
char* GetParameters(CORBA::Object_ptr theObject);
|
||||
char* ParseParameters(const char* theParameters);
|
||||
|
||||
const std::vector< std::string >& GetLastParameters() const { return myLastParameters; }
|
||||
|
||||
private:
|
||||
// Create hypothesis of given type
|
||||
@ -602,6 +602,7 @@ private:
|
||||
// Dump Python: trace of API methods calls
|
||||
std::map < int, Handle(TColStd_HSequenceOfAsciiString) > myPythonScripts;
|
||||
bool myIsHistoricalPythonDump;
|
||||
std::vector< std::string > myLastParameters;
|
||||
};
|
||||
|
||||
|
||||
|
@ -23,7 +23,6 @@
|
||||
// Created : Thu Oct 21 17:24:06 2004
|
||||
// Author : Edward AGAPOV (eap)
|
||||
// Module : SMESH
|
||||
// $Header : $
|
||||
|
||||
#include "SMESH_Gen_i.hxx"
|
||||
|
||||
@ -42,10 +41,10 @@
|
||||
|
||||
#ifdef _DEBUG_
|
||||
static int MYDEBUG = 0;
|
||||
static int VARIABLE_DEBUG = 0;
|
||||
//static int VARIABLE_DEBUG = 0;
|
||||
#else
|
||||
static int MYDEBUG = 0;
|
||||
static int VARIABLE_DEBUG = 0;
|
||||
//static int VARIABLE_DEBUG = 0;
|
||||
#endif
|
||||
|
||||
//=============================================================================
|
||||
@ -910,76 +909,104 @@ bool SMESH_Gen_i::RemoveHypothesisFromShape(SALOMEDS::Study_ptr theStudy
|
||||
//function : UpdateParameters
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
void SMESH_Gen_i::UpdateParameters(CORBA::Object_ptr theObject, const char* theParameters)
|
||||
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))
|
||||
if ( aStudy->_is_nil() )
|
||||
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 "<<hasAttr<<endl;
|
||||
|
||||
SALOMEDS::GenericAttribute_var anAttr;
|
||||
anAttr = aStudyBuilder->FindOrCreateAttribute( aSObj, "AttributeString");
|
||||
SALOMEDS::AttributeString_var aStringAttr = SALOMEDS::AttributeString::_narrow(anAttr);
|
||||
|
||||
CORBA::String_var oldparVar = aStringAttr->Value();
|
||||
CORBA::String_var inpparVar = ParseParameters(theParameters);
|
||||
TCollection_AsciiString aNewParams;
|
||||
TCollection_AsciiString aOldParameters(oldparVar.inout());
|
||||
TCollection_AsciiString anInputParams(inpparVar.inout());
|
||||
if(!hasAttr)
|
||||
aNewParams = anInputParams;
|
||||
else
|
||||
{
|
||||
int pos = aOldParameters.SearchFromEnd("|");
|
||||
if(pos==-1) pos = 0;
|
||||
TCollection_AsciiString previousParamFull(aOldParameters.Split(pos));
|
||||
TCollection_AsciiString previousParam(previousParamFull);
|
||||
TCollection_AsciiString theRepet("1");
|
||||
pos = previousParam.SearchFromEnd(";*=");
|
||||
if(pos >= 0)
|
||||
{
|
||||
theRepet = previousParam.Split(pos+2);
|
||||
pos = pos-1;
|
||||
if(pos==-1) pos = 0;
|
||||
previousParam.Split(pos);
|
||||
}
|
||||
if(previousParam == anInputParams)
|
||||
{
|
||||
theRepet = theRepet.IntegerValue()+1;
|
||||
aNewParams = aOldParameters + previousParam + ";*=" + theRepet;
|
||||
}
|
||||
else
|
||||
{
|
||||
aNewParams = aOldParameters + previousParamFull + "|" + anInputParams;
|
||||
}
|
||||
}
|
||||
|
||||
if(VARIABLE_DEBUG)
|
||||
myLastParameters.clear();
|
||||
int pos = 0, prevPos = 0, len = strlen( theParameters );
|
||||
//if ( len == 0 ) return;
|
||||
while ( pos <= len )
|
||||
{
|
||||
cout<<"Input Parameters : "<<anInputParams<<endl;
|
||||
cout<<"Old Parameters : "<<aOldParameters<<endl;
|
||||
cout<<"New Parameters : "<<aNewParams<<endl;
|
||||
if ( pos == len || theParameters[pos] == ':' )
|
||||
{
|
||||
if ( prevPos < pos )
|
||||
{
|
||||
string val(theParameters + prevPos, theParameters + pos );
|
||||
if ( !aStudy->IsVariable( val.c_str() ))
|
||||
val.clear();
|
||||
myLastParameters.push_back( val );
|
||||
}
|
||||
else
|
||||
{
|
||||
myLastParameters.push_back("");
|
||||
}
|
||||
prevPos = pos+1;
|
||||
}
|
||||
++pos;
|
||||
}
|
||||
return;
|
||||
|
||||
aStringAttr->SetValue( aNewParams.ToCString() );
|
||||
// OLD VARIANT
|
||||
|
||||
// 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())
|
||||
// return;
|
||||
|
||||
// SALOMEDS::StudyBuilder_var aStudyBuilder = aStudy->NewBuilder();
|
||||
|
||||
// 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);
|
||||
|
||||
// CORBA::String_var oldparVar = aStringAttr->Value();
|
||||
// CORBA::String_var inpparVar = ParseParameters(theParameters);
|
||||
// TCollection_AsciiString aNewParams;
|
||||
// TCollection_AsciiString aOldParameters(oldparVar.inout());
|
||||
// TCollection_AsciiString anInputParams(inpparVar.inout());
|
||||
// if(!hasAttr)
|
||||
// aNewParams = anInputParams;
|
||||
// else
|
||||
// {
|
||||
// int pos = aOldParameters.SearchFromEnd("|");
|
||||
// if(pos==-1) pos = 0;
|
||||
// TCollection_AsciiString previousParamFull(aOldParameters.Split(pos));
|
||||
// TCollection_AsciiString previousParam(previousParamFull);
|
||||
// TCollection_AsciiString theRepet("1");
|
||||
// pos = previousParam.SearchFromEnd(";*=");
|
||||
// if(pos >= 0)
|
||||
// {
|
||||
// theRepet = previousParam.Split(pos+2);
|
||||
// pos = pos-1;
|
||||
// if(pos==-1) pos = 0;
|
||||
// previousParam.Split(pos);
|
||||
// }
|
||||
// if(previousParam == anInputParams)
|
||||
// {
|
||||
// theRepet = theRepet.IntegerValue()+1;
|
||||
// aNewParams = aOldParameters + previousParam + ";*=" + theRepet;
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// aNewParams = aOldParameters + previousParamFull + "|" + anInputParams;
|
||||
// }
|
||||
// }
|
||||
|
||||
// if(VARIABLE_DEBUG)
|
||||
// {
|
||||
// cout<<"Input Parameters : "<<anInputParams<<endl;
|
||||
// cout<<"Old Parameters : "<<aOldParameters<<endl;
|
||||
// cout<<"New Parameters : "<<aNewParams<<endl;
|
||||
// }
|
||||
|
||||
// aStringAttr->SetValue( aNewParams.ToCString() );
|
||||
}
|
||||
|
||||
//=======================================================================
|
||||
//function : ParseParameters
|
||||
//purpose :
|
||||
//purpose : Replace variables by their values
|
||||
//=======================================================================
|
||||
char* SMESH_Gen_i::ParseParameters(const char* theParameters)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user