mirror of
https://git.salome-platform.org/gitpub/modules/smesh.git
synced 2025-02-22 07:15:37 +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);
|
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* GetParameters(CORBA::Object_ptr theObject);
|
||||||
char* ParseParameters(const char* theParameters);
|
char* ParseParameters(const char* theParameters);
|
||||||
|
const std::vector< std::string >& GetLastParameters() const { return myLastParameters; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
// Create hypothesis of given type
|
// Create hypothesis of given type
|
||||||
@ -602,6 +602,7 @@ private:
|
|||||||
// Dump Python: trace of API methods calls
|
// Dump Python: trace of API methods calls
|
||||||
std::map < int, Handle(TColStd_HSequenceOfAsciiString) > myPythonScripts;
|
std::map < int, Handle(TColStd_HSequenceOfAsciiString) > myPythonScripts;
|
||||||
bool myIsHistoricalPythonDump;
|
bool myIsHistoricalPythonDump;
|
||||||
|
std::vector< std::string > myLastParameters;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -23,7 +23,6 @@
|
|||||||
// Created : Thu Oct 21 17:24:06 2004
|
// Created : Thu Oct 21 17:24:06 2004
|
||||||
// Author : Edward AGAPOV (eap)
|
// Author : Edward AGAPOV (eap)
|
||||||
// Module : SMESH
|
// Module : SMESH
|
||||||
// $Header : $
|
|
||||||
|
|
||||||
#include "SMESH_Gen_i.hxx"
|
#include "SMESH_Gen_i.hxx"
|
||||||
|
|
||||||
@ -42,10 +41,10 @@
|
|||||||
|
|
||||||
#ifdef _DEBUG_
|
#ifdef _DEBUG_
|
||||||
static int MYDEBUG = 0;
|
static int MYDEBUG = 0;
|
||||||
static int VARIABLE_DEBUG = 0;
|
//static int VARIABLE_DEBUG = 0;
|
||||||
#else
|
#else
|
||||||
static int MYDEBUG = 0;
|
static int MYDEBUG = 0;
|
||||||
static int VARIABLE_DEBUG = 0;
|
//static int VARIABLE_DEBUG = 0;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
//=============================================================================
|
//=============================================================================
|
||||||
@ -910,76 +909,104 @@ bool SMESH_Gen_i::RemoveHypothesisFromShape(SALOMEDS::Study_ptr theStudy
|
|||||||
//function : UpdateParameters
|
//function : UpdateParameters
|
||||||
//purpose :
|
//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();
|
SALOMEDS::Study_ptr aStudy = GetCurrentStudy();
|
||||||
if(aStudy->_is_nil() || CORBA::is_nil(theObject))
|
if ( aStudy->_is_nil() )
|
||||||
return;
|
return;
|
||||||
|
myLastParameters.clear();
|
||||||
SALOMEDS::SObject_var aSObj = ObjectToSObject(aStudy,theObject);
|
int pos = 0, prevPos = 0, len = strlen( theParameters );
|
||||||
if(aSObj->_is_nil())
|
//if ( len == 0 ) return;
|
||||||
return;
|
while ( pos <= len )
|
||||||
|
|
||||||
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;
|
if ( pos == len || theParameters[pos] == ':' )
|
||||||
cout<<"Old Parameters : "<<aOldParameters<<endl;
|
{
|
||||||
cout<<"New Parameters : "<<aNewParams<<endl;
|
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
|
//function : ParseParameters
|
||||||
//purpose :
|
//purpose : Replace variables by their values
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
char* SMESH_Gen_i::ParseParameters(const char* theParameters)
|
char* SMESH_Gen_i::ParseParameters(const char* theParameters)
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user