-// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE
//
// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
#include <list>
#include <map>
#include <vector>
+#include <set>
#include <SALOMEconfig.h>
#include CORBA_CLIENT_HEADER(SALOMEDS)
_AString GetIndentation();
const _AString & GetResultValue();
const int GetNbResultValues();
- const _AString & GetResultValue(int res);
+ _AString GetResultValue(int res);
const _AString & GetObject();
const _AString & GetMethod();
const _AString & GetArg( int index );
void SetCommandBefore( Handle(_pyCommand) theCmd, Handle(_pyCommand) theBeforeCmd );
Handle(_pyCommand)& GetLastCommand();
std::list< Handle(_pyCommand) >& GetCommands() { return myCommands; }
+ void PlaceSubmeshAfterItsCreation( Handle(_pyCommand) theCmdUsingSubmesh ) const;
_pyID GenerateNewID( const _pyID& theID );
void AddObject( Handle(_pyObject)& theObj );
+ void SetProxyObject( const _pyID& theID, Handle(_pyObject)& theObj );
Handle(_pyObject) FindObject( const _pyID& theObjID ) const;
Handle(_pySubMesh) FindSubMesh( const _pyID& theSubMeshID );
Handle(_pyHypothesis) FindHyp( const _pyID& theHypID );
class _pyMesh: public _pyObject
{
std::list< Handle(_pyHypothesis) > myHypos;
- std::list< Handle(_pyCommand) > myAddHypCmds;
+ std::list< Handle(_pyCommand) > myAddHypCmds, myNotConvertedAddHypCmds;
std::list< Handle(_pySubMesh) > mySubmeshes;
std::list< Handle(_pyGroup) > myGroups;
std::list< Handle(_pyMeshEditor)> myEditors;
_pyID myGeom, myMesh;
struct CreationMethod {
_AString myMethod; // method of algo or mesh creating a hyp
- // myArgNb(i)-th arg of myArgMethods(i) of hyp becomes an i-th arg of myAlgoMethod
+ // myArgNb(i)-th arg of myArgMethods(i) of hyp becomes an i-th arg of myMethod
std::vector<_AString> myArgMethods;
std::vector<int> myArgNb; // arg nb countered from 1
std::vector<_AString> myArgs; // creation arguments
// a hypothesis can be created by different algos by different methods
typedef std::map<_AString, CreationMethod > TType2CrMethod;
TType2CrMethod myAlgoType2CreationMethod;
+ std::set< _AString > myAccumulativeMethods;
CreationMethod* myCurCrMethod; // used for adding to myAlgoType2CreationMethod
std::list<Handle(_pyCommand)> myArgCommands;
std::list<Handle(_pyCommand)> myUnusedCommands;
void AddArgMethod(const _AString& method, const int argNb = 1)
{ myCurCrMethod->myArgMethods.push_back( method );
myCurCrMethod->myArgNb.push_back( argNb ); }
+ void AddAccumulativeMethod( const _AString& method)
+ { myAccumulativeMethods.insert( method ); }
//const TColStd_SequenceOfAsciiString& GetArgs() const { return myArgs; }
const std::list<Handle(_pyCommand)>& GetArgCommands() const { return myArgCommands; }
void ClearAllCommands();
class _pySelfEraser: public _pyObject
{
public:
- _pySelfEraser(const Handle(_pyCommand)& theCreationCmd):_pyObject(theCreationCmd) {}
+ _pySelfEraser(const Handle(_pyCommand)& theCreationCmd)
+ :_pyObject(theCreationCmd) { myIsPublished = true; }
virtual void Flush();
DEFINE_STANDARD_RTTI (_pySelfEraser)
virtual Handle(_pyMesh) GetMesh() { return myMesh; }
virtual void Free() { myCreator.Nullify(); myMesh.Nullify(); }
void SetCreator( const Handle(_pyObject)& theCreator ) { myCreator = theCreator; }
+ static bool CanBeArgOfMethod(const _AString& theMethodName);
DEFINE_STANDARD_RTTI (_pySubMesh)
};
-// -------------------------------------------------------------------------------------
-/*!
- * \brief To convert creation of a group by filter
- */
-// -------------------------------------------------------------------------------------
-class _pyGroup: public _pySubMesh
-{
-public:
- _pyGroup(const Handle(_pyCommand)& theCreationCmd, const _pyID & id=_pyID())
- :_pySubMesh(theCreationCmd) { setID( id ); }
- virtual void Process( const Handle(_pyCommand)& theCommand);
- virtual void Flush() {}
-
- DEFINE_STANDARD_RTTI (_pyGroup)
-};
-
// -------------------------------------------------------------------------------------
/*!
* \brief A filter sets a human readable name to self
// -------------------------------------------------------------------------------------
class _pyFilter: public _pyObject
{
- _pyID myNewID;
+ _pyID myNewID, myMesh;
std::list< Handle(_pyObject) > myUsers;
public:
_pyFilter(const Handle(_pyCommand)& theCreationCmd, const _pyID& newID="");
};
DEFINE_STANDARD_HANDLE (_pyFilter, _pyObject);
+// -------------------------------------------------------------------------------------
+/*!
+ * \brief To convert creation of a group by filter
+ */
+// -------------------------------------------------------------------------------------
+class _pyGroup: public _pySubMesh
+{
+ Handle(_pyFilter) myFilter;
+ bool myCanClearCreationCmd;
+public:
+ _pyGroup(const Handle(_pyCommand)& theCreationCmd, const _pyID & id=_pyID());
+ virtual void Process( const Handle(_pyCommand)& theCommand);
+ virtual void Flush();
+ virtual void Free() { myFilter.Nullify(); }
+ void RemovedWithContents();
+
+ DEFINE_STANDARD_RTTI (_pyGroup)
+};
+
// -------------------------------------------------------------------------------------
/*!
* \brief Class reading _pyHypothesis'es from resource files of mesher Plugins