// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
//
-// See http://www.salome-platform.org/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
// File : SMESH_smesh.hxx
// Created : Fri Nov 18 12:05:18 2005
#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;
DEFINE_STANDARD_RTTI (_pyCommand)
};
+// -------------------------------------------------------------------------------------
/*!
* \brief Root of all objects
*/
+// -------------------------------------------------------------------------------------
class _pyObject: public Standard_Transient
{
DEFINE_STANDARD_RTTI (_pyObject)
};
+// -------------------------------------------------------------------------------------
/*!
* \brief Class corresponding to SMESH_Gen. It holds info on existing
* meshes and hypotheses
*/
+// -------------------------------------------------------------------------------------
class _pyGen: public _pyObject
{
public:
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;
+ 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 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; }
DEFINE_STANDARD_RTTI (_pyHypothesis)
};
+// -------------------------------------------------------------------------------------
/*!
* \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
*/
+// -------------------------------------------------------------------------------------
class _pyAlgorithm: public _pyHypothesis
{
public: