#include <list>
#include <map>
+// ===========================================================================================
/*!
* \brief Tool converting SMESH engine calls into commands defined in smesh.py
*
*
* See comments to _pyHypothesis class to know how to assure convertion of a new hypothesis
*/
+// ===========================================================================================
class Resource_DataMapOfAsciiStringAsciiString;
static char* GenName() { return "smesh.smesh"; }
};
+// ===========================================================================================
// =====================
// INTERNAL STUFF
// =====================
+// ===========================================================================================
class _pyCommand;
class _pyObject;
int Length() { return myString.Length(); }
void Clear() { myString.Clear(); myBegPos.Clear(); }
bool IsEmpty() const { return myString.IsEmpty(); }
+ TCollection_AsciiString GetIndentation();
const TCollection_AsciiString & GetResultValue();
const TCollection_AsciiString & GetObject();
const TCollection_AsciiString & GetMethod();
static TCollection_AsciiString GetWord( const TCollection_AsciiString & theSring,
int & theStartPos, const bool theForward,
const bool dotIsWord = false);
- void AddDependantCmd( Handle(_pyCommand) cmd)
- { return myDependentCmds.push_back( cmd ); }
+ void AddDependantCmd( Handle(_pyCommand) cmd, bool prepend = false)
+ { if (prepend) myDependentCmds.push_front( cmd ); else myDependentCmds.push_back( cmd ); }
bool SetDependentCmdsAfter() const;
bool AddAccessorMethod( _pyID theObjectID, const char* theAcsMethod );
DEFINE_STANDARD_RTTI (_pyCommand)
};
+// -------------------------------------------------------------------------------------
/*!
* \brief Root of all objects
*/
+// -------------------------------------------------------------------------------------
class _pyObject: public Standard_Transient
{
public:
_pyObject(const Handle(_pyCommand)& theCreationCmd): myCreationCmd(theCreationCmd) {}
const _pyID& GetID() { return myCreationCmd->GetResultValue(); }
+ static _pyID FatherID(const _pyID & childID);
const Handle(_pyCommand)& GetCreationCmd() { return myCreationCmd; }
void SetCreationCmd( Handle(_pyCommand) cmd ) { myCreationCmd = cmd; }
int GetCommandNb() { return myCreationCmd->GetOrderNb(); }
DEFINE_STANDARD_RTTI (_pyObject)
};
+// -------------------------------------------------------------------------------------
/*!
* \brief Class corresponding to SMESH_Gen. It holds info on existing
* meshes and hypotheses
*/
+// -------------------------------------------------------------------------------------
class _pyGen: public _pyObject
{
public:
_pyGen(Resource_DataMapOfAsciiStringAsciiString& theEntry2AccessorMethod);
//~_pyGen();
- void AddCommand( const TCollection_AsciiString& theCommand );
+ Handle(_pyCommand) AddCommand( const TCollection_AsciiString& theCommand );
void Process( const Handle(_pyCommand)& theCommand );
void Flush();
Handle(_pyHypothesis) FindHyp( const _pyID& theHypID );
void SetCommandAfter( Handle(_pyCommand) theCmd, Handle(_pyCommand) theAfterCmd );
std::list< Handle(_pyCommand) >& GetCommands() { return myCommands; }
void SetAccessorMethod(const _pyID& theID, const char* theMethod );
+ bool AddMeshAccessorMethod( Handle(_pyCommand) theCmd ) const;
+ bool AddAlgoAccessorMethod( Handle(_pyCommand) theCmd ) const;
const char* AccessorMethod() const { return SMESH_2smeshpy::GenName(); }
private:
std::map< _pyID, Handle(_pyMesh) > myMeshes;
DEFINE_STANDARD_RTTI (_pyGen)
};
+// -------------------------------------------------------------------------------------
/*!
* \brief Contains commands concerning mesh substructures
*/
+// -------------------------------------------------------------------------------------
#define _pyMesh_ACCESS_METHOD "GetMesh()"
class _pyMesh: public _pyObject
{
};
#undef _pyMesh_ACCESS_METHOD
+// -------------------------------------------------------------------------------------
/*!
* \brief Root class for hypothesis
*
* to derive a specific class from _pyHypothesis that would redefine Process(),
* see _pyComplexParamHypo for example
*/
+// -------------------------------------------------------------------------------------
class _pyHypothesis: public _pyObject
{
protected:
- bool myIsAlgo, /*myIsLocal, */myIsWrapped, myIsConverted;
- int myDim, myAdditionCmdNb;
+ bool myIsAlgo, myIsWrapped; //myIsLocal, myIsConverted;
+ //int myDim/*, myAdditionCmdNb*/;
_pyID myGeom, myMesh;
TCollection_AsciiString myCreationMethod, myType;
TColStd_SequenceOfAsciiString myArgs;
TColStd_SequenceOfAsciiString myArgMethods;
+ TColStd_SequenceOfInteger myNbArgsByMethod;
std::list<Handle(_pyCommand)> myArgCommands;
std::list<Handle(_pyCommand)> myUnknownCommands;
public:
_pyHypothesis(const Handle(_pyCommand)& theCreationCmd);
+ void SetConvMethodAndType(const char* creationMethod, const char* type=0)
+ { myCreationMethod = (char*)creationMethod; if ( type ) myType = (char*)type; }
+// void SetDimMethodType(const int dim, const char* creationMethod, const char* type=0)
+// { myDim = dim; myCreationMethod = (char*)creationMethod; if ( type ) myType = (char*)type; }
+ void AddArgMethod(const char* method, const int nbArgs = 1)
+ { myArgMethods.Append( (char*)method ); myNbArgsByMethod.Append( nbArgs ); }
+ const TColStd_SequenceOfAsciiString& GetArgs() const { return myArgs; }
+ const TCollection_AsciiString& GetCreationMethod() const { return myCreationMethod; }
+ const std::list<Handle(_pyCommand)>& GetArgCommands() const { return myArgCommands; }
+ void ClearAllCommands();
virtual bool IsAlgo() const { return myIsAlgo; }
bool IsWrapped() const { return myIsWrapped; }
- bool & IsConverted() { return myIsConverted; }
- int GetDim() const { return myDim; }
+ //bool & IsConverted() { return myIsConverted; }
+ //int GetDim() const { return myDim; }
const _pyID & GetGeom() const { return myGeom; }
void SetMesh( const _pyID& theMeshId) { if ( myMesh.IsEmpty() ) myMesh = theMeshId; }
const _pyID & GetMesh() const { return myMesh; }
DEFINE_STANDARD_RTTI (_pyHypothesis)
};
+// -------------------------------------------------------------------------------------
+/*!
+ * \brief Class representing smesh.Mesh_Algorithm
+ */
+// -------------------------------------------------------------------------------------
+class _pyAlgorithm: public _pyHypothesis
+{
+public:
+ _pyAlgorithm(const Handle(_pyCommand)& theCreationCmd);
+ virtual bool Addition2Creation( const Handle(_pyCommand)& theAdditionCmd,
+ const _pyID& theMesh);
+ const char* AccessorMethod() const { return "GetAlgorithm()"; }
+
+ DEFINE_STANDARD_RTTI (_pyAlgorithm)
+};
+
+// -------------------------------------------------------------------------------------
/*!
* \brief Class for hypotheses having several parameters modified by one method
*/
+// -------------------------------------------------------------------------------------
class _pyComplexParamHypo: public _pyHypothesis
{
public:
};
DEFINE_STANDARD_HANDLE (_pyComplexParamHypo, _pyHypothesis);
+// -------------------------------------------------------------------------------------
+/*!
+ * \brief Class for LayerDistribution hypothesis conversion
+ */
+// -------------------------------------------------------------------------------------
+class _pyLayerDistributionHypo: public _pyHypothesis
+{
+ Handle(_pyHypothesis) my1dHyp;
+public:
+ _pyLayerDistributionHypo(const Handle(_pyCommand)& theCreationCmd):
+ _pyHypothesis(theCreationCmd) {}
+ void Process( const Handle(_pyCommand)& theCommand);
+ void Flush();
+ bool Addition2Creation( const Handle(_pyCommand)& theAdditionCmd,
+ const _pyID& theMesh);
+
+ DEFINE_STANDARD_RTTI (_pyLayerDistributionHypo)
+};
+DEFINE_STANDARD_HANDLE (_pyLayerDistributionHypo, _pyHypothesis);
+// -------------------------------------------------------------------------------------
/*!
* \brief Class representing NumberOfSegments hypothesis
*/
+// -------------------------------------------------------------------------------------
class _pyNumberOfSegmentsHyp: public _pyHypothesis
{
public:
};
DEFINE_STANDARD_HANDLE (_pyNumberOfSegmentsHyp, _pyHypothesis);
+// -------------------------------------------------------------------------------------
/*!
- * \brief Class representing smesh.Mesh_Algorithm
+ * \brief Class representing SegmentLengthAroundVertex hypothesis
*/
-class _pyAlgorithm: public _pyHypothesis
+// -------------------------------------------------------------------------------------
+class _pySegmentLengthAroundVertexHyp: public _pyHypothesis
{
public:
- _pyAlgorithm(const Handle(_pyCommand)& theCreationCmd);
+ _pySegmentLengthAroundVertexHyp(const Handle(_pyCommand)& theCrCmd): _pyHypothesis(theCrCmd) {}
virtual bool Addition2Creation( const Handle(_pyCommand)& theAdditionCmd,
const _pyID& theMesh);
- const char* AccessorMethod() const { return "GetAlgorithm()"; }
-
- DEFINE_STANDARD_RTTI (_pyAlgorithm)
+ DEFINE_STANDARD_RTTI (_pySegmentLengthAroundVertexHyp)
};
+DEFINE_STANDARD_HANDLE (_pySegmentLengthAroundVertexHyp, _pyHypothesis);
#endif