-// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2014 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
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
-// version 2.1 of the License.
+// version 2.1 of the License, or (at your option) any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
#ifndef _SMESH_CONTROLSDEF_HXX_
#define _SMESH_CONTROLSDEF_HXX_
-#include <set>
-#include <map>
-#include <vector>
+#include "SMESH_Controls.hxx"
-#include <boost/shared_ptr.hpp>
+#include "SMDS_MeshNode.hxx"
+#include "SMESH_TypeDefs.hxx"
-#include <gp_XYZ.hxx>
-#include <GeomAPI_ProjectPointOnSurf.hxx>
+#include <BRepClass3d_SolidClassifier.hxx>
+#include <Bnd_B3d.hxx>
#include <GeomAPI_ProjectPointOnCurve.hxx>
-#include <TColStd_SequenceOfInteger.hxx>
+#include <GeomAPI_ProjectPointOnSurf.hxx>
+#include <Quantity_Color.hxx>
#include <TColStd_MapOfInteger.hxx>
+#include <TColStd_SequenceOfInteger.hxx>
#include <TCollection_AsciiString.hxx>
#include <TopAbs.hxx>
-#include <TopoDS_Face.hxx>
#include <TopTools_MapOfShape.hxx>
-#include <BRepClass3d_SolidClassifier.hxx>
-#include <Quantity_Color.hxx>
+#include <TopoDS_Face.hxx>
+#include <gp_XYZ.hxx>
-#include "SMDSAbs_ElementType.hxx"
-#include "SMDS_MeshNode.hxx"
-#include "SMESH_TypeDefs.hxx"
+#include <set>
+#include <map>
+#include <vector>
-#include "SMESH_Controls.hxx"
+#include <boost/shared_ptr.hpp>
class SMDS_MeshElement;
class SMDS_MeshFace;
virtual SMDSAbs_ElementType GetType() const;
};
-
/*
Class : Skew
Description : Functor for calculating skew in degrees
/*
Class : MultiConnection
- Description : Functor for calculating number of faces conneted to the edge
+ Description : Functor for calculating number of faces connected to the edge
*/
class SMESHCONTROLS_EXPORT MultiConnection: public virtual NumericalFunctor{
public:
/*
Class : MultiConnection2D
- Description : Functor for calculating number of faces conneted to the edge
+ Description : Functor for calculating number of faces connected to the edge
*/
class SMESHCONTROLS_EXPORT MultiConnection2D: public virtual NumericalFunctor{
public:
const SMDS_Mesh* myMesh;
};
+ /*
+ Class : ElemEntityType
+ Description : Functor for calculating entity type
+ */
+ class SMESHCONTROLS_EXPORT ElemEntityType: public virtual Predicate{
+ public:
+ ElemEntityType();
+ virtual void SetMesh( const SMDS_Mesh* theMesh );
+ virtual bool IsSatisfy( long theElementId );
+ void SetType( SMDSAbs_ElementType theType );
+ virtual SMDSAbs_ElementType GetType() const;
+ void SetElemEntityType( SMDSAbs_EntityType theEntityType );
+ SMDSAbs_EntityType GetElemEntityType() const;
+
+ private:
+ const SMDS_Mesh* myMesh;
+ SMDSAbs_ElementType myType;
+ SMDSAbs_EntityType myEntityType;
+ };
+ typedef boost::shared_ptr<ElemEntityType> ElemEntityTypePtr;
+
+
/*
BareBorderVolume
*/
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;
typedef boost::shared_ptr<ElementsOnShape> ElementsOnShapePtr;
+ /*
+ Class : BelongToGeom
+ Description : Predicate for verifying whether entiy belong to
+ specified geometrical support
+ */
+ class SMESHCONTROLS_EXPORT BelongToGeom: public virtual Predicate
+ {
+ public:
+ BelongToGeom();
+
+ virtual void SetMesh( const SMDS_Mesh* theMesh );
+ virtual void SetGeom( const TopoDS_Shape& theShape );
+
+ virtual bool IsSatisfy( long theElementId );
+
+ virtual void SetType( SMDSAbs_ElementType theType );
+ virtual SMDSAbs_ElementType GetType() const;
+
+ TopoDS_Shape GetShape();
+ const SMESHDS_Mesh* GetMeshDS() const;
+
+ void SetTolerance( double );
+ double GetTolerance();
+
+ private:
+ virtual void init();
+
+ TopoDS_Shape myShape;
+ const SMESHDS_Mesh* myMeshDS;
+ SMDSAbs_ElementType myType;
+ bool myIsSubshape;
+ double myTolerance; // only if myIsSubshape == false
+ Controls::ElementsOnShapePtr myElementsOnShapePtr; // only if myIsSubshape == false
+ };
+ typedef boost::shared_ptr<BelongToGeom> BelongToGeomPtr;
+
+ /*
+ Class : LyingOnGeom
+ Description : Predicate for verifying whether entiy lying or partially lying on
+ specified geometrical support
+ */
+ class SMESHCONTROLS_EXPORT LyingOnGeom: public virtual Predicate
+ {
+ public:
+ LyingOnGeom();
+
+ virtual void SetMesh( const SMDS_Mesh* theMesh );
+ virtual void SetGeom( const TopoDS_Shape& theShape );
+
+ virtual bool IsSatisfy( long theElementId );
+
+ virtual void SetType( SMDSAbs_ElementType theType );
+ virtual SMDSAbs_ElementType GetType() const;
+
+ TopoDS_Shape GetShape();
+ const SMESHDS_Mesh* GetMeshDS() const;
+
+ 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:
+ virtual void init();
+
+ TopoDS_Shape myShape;
+ const SMESHDS_Mesh* myMeshDS;
+ SMDSAbs_ElementType myType;
+ bool myIsSubshape;
+ double myTolerance; // only if myIsSubshape == false
+ Controls::ElementsOnShapePtr myElementsOnShapePtr; // only if myIsSubshape == false
+ };
+ typedef boost::shared_ptr<LyingOnGeom> LyingOnGeomPtr;
+
/*
Class : FreeFaces
Description : Predicate for free faces
void SetType( SMDSAbs_ElementType theType );
virtual SMDSAbs_ElementType GetType() const;
void SetGeomType( SMDSAbs_GeometryType theType );
- virtual SMDSAbs_GeometryType GetGeomType() const;
+ SMDSAbs_GeometryType GetGeomType() const;
private:
const SMDS_Mesh* myMesh;
};
typedef boost::shared_ptr<CoplanarFaces> CoplanarFacesPtr;
+ /*
+ Class : ConnectedElements
+ Description : Predicate to get elements of one domain
+ */
+ class SMESHCONTROLS_EXPORT ConnectedElements: public virtual Predicate
+ {
+ public:
+ ConnectedElements();
+ void SetNode( int nodeID );
+ void SetPoint( double x, double y, double z );
+ int GetNode() const;
+ std::vector<double> GetPoint() const;
+
+ void SetType( SMDSAbs_ElementType theType );
+ virtual SMDSAbs_ElementType GetType() const;
+
+ virtual void SetMesh( const SMDS_Mesh* theMesh );
+ virtual bool IsSatisfy( long theElementId );
+
+ //const std::set<long>& GetDomainIDs() const { return myOkIDs; }
+
+ private:
+ int 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
+ };
+ typedef boost::shared_ptr<ConnectedElements> ConnectedElementsPtr;
+
/*
FILTER
*/
- class SMESHCONTROLS_EXPORT Filter{
+ class SMESHCONTROLS_EXPORT Filter {
public:
Filter();
virtual ~Filter();