Data Structures | |
struct | TFaceLink |
< link and faces sharing it (used in findOuterBoundary()) More... | |
struct | TInters |
< data of intersection of the line and the mesh face (used in GetPointState()) More... | |
Public Member Functions | |
SMESH_ElementSearcherImpl (SMDS_Mesh &mesh, double tol=-1, SMDS_ElemIteratorPtr elemIt=SMDS_ElemIteratorPtr()) | |
virtual | ~SMESH_ElementSearcherImpl () |
virtual int | FindElementsByPoint (const gp_Pnt &point, SMDSAbs_ElementType type, vector< const SMDS_MeshElement * > &foundElements) |
Find elements of given type where the given point is IN or ON. More... | |
virtual TopAbs_State | GetPointState (const gp_Pnt &point) |
Classify the given point in the closed 2D mesh. More... | |
virtual const SMDS_MeshElement * | FindClosestTo (const gp_Pnt &point, SMDSAbs_ElementType type) |
Find an element of given type most close to the given point. More... | |
void | GetElementsNearLine (const gp_Ax1 &line, SMDSAbs_ElementType type, vector< const SMDS_MeshElement * > &foundElems) |
Return elements possibly intersecting the line. More... | |
void | GetElementsInSphere (const gp_XYZ ¢er, const double radius, SMDSAbs_ElementType type, vector< const SMDS_MeshElement * > &foundElems) |
Return elements whose bounding box intersects a sphere. More... | |
double | getTolerance () |
define tolerance for search More... | |
bool | getIntersParamOnLine (const gp_Lin &line, const SMDS_MeshElement *face, const double tolerance, double ¶m) |
Find intersection of the line and an edge of face and return parameter on line. More... | |
void | findOuterBoundary (const SMDS_MeshElement *anyOuterFace) |
Find all faces belonging to the outer boundary of mesh. More... | |
bool | isOuterBoundary (const SMDS_MeshElement *face) const |
int | getTreeHeight () |
Data Fields | |
SMDS_Mesh * | _mesh |
SMDS_ElemIteratorPtr | _meshPartIt |
ElementBndBoxTree * | _ebbTree [SMDSAbs_NbElementTypes] |
int | _ebbTreeHeight [SMDSAbs_NbElementTypes] |
SMESH_NodeSearcherImpl * | _nodeSearcher |
SMDSAbs_ElementType | _elementType |
double | _tolerance |
bool | _outerFacesFound |
set< const SMDS_MeshElement * > | _outerFaces |
SMESH_ElementSearcherImpl::SMESH_ElementSearcherImpl | ( | SMDS_Mesh & | mesh, |
double | tol = -1 , |
||
SMDS_ElemIteratorPtr | elemIt = SMDS_ElemIteratorPtr() |
||
) |
References _ebbTree, _ebbTreeHeight, _elementType, SMDSAbs_All, and SMDSAbs_NbElementTypes.
|
virtual |
References _ebbTree, _nodeSearcher, and SMDSAbs_NbElementTypes.
|
virtual |
Find an element of given type most close to the given point.
WARNING: Only face search is implemeneted so far
Implements SMESH_ElementSearcher.
References _ebbTree, _elementType, _mesh, _meshPartIt, MESHCUT::d, SMESH_MeshAlgos::GetDistance(), getTreeHeight(), SMDS_MeshElement::NbNodes(), SMDS_MeshElement::nodesIterator(), SMDSAbs_Face, and SMDSAbs_Volume.
|
virtual |
Find elements of given type where the given point is IN or ON.
Returns nb of found elements and elements them-selves.
'ALL' type means elements of any type excluding nodes, balls and 0D elements
Implements SMESH_ElementSearcher.
References _ebbTree, _elementType, _mesh, _meshPartIt, _nodeSearcher, SMESH_NodeSearcherImpl::FindNearPoint(), getTolerance(), SMESH_MeshAlgos::IsOut(), SMDSAbs_0DElement, SMDSAbs_Ball, and SMDSAbs_Node.
void SMESH_ElementSearcherImpl::findOuterBoundary | ( | const SMDS_MeshElement * | anyOuterFace | ) |
Find all faces belonging to the outer boundary of mesh.
References _outerFaces, _outerFacesFound, SMESH_MeshAlgos::FaceNormal(), SMESH_MeshAlgos::FindFaceInSet(), SMDS_MeshElement::GetNode(), SMDS_MeshElement::GetNodeIndex(), SMDS_MeshElement::NbCornerNodes(), SMESH_TLink::node1(), and SMESH_TLink::node2().
Referenced by GetPointState().
|
virtual |
Return elements whose bounding box intersects a sphere.
Implements SMESH_ElementSearcher.
References _ebbTree, _elementType, _mesh, and _meshPartIt.
|
virtual |
Return elements possibly intersecting the line.
Implements SMESH_ElementSearcher.
References _ebbTree, _elementType, _mesh, and _meshPartIt.
bool SMESH_ElementSearcherImpl::getIntersParamOnLine | ( | const gp_Lin & | line, |
const SMDS_MeshElement * | face, | ||
const double | tolerance, | ||
double & | param | ||
) |
Find intersection of the line and an edge of face and return parameter on line.
References SMDS_MeshElement::GetNode(), Handle(), SMDS_MeshElement::IsQuadratic(), and SMDS_MeshElement::NbNodes().
Referenced by GetPointState().
|
virtual |
Classify the given point in the closed 2D mesh.
Implements SMESH_ElementSearcher.
References _ebbTree, _elementType, _mesh, _meshPartIt, _outerFacesFound, SMESH_MeshAlgos::FaceNormal(), findOuterBoundary(), SMESH_MeshAlgos::GetCommonNodes(), getIntersParamOnLine(), getTolerance(), SMESH_MeshAlgos::IsOut(), isOuterBoundary(), and SMDSAbs_Face.
double SMESH_ElementSearcherImpl::getTolerance | ( | ) |
define tolerance for search
References _ebbTree, _elementType, _mesh, _nodeSearcher, _tolerance, SMESH_TNodeXYZ::Distance(), SMDS_Mesh::elementsIterator(), SMDS_Mesh::GetMeshInfo(), SMESH_NodeSearcherImpl::getTree(), SMESH_Octree::maxSize(), SMDS_MeshInfo::NbElements(), SMDS_MeshInfo::NbNodes(), SMDS_MeshElement::nodesIterator(), SMDS_Mesh::nodesIterator(), SMDSAbs_All, SMDSAbs_Node, and SMDSAbs_Volume.
Referenced by FindElementsByPoint(), and GetPointState().
int SMESH_ElementSearcherImpl::getTreeHeight | ( | ) |
References _ebbTree, _ebbTreeHeight, and _elementType.
Referenced by FindClosestTo().
bool SMESH_ElementSearcherImpl::isOuterBoundary | ( | const SMDS_MeshElement * | face | ) | const |
References _outerFaces.
Referenced by GetPointState().
ElementBndBoxTree* SMESH_ElementSearcherImpl::_ebbTree[SMDSAbs_NbElementTypes] |
int SMESH_ElementSearcherImpl::_ebbTreeHeight[SMDSAbs_NbElementTypes] |
Referenced by getTreeHeight(), and SMESH_ElementSearcherImpl().
SMDSAbs_ElementType SMESH_ElementSearcherImpl::_elementType |
SMDS_Mesh* SMESH_ElementSearcherImpl::_mesh |
Referenced by FindClosestTo(), FindElementsByPoint(), GetElementsInSphere(), GetElementsNearLine(), GetPointState(), and getTolerance().
SMDS_ElemIteratorPtr SMESH_ElementSearcherImpl::_meshPartIt |
Referenced by FindClosestTo(), FindElementsByPoint(), GetElementsInSphere(), GetElementsNearLine(), and GetPointState().
SMESH_NodeSearcherImpl* SMESH_ElementSearcherImpl::_nodeSearcher |
Referenced by FindElementsByPoint(), getTolerance(), and ~SMESH_ElementSearcherImpl().
set<const SMDS_MeshElement*> SMESH_ElementSearcherImpl::_outerFaces |
Referenced by findOuterBoundary(), and isOuterBoundary().
bool SMESH_ElementSearcherImpl::_outerFacesFound |
Referenced by findOuterBoundary(), and GetPointState().
double SMESH_ElementSearcherImpl::_tolerance |
Referenced by getTolerance().