-// Copyright (C) 2007-2014 CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2023 CEA, EDF, OPEN CASCADE
//
// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
#include "SMESH_Controls.hxx"
-#include "SMDS_MeshNode.hxx"
#include "SMESH_TypeDefs.hxx"
-#include <BRepClass3d_SolidClassifier.hxx>
#include <Bnd_B3d.hxx>
#include <GeomAPI_ProjectPointOnCurve.hxx>
#include <GeomAPI_ProjectPointOnSurf.hxx>
#include <Quantity_Color.hxx>
#include <TColStd_MapOfInteger.hxx>
-#include <TColStd_SequenceOfInteger.hxx>
#include <TCollection_AsciiString.hxx>
+#include <NCollection_Map.hxx>
#include <TopAbs.hxx>
-#include <TopTools_MapOfShape.hxx>
#include <TopoDS_Face.hxx>
#include <gp_XYZ.hxx>
class SMESHDS_Mesh;
class SMESHDS_SubMesh;
+class SMESHDS_GroupBase;
+class BRepClass3d_SolidClassifier;
+class ShapeAnalysis_Surface;
+class gp_Pln;
class gp_Pnt;
+typedef NCollection_Map< smIdType, smIdHasher > TIDsMap;
+typedef NCollection_Sequence<smIdType> TIDsSeq;
+
namespace SMESH{
namespace Controls{
public:
TSequenceOfXYZ();
- TSequenceOfXYZ(size_type n);
+ explicit TSequenceOfXYZ(size_type n);
TSequenceOfXYZ(size_type n, const gp_XYZ& t);
size_type size() const;
+
+ void setElement(const SMDS_MeshElement* e) { myElem = e; }
+
+ const SMDS_MeshElement* getElement() const { return myElem; }
+
+ SMDSAbs_EntityType getElementEntity() const;
+
private:
- std::vector<gp_XYZ> myArray;
+ std::vector<gp_XYZ> myArray;
+ const SMDS_MeshElement* myElem;
};
/*!
NumericalFunctor();
virtual void SetMesh( const SMDS_Mesh* theMesh );
virtual double GetValue( long theElementId );
- virtual double GetValue(const TSequenceOfXYZ& thePoints) { return -1.0;};
- void GetHistogram(int nbIntervals,
- std::vector<int>& nbEvents,
- std::vector<double>& funValues,
- const std::vector<int>& elements,
- const double* minmax=0,
- const bool isLogarithmic = false);
+ virtual double GetValue(const TSequenceOfXYZ& /*thePoints*/) { return -1.0;};
+ void GetHistogram(int nbIntervals,
+ std::vector<int>& nbEvents,
+ std::vector<double>& funValues,
+ const std::vector<::smIdType>& elements,
+ const double* minmax=0,
+ const bool isLogarithmic = false);
+ bool IsApplicable( long theElementId ) const;
+ virtual bool IsApplicable( const SMDS_MeshElement* element ) const;
virtual SMDSAbs_ElementType GetType() const = 0;
virtual double GetBadRate( double Value, int nbNodes ) const = 0;
long GetPrecision() const;
void SetPrecision( const long thePrecision );
double Round( const double & value );
- bool GetPoints(const int theId, TSequenceOfXYZ& theRes) const;
+ bool GetPoints(const ::smIdType theId, TSequenceOfXYZ& theRes) const;
static bool GetPoints(const SMDS_MeshElement* theElem, TSequenceOfXYZ& theRes);
protected:
const SMDS_Mesh* myMesh;
virtual double GetBadRate( double Value, int nbNodes ) const;
virtual SMDSAbs_ElementType GetType() const;
};
-
-
+
+
/*
Class : MaxElementLength3D
Description : Functor calculating maximum length of 3D element
virtual double GetValue( const TSequenceOfXYZ& thePoints );
virtual double GetBadRate( double Value, int nbNodes ) const;
virtual SMDSAbs_ElementType GetType() const;
+ virtual bool IsApplicable( const SMDS_MeshElement* element ) const;
};
virtual double GetValue( const TSequenceOfXYZ& thePoints );
virtual double GetBadRate( double Value, int nbNodes ) const;
virtual SMDSAbs_ElementType GetType() const;
+ virtual bool IsApplicable( const SMDS_MeshElement* element ) const;
};
virtual double GetValue( const TSequenceOfXYZ& thePoints );
virtual double GetBadRate( double Value, int nbNodes ) const;
virtual SMDSAbs_ElementType GetType() const;
-
+ virtual bool IsApplicable( const SMDS_MeshElement* element ) const;
+
private:
double ComputeA( const gp_XYZ&, const gp_XYZ&, const gp_XYZ&, const gp_XYZ& ) const;
};
virtual double GetValue( const TSequenceOfXYZ& thePoints );
virtual double GetBadRate( double Value, int nbNodes ) const;
virtual SMDSAbs_ElementType GetType() const;
+ virtual bool IsApplicable( const SMDS_MeshElement* element ) const;
};
/*
virtual double GetValue( const TSequenceOfXYZ& thePoints );
virtual double GetBadRate( double Value, int nbNodes ) const;
virtual SMDSAbs_ElementType GetType() const;
+ virtual bool IsApplicable( const SMDS_MeshElement* element ) const;
};
/*
Class : Length2D
- Description : Functor for calculating length of edge
+ Description : Functor for calculating minimal length of edges of element
*/
class SMESHCONTROLS_EXPORT Length2D: public virtual NumericalFunctor{
public:
- virtual double GetValue( long theElementId );
+ Length2D( SMDSAbs_ElementType type = SMDSAbs_Face );
+ virtual bool IsApplicable( const SMDS_MeshElement* element ) const;
+ virtual double GetValue( const TSequenceOfXYZ& thePoints );
virtual double GetBadRate( double Value, int nbNodes ) const;
virtual SMDSAbs_ElementType GetType() const;
struct Value{
};
typedef std::set<Value> TValues;
void GetValues(TValues& theValues);
+
+ private:
+ SMDSAbs_ElementType myType;
};
typedef boost::shared_ptr<Length2D> Length2DPtr;
+ /*
+ Class : Length2D
+ Description : Functor for calculating minimal length of edges of 3D element
+ */
+ class SMESHCONTROLS_EXPORT Length3D: public virtual Length2D {
+ public:
+ Length3D();
+ };
+ typedef boost::shared_ptr<Length3D> Length3DPtr;
+
+ /*
+ Class : Deflection2D
+ Description : Functor for calculating distance between a face and geometry
+ */
+ class SMESHCONTROLS_EXPORT Deflection2D: public virtual NumericalFunctor{
+ public:
+ virtual void SetMesh( const SMDS_Mesh* theMesh );
+ virtual double GetValue( const TSequenceOfXYZ& thePoints );
+ virtual double GetBadRate( double Value, int nbNodes ) const;
+ virtual SMDSAbs_ElementType GetType() const;
+ private:
+ Handle(ShapeAnalysis_Surface) mySurface;
+ int myShapeIndex;
+ boost::shared_ptr<gp_Pln> myPlane;
+ };
+
/*
Class : MultiConnection
Description : Functor for calculating number of faces connected to the edge
virtual SMDSAbs_ElementType GetType() const;
};
+ /*
+ Class : NodeConnectivityNumber
+ Description : Functor returning number of elements connected to a node
+ */
+ class SMESHCONTROLS_EXPORT NodeConnectivityNumber: public virtual NumericalFunctor{
+ public:
+ virtual double GetValue( long theNodeId );
+ virtual double GetBadRate( double Value, int nbNodes ) const;
+ virtual SMDSAbs_ElementType GetType() const;
+ };
+
+ /*
+ Class : ScaledJacobian
+ Description : Functor returning the ScaledJacobian as implemeted in VTK for volumetric elements
+ */
+ class SMESHCONTROLS_EXPORT ScaledJacobian: public virtual NumericalFunctor{
+ public:
+ virtual double GetValue( long theNodeId );
+ virtual double GetBadRate( double Value, int nbNodes ) const;
+ virtual SMDSAbs_ElementType GetType() const;
+ };
+
/*
PREDICATES
class SMESHCONTROLS_EXPORT CoincidentNodes: public Predicate {
public:
CoincidentNodes();
+ //virtual Predicate* clone() const { return new CoincidentNodes( *this ); }
virtual void SetMesh( const SMDS_Mesh* theMesh );
virtual bool IsSatisfy( long theElementId );
virtual SMDSAbs_ElementType GetType() const;
- void SetTolerance (const double theToler) { myToler = theToler; }
+ void SetTolerance (const double theToler);
double GetTolerance () const { return myToler; }
private:
- double myToler;
- TColStd_MapOfInteger myCoincidentIDs;
- TMeshModifTracer myMeshModifTracer;
+ double myToler;
+ TIDsMap myCoincidentIDs;
+ TMeshModifTracer myMeshModifTracer;
};
typedef boost::shared_ptr<CoincidentNodes> CoincidentNodesPtr;
class SMESHCONTROLS_EXPORT CoincidentElements1D: public CoincidentElements {
public:
virtual SMDSAbs_ElementType GetType() const;
+ //virtual Predicate* clone() const { return new CoincidentElements1D( *this ); }
};
class SMESHCONTROLS_EXPORT CoincidentElements2D: public CoincidentElements {
public:
virtual SMDSAbs_ElementType GetType() const;
+ //virtual Predicate* clone() const { return new CoincidentElements2D( *this ); }
};
class SMESHCONTROLS_EXPORT CoincidentElements3D: public CoincidentElements {
public:
virtual SMDSAbs_ElementType GetType() const;
+ //virtual Predicate* clone() const { return new CoincidentElements3D( *this ); }
};
/*
class SMESHCONTROLS_EXPORT FreeBorders: public virtual Predicate{
public:
FreeBorders();
+ //virtual Predicate* clone() const { return new FreeBorders( *this ); }
virtual void SetMesh( const SMDS_Mesh* theMesh );
virtual bool IsSatisfy( long theElementId );
virtual SMDSAbs_ElementType GetType() const;
class SMESHCONTROLS_EXPORT BadOrientedVolume: public virtual Predicate{
public:
BadOrientedVolume();
+ //virtual Predicate* clone() const { return new BadOrientedVolume( *this ); }
virtual void SetMesh( const SMDS_Mesh* theMesh );
virtual bool IsSatisfy( long theElementId );
virtual SMDSAbs_ElementType GetType() const;
class SMESHCONTROLS_EXPORT ElemEntityType: public virtual Predicate{
public:
ElemEntityType();
+ //virtual Predicate* clone() const { return new ElemEntityType( *this ); }
virtual void SetMesh( const SMDS_Mesh* theMesh );
virtual bool IsSatisfy( long theElementId );
void SetType( SMDSAbs_ElementType theType );
{
public:
BareBorderVolume():myMesh(0) {}
+ virtual Predicate* clone() const { return new BareBorderVolume( *this ); }
virtual void SetMesh( const SMDS_Mesh* theMesh ) { myMesh = theMesh; }
virtual SMDSAbs_ElementType GetType() const { return SMDSAbs_Volume; }
virtual bool IsSatisfy( long theElementId );
{
public:
BareBorderFace():myMesh(0) {}
+ //virtual Predicate* clone() const { return new BareBorderFace( *this ); }
virtual void SetMesh( const SMDS_Mesh* theMesh ) { myMesh = theMesh; }
virtual SMDSAbs_ElementType GetType() const { return SMDSAbs_Face; }
virtual bool IsSatisfy( long theElementId );
{
public:
OverConstrainedVolume():myMesh(0) {}
+ virtual Predicate* clone() const { return new OverConstrainedVolume( *this ); }
virtual void SetMesh( const SMDS_Mesh* theMesh ) { myMesh = theMesh; }
virtual SMDSAbs_ElementType GetType() const { return SMDSAbs_Volume; }
virtual bool IsSatisfy( long theElementId );
{
public:
OverConstrainedFace():myMesh(0) {}
+ //virtual Predicate* clone() const { return new OverConstrainedFace( *this ); }
virtual void SetMesh( const SMDS_Mesh* theMesh ) { myMesh = theMesh; }
virtual SMDSAbs_ElementType GetType() const { return SMDSAbs_Face; }
virtual bool IsSatisfy( long theElementId );
class SMESHCONTROLS_EXPORT FreeEdges: public virtual Predicate{
public:
FreeEdges();
+ //virtual Predicate* clone() const { return new FreeEdges( *this ); }
virtual void SetMesh( const SMDS_Mesh* theMesh );
virtual bool IsSatisfy( long theElementId );
virtual SMDSAbs_ElementType GetType() const;
- static bool IsFreeEdge( const SMDS_MeshNode** theNodes, const int theFaceId );
+ static bool IsFreeEdge( const SMDS_MeshNode** theNodes, const ::smIdType theFaceId );
typedef long TElemId;
struct Border{
TElemId myElemId;
class SMESHCONTROLS_EXPORT FreeNodes: public virtual Predicate{
public:
FreeNodes();
+ //virtual Predicate* clone() const { return new FreeNodes( *this ); }
virtual void SetMesh( const SMDS_Mesh* theMesh );
virtual bool IsSatisfy( long theNodeId );
virtual SMDSAbs_ElementType GetType() const;
class SMESHCONTROLS_EXPORT RangeOfIds: public virtual Predicate
{
public:
- RangeOfIds();
+ RangeOfIds();
+ //virtual Predicate* clone() const { return new RangeOfIds( *this ); }
virtual void SetMesh( const SMDS_Mesh* theMesh );
virtual bool IsSatisfy( long theNodeId );
virtual SMDSAbs_ElementType GetType() const;
protected:
const SMDS_Mesh* myMesh;
- TColStd_SequenceOfInteger myMin;
- TColStd_SequenceOfInteger myMax;
- TColStd_MapOfInteger myIds;
+ std::vector< ::smIdType > myMin;
+ std::vector< ::smIdType > myMax;
+ TIDsMap myIds;
SMDSAbs_ElementType myType;
};
class SMESHCONTROLS_EXPORT LessThan: public virtual Comparator{
public:
virtual bool IsSatisfy( long theElementId );
+ //virtual Predicate* clone() const { return new LessThan( *this ); }
};
class SMESHCONTROLS_EXPORT MoreThan: public virtual Comparator{
public:
virtual bool IsSatisfy( long theElementId );
+ //virtual Predicate* clone() const { return new MoreThan( *this ); }
};
class SMESHCONTROLS_EXPORT EqualTo: public virtual Comparator{
public:
EqualTo();
+ //virtual Predicate* clone() const { return new EqualTo( *this ); }
virtual bool IsSatisfy( long theElementId );
virtual void SetTolerance( double theTol );
virtual double GetTolerance();
class SMESHCONTROLS_EXPORT LogicalNOT: public virtual Predicate{
public:
LogicalNOT();
+ //virtual Predicate* clone() const { return new LogicalNOT( *this ); }
virtual ~LogicalNOT();
virtual bool IsSatisfy( long theElementId );
virtual void SetMesh( const SMDS_Mesh* theMesh );
class SMESHCONTROLS_EXPORT LogicalAND: public virtual LogicalBinary{
public:
virtual bool IsSatisfy( long theElementId );
+ //virtual Predicate* clone() const { return new LogicalAND( *this ); }
};
class SMESHCONTROLS_EXPORT LogicalOR: public virtual LogicalBinary{
public:
virtual bool IsSatisfy( long theElementId );
+ //virtual Predicate* clone() const { return new LogicalOR( *this ); }
};
ManifoldPart();
~ManifoldPart();
+ //virtual Predicate* clone() const { return new ManifoldPart( *this ); }
virtual void SetMesh( const SMDS_Mesh* theMesh );
- // inoke when all parameters already set
+ // invoke when all parameters already set
virtual bool IsSatisfy( long theElementId );
virtual SMDSAbs_ElementType GetType() const;
bool findConnected( const TDataMapFacePtrInt& theAllFacePtrInt,
SMDS_MeshFace* theStartFace,
TMapOfLink& theNonManifold,
- TColStd_MapOfInteger& theResFaces );
+ TIDsMap& theResFaces );
bool isInPlane( const SMDS_MeshFace* theFace1,
const SMDS_MeshFace* theFace2 );
void expandBoundary( TMapOfLink& theMapOfBoundary,
TMapOfLink& theNonManifold,
SMDS_MeshFace* theNextFace ) const;
- void getFacesByLink( const Link& theLink,
- TVectorOfFacePtr& theFaces ) const;
+ void getFacesByLink( const Link& theLink,
+ TVectorOfFacePtr& theFaces ) const;
private:
const SMDS_Mesh* myMesh;
- TColStd_MapOfInteger myMapIds;
- TColStd_MapOfInteger myMapBadGeomIds;
+ TIDsMap myMapIds;
+ TIDsMap myMapBadGeomIds;
TVectorOfFacePtr myAllFacePtr;
TDataMapFacePtrInt myAllFacePtrIntDMap;
double myAngToler;
};
typedef boost::shared_ptr<ManifoldPart> ManifoldPartPtr;
+ /*
+ Class : BelongToMeshGroup
+ Description : Verify whether a mesh element is included into a mesh group
+ */
+ class SMESHCONTROLS_EXPORT BelongToMeshGroup : public virtual Predicate
+ {
+ public:
+ BelongToMeshGroup();
+ //virtual Predicate* clone() const { return new BelongToMeshGroup( *this ); }
+ virtual void SetMesh( const SMDS_Mesh* theMesh );
+ virtual bool IsSatisfy( long theElementId );
+ virtual SMDSAbs_ElementType GetType() const;
+
+ void SetGroup( SMESHDS_GroupBase* g );
+ void SetStoreName( const std::string& sn );
+ const SMESHDS_GroupBase* GetGroup() const { return myGroup; }
+
+ private:
+ SMESHDS_GroupBase* myGroup;
+ std::string myStoreName;
+ };
+ typedef boost::shared_ptr<BelongToMeshGroup> BelongToMeshGroupPtr;
/*
Class : ElementsOnSurface
public:
ElementsOnSurface();
~ElementsOnSurface();
+ //virtual Predicate* clone() const { return new ElementsOnSurface( *this ); }
virtual void SetMesh( const SMDS_Mesh* theMesh );
virtual bool IsSatisfy( long theElementId );
virtual SMDSAbs_ElementType GetType() const;
private:
TMeshModifTracer myMeshModifTracer;
- TColStd_MapOfInteger myIds;
+ TIDsMap myIds;
SMDSAbs_ElementType myType;
- //Handle(Geom_Surface) mySurf;
TopoDS_Face mySurf;
double myToler;
bool myUseBoundaries;
Description : Predicate elements that lying on indicated shape
(1D, 2D or 3D)
*/
- class SMESHCONTROLS_EXPORT ElementsOnShape : public virtual Predicate
+ class SMESHCONTROLS_EXPORT ElementsOnShape : public Predicate
{
public:
ElementsOnShape();
~ElementsOnShape();
+ virtual Predicate* clone() const;
virtual void SetMesh (const SMDS_Mesh* theMesh);
virtual bool IsSatisfy (long theElementId);
virtual SMDSAbs_ElementType GetType() const;
bool GetAllNodes() const { return myAllNodesFlag; }
void SetShape (const TopoDS_Shape& theShape,
const SMDSAbs_ElementType theType);
+ bool IsSatisfy (const SMDS_MeshElement* elem);
+ bool IsSatisfy (const SMDS_MeshNode* node, TopoDS_Shape* okShape=0);
+ void GetParams( double & u, double & v ) const { u = myU; v = myV; }
private:
- struct TClassifier
- {
- TClassifier(const TopoDS_Shape& s, double tol) { Init(s,tol); }
- void Init(const TopoDS_Shape& s, double tol);
- bool IsOut(const gp_Pnt& p);
- TopAbs_ShapeEnum ShapeType() const;
- private:
- bool isOutOfSolid (const gp_Pnt& p);
- bool isOutOfBox (const gp_Pnt& p);
- bool isOutOfFace (const gp_Pnt& p);
- bool isOutOfEdge (const gp_Pnt& p);
- bool isOutOfVertex(const gp_Pnt& p);
- bool isBox (const TopoDS_Shape& s);
-
- bool (TClassifier::* myIsOutFun)(const gp_Pnt& p);
- BRepClass3d_SolidClassifier mySolidClfr;
- Bnd_B3d myBox;
- GeomAPI_ProjectPointOnSurf myProjFace;
- GeomAPI_ProjectPointOnCurve myProjEdge;
- gp_Pnt myVertexXYZ;
- TopoDS_Shape myShape;
- double myTol;
- };
- void clearClassifiers();
-
- std::vector< TClassifier* > myClassifiers;
- const SMDS_Mesh* myMesh;
- SMDSAbs_ElementType myType;
- TopoDS_Shape myShape;
- double myToler;
- bool myAllNodesFlag;
+ struct Classifier;
+ struct OctreeClassifier;
+ void clearClassifiers();
+ bool getNodeIsOut( const SMDS_MeshNode* n, bool& isOut );
+ void setNodeIsOut( const SMDS_MeshNode* n, bool isOut );
+
+ std::vector< Classifier > myClassifiers;
+ std::vector< Classifier* > myWorkClassifiers;
+ OctreeClassifier* myOctree;
+ SMDSAbs_ElementType myType;
+ TopoDS_Shape myShape;
+ double myToler;
+ double myU, myV; // result of node projection on EDGE or FACE
+ bool myAllNodesFlag;
+
+ TMeshModifTracer myMeshModifTracer;
+ std::vector<bool> myNodeIsChecked;
+ std::vector<bool> myNodeIsOut;
};
typedef boost::shared_ptr<ElementsOnShape> ElementsOnShapePtr;
{
public:
BelongToGeom();
+ virtual Predicate* clone() const;
virtual void SetMesh( const SMDS_Mesh* theMesh );
virtual void SetGeom( const TopoDS_Shape& theShape );
virtual void init();
TopoDS_Shape myShape;
+ TColStd_MapOfInteger mySubShapesIDs;
const SMESHDS_Mesh* myMeshDS;
SMDSAbs_ElementType myType;
bool myIsSubshape;
{
public:
LyingOnGeom();
+ virtual Predicate* clone() const;
virtual void SetMesh( const SMDS_Mesh* theMesh );
virtual void SetGeom( const TopoDS_Shape& theShape );
void SetTolerance( double );
double GetTolerance();
- virtual bool Contains( const SMESHDS_Mesh* theMeshDS,
- const TopoDS_Shape& theShape,
- const SMDS_MeshElement* theElem,
- TopAbs_ShapeEnum theFindShapeEnum,
- TopAbs_ShapeEnum theAvoidShapeEnum = TopAbs_SHAPE );
- private:
+ private:
virtual void init();
TopoDS_Shape myShape;
+ TColStd_MapOfInteger mySubShapesIDs;
const SMESHDS_Mesh* myMeshDS;
SMDSAbs_ElementType myType;
bool myIsSubshape;
class SMESHCONTROLS_EXPORT FreeFaces: public virtual Predicate{
public:
FreeFaces();
+ //virtual Predicate* clone() const { return new FreeFaces( *this ); }
virtual void SetMesh( const SMDS_Mesh* theMesh );
virtual bool IsSatisfy( long theElementId );
virtual SMDSAbs_ElementType GetType() const;
class SMESHCONTROLS_EXPORT LinearOrQuadratic: public virtual Predicate{
public:
LinearOrQuadratic();
+ //virtual Predicate* clone() const { return new LinearOrQuadratic( *this ); }
virtual void SetMesh( const SMDS_Mesh* theMesh );
virtual bool IsSatisfy( long theElementId );
void SetType( SMDSAbs_ElementType theType );
/*
Class : GroupColor
- Description : Functor for check color of group to whic mesh element belongs to
+ Description : Functor for check color of group to which mesh element belongs to
*/
class SMESHCONTROLS_EXPORT GroupColor: public virtual Predicate{
public:
GroupColor();
+ //virtual Predicate* clone() const { return new GroupColor( *this ); }
virtual void SetMesh( const SMDS_Mesh* theMesh );
virtual bool IsSatisfy( long theElementId );
void SetType( SMDSAbs_ElementType theType );
class SMESHCONTROLS_EXPORT ElemGeomType: public virtual Predicate{
public:
ElemGeomType();
+ //virtual Predicate* clone() const { return new ElemGeomType( *this ); }
virtual void SetMesh( const SMDS_Mesh* theMesh );
virtual bool IsSatisfy( long theElementId );
void SetType( SMDSAbs_ElementType theType );
{
public:
CoplanarFaces();
+ //virtual Predicate* clone() const { return new CoplanarFaces( *this ); }
void SetFace( long theID ) { myFaceID = theID; }
long GetFace() const { return myFaceID; }
void SetTolerance (const double theToler) { myToler = theToler; }
TMeshModifTracer myMeshModifTracer;
long myFaceID;
double myToler;
- std::set< long > myCoplanarIDs;
+ TIDsMap myCoplanarIDs;
};
typedef boost::shared_ptr<CoplanarFaces> CoplanarFacesPtr;
{
public:
ConnectedElements();
- void SetNode( int nodeID );
+ //virtual Predicate* clone() const { return new ConnectedElements( *this ); }
+ void SetNode( ::smIdType nodeID );
void SetPoint( double x, double y, double z );
- int GetNode() const;
+ ::smIdType GetNode() const;
std::vector<double> GetPoint() const;
void SetType( SMDSAbs_ElementType theType );
//const std::set<long>& GetDomainIDs() const { return myOkIDs; }
private:
- int myNodeID;
- std::vector<double> myXYZ;
- SMDSAbs_ElementType myType;
- TMeshModifTracer myMeshModifTracer;
+ ::smIdType myNodeID;
+ std::vector<double> myXYZ;
+ SMDSAbs_ElementType myType;
+ TMeshModifTracer myMeshModifTracer;
- void clearOkIDs();
- bool myOkIDsReady;
- std::set< int > myOkIDs; // empty means that there is one domain
+ void clearOkIDs();
+ bool myOkIDsReady;
+ std::set<::smIdType> myOkIDs; // empty means that there is one domain
};
typedef boost::shared_ptr<ConnectedElements> ConnectedElementsPtr;
virtual
void
- GetElementsId( const SMDS_Mesh* theMesh,
- TIdSequence& theSequence );
+ GetElementsId( const SMDS_Mesh* theMesh,
+ TIdSequence& theSequence,
+ SMDS_ElemIteratorPtr theElements=0);
static
void
- GetElementsId( const SMDS_Mesh* theMesh,
- PredicatePtr thePredicate,
- TIdSequence& theSequence );
+ GetElementsId( const SMDS_Mesh* theMesh,
+ PredicatePtr thePredicate,
+ TIdSequence& theSequence,
+ SMDS_ElemIteratorPtr theElements=0 );
protected:
PredicatePtr myPredicate;
};
- };
-};
+ }
+}
#endif