#include <SMESH_Block.hxx>

Data Structures | |
| class | TEdge |
| class | TFace |
Public Types | |
| enum | TShapeID { ID_NONE = 0, ID_V000 = 1, ID_V100, ID_V010, ID_V110, ID_V001, ID_V101, ID_V011, ID_V111, ID_Ex00, ID_Ex10, ID_Ex01, ID_Ex11, ID_E0y0, ID_E1y0, ID_E0y1, ID_E1y1, ID_E00z, ID_E10z, ID_E01z, ID_E11z, ID_Fxy0, ID_Fxy1, ID_Fx0z, ID_Fx1z, ID_F0yz, ID_F1yz, ID_Shell, ID_FirstV = ID_V000, ID_FirstE = ID_Ex00, ID_FirstF = ID_Fxy0 } |
Public Member Functions | |
| SMESH_Block () | |
| bool | LoadBlockShapes (const TopoDS_Shell &theShell, const TopoDS_Vertex &theVertex000, const TopoDS_Vertex &theVertex001, TopTools_IndexedMapOfOrientedShape &theShapeIDMap) |
| bool | LoadBlockShapes (const TopTools_IndexedMapOfOrientedShape &theShapeIDMap) |
| Initialize block geometry with shapes from theShapeIDMap. More... | |
| bool | LoadMeshBlock (const SMDS_MeshVolume *theVolume, const int theNode000Index, const int theNode001Index, std::vector< const SMDS_MeshNode * > &theOrderedNodes) |
| bool | LoadFace (const TopoDS_Face &theFace, const int theFaceID, const TopTools_IndexedMapOfOrientedShape &theShapeIDMap) |
| Load face geometry. More... | |
| bool | VertexPoint (const int theVertexID, gp_XYZ &thePoint) const |
| bool | EdgePoint (const int theEdgeID, const gp_XYZ &theParams, gp_XYZ &thePoint) const |
| bool | EdgeU (const int theEdgeID, const gp_XYZ &theParams, double &theU) const |
| bool | FacePoint (const int theFaceID, const gp_XYZ &theParams, gp_XYZ &thePoint) const |
| bool | FaceUV (const int theFaceID, const gp_XYZ &theParams, gp_XY &theUV) const |
| bool | ShellPoint (const gp_XYZ &theParams, gp_XYZ &thePoint) const |
| bool | ComputeParameters (const gp_Pnt &thePoint, gp_XYZ &theParams, const int theShapeID=ID_Shell, const gp_XYZ &theParamsHint=gp_XYZ(-1,-1,-1)) |
| bool | VertexParameters (const int theVertexID, gp_XYZ &theParams) |
| bool | EdgeParameters (const int theEdgeID, const double theU, gp_XYZ &theParams) |
| void | SetTolerance (const double tol) |
| double | GetTolerance () const |
| bool | IsToleranceReached () const |
| double | DistanceReached () const |
| Standard_Integer | NbVariables () const |
| Standard_Integer | NbEquations () const |
| Standard_Boolean | Value (const math_Vector &X, math_Vector &F) |
| Standard_Boolean | Derivatives (const math_Vector &X, math_Matrix &D) |
| Standard_Boolean | Values (const math_Vector &X, math_Vector &F, math_Matrix &D) |
| Standard_Integer | GetStateNumber () |
Static Public Member Functions | |
| static int | NbVertices () |
| static int | NbEdges () |
| static int | NbFaces () |
| static int | NbSubShapes () |
| static bool | IsVertexID (int theShapeID) |
| static bool | IsEdgeID (int theShapeID) |
| static bool | IsFaceID (int theShapeID) |
| static int | ShapeIndex (int theShapeID) |
| static void | GetFaceEdgesIDs (const int faceID, std::vector< int > &edgeVec) |
| static void | GetEdgeVertexIDs (const int edgeID, std::vector< int > &vertexVec) |
| static int | GetCoordIndOnEdge (const int theEdgeID) |
| static double * | GetShapeCoef (const int theShapeID) |
| static int | GetShapeIDByParams (const gp_XYZ &theParams) |
| static std::ostream & | DumpShapeID (const int theBlockShapeID, std::ostream &stream) |
| static bool | Insert (const TopoDS_Shape &theShape, const int theShapeID, TopTools_IndexedMapOfOrientedShape &theShapeIDMap) |
| / Insert theShape into theShapeIDMap with theShapeID More... | |
| static bool | FindBlockShapes (const TopoDS_Shell &theShell, const TopoDS_Vertex &theVertex000, const TopoDS_Vertex &theVertex001, TopTools_IndexedMapOfOrientedShape &theShapeIDMap) |
| static bool | ShellPoint (const gp_XYZ &theParams, const std::vector< gp_XYZ > &thePointOnShape, gp_XYZ &thePoint) |
| static bool | IsForwardEdge (const TopoDS_Edge &theEdge, const TopTools_IndexedMapOfOrientedShape &theShapeIDMap) |
| static int | GetOrderedEdges (const TopoDS_Face &theFace, std::list< TopoDS_Edge > &theEdges, std::list< int > &theNbEdgesInWires, TopoDS_Vertex theFirstVertex=TopoDS_Vertex(), const bool theShapeAnalysisAlgo=false) |
| Return number of wires and a list of oredered edges. More... | |
Protected Types | |
| enum | { SQUARE_DIST = 0, DRV_1, DRV_2, DRV_3 } |
| typedef std::pair< gp_XYZ, gp_XYZ > | TxyzPair |
Protected Member Functions | |
| void | init () |
| Call it after geometry initialisation. More... | |
| double | distance () const |
| double | funcValue (double sqDist) const |
| bool | computeParameters (const gp_Pnt &thePoint, gp_XYZ &theParams, const gp_XYZ &theParamsHint, int) |
| void | refineParametersOnFace (const gp_Pnt &thePoint, gp_XYZ &theParams, int theFaceID) |
| Find more precise solution. More... | |
| bool | findUVByHalfDivision (const gp_Pnt &thePoint, const gp_XY &theUV, const TFace &tface, gp_XYZ &theParams) |
| Finds parameters corresponding to a given UV of a given face using half-division. More... | |
| bool | findUVAround (const gp_Pnt &thePoint, const gp_XY &theUV, const TFace &tface, gp_XYZ &theParams, int nbGetWorstLimit) |
| Finds parameters corresponding to a given UV of a given face by searching around the starting solution. More... | |
| bool | saveBetterSolution (const gp_XYZ &theNewParams, gp_XYZ &theParams, double sqDistance) |
| Store a solution if it's better than a previous one. More... | |
Protected Attributes | |
| gp_XYZ | myPnt [8] |
| TEdge | myEdge [12] |
| TFace | myFace [6] |
| int | myFaceIndex |
| double | myFaceParam |
| int | myNbIterations |
| double | mySumDist |
| double | myTolerance |
| bool | mySquareFunc |
| gp_XYZ | myPoint |
| gp_XYZ | myParam |
| double | myValues [4] |
| TxyzPair | my3x3x3GridNodes [1000] |
| bool | myGridComputed |
|
protected |
| SMESH_Block::SMESH_Block | ( | ) |
| bool SMESH_Block::ComputeParameters | ( | const gp_Pnt & | thePoint, |
| gp_XYZ & | theParams, | ||
| const int | theShapeID = ID_Shell, |
||
| const gp_XYZ & | theParamsHint = gp_XYZ(-1,-1,-1) |
||
| ) |
References computeParameters(), distance(), EdgeParameters(), SMESH_Block::TEdge::GetCurve(), GetShapeCoef(), ID_FirstE, IsEdgeID(), IsFaceID(), MESSAGE, my3x3x3GridNodes, myEdge, myFaceIndex, myFaceParam, myGridComputed, myNbIterations, mySumDist, myTolerance, myValues, SMESH_Block::TEdge::Point(), refineParametersOnFace(), ShellPoint(), SQUARE_DIST, and VertexParameters().
Referenced by StdMeshers_Projection_3D::Compute(), and StdMeshers_SMESHBlock::ComputeParameters().
|
protected |
References distance(), MESSAGE, myFaceIndex, myFaceParam, myNbIterations, myParam, myPoint, mySquareFunc, mySumDist, myTolerance, myValues, refineParametersOnFace(), and SQUARE_DIST.
Referenced by ComputeParameters().
| Standard_Boolean SMESH_Block::Derivatives | ( | const math_Vector & | X, |
| math_Matrix & | D | ||
| ) |
References Values().
|
protected |
| double SMESH_Block::DistanceReached | ( | ) | const |
|
static |
References CASEDUMP, ID_E00z, ID_E01z, ID_E0y0, ID_E0y1, ID_E10z, ID_E11z, ID_E1y0, ID_E1y1, ID_Ex00, ID_Ex01, ID_Ex10, ID_Ex11, ID_F0yz, ID_F1yz, ID_Fx0z, ID_Fx1z, ID_Fxy0, ID_Fxy1, ID_Shell, ID_V000, ID_V001, ID_V010, ID_V011, ID_V100, ID_V101, ID_V110, and ID_V111.
Referenced by StdMeshers_PrismAsBlock::TSideFace::dumpNodes().
References SMESH_Block::TEdge::CoordInd(), SMESH_Block::TEdge::EndParam(), GetEdgeVertexIDs(), ID_Ex00, IsEdgeID(), myEdge, and VertexParameters().
Referenced by StdMeshers_SMESHBlock::ComputeParameters(), and ComputeParameters().
| bool SMESH_Block::EdgePoint | ( | const int | theEdgeID, |
| const gp_XYZ & | theParams, | ||
| gp_XYZ & | thePoint | ||
| ) | const |
Referenced by SMESH_Pattern::Apply(), StdMeshers_SMESHBlock::Point(), and StdMeshers_Penta_3D::SetHorizEdgeXYZ().
| bool SMESH_Block::FacePoint | ( | const int | theFaceID, |
| const gp_XYZ & | theParams, | ||
| gp_XYZ & | thePoint | ||
| ) | const |
Referenced by SMESH_Pattern::Apply(), and StdMeshers_SMESHBlock::Point().
|
static |
References Edge, Face, GetOrderedEdges(), and MESSAGE.
Referenced by StdMeshers_Projection_3D::IsApplicable(), StdMeshers_Prism_3D::IsApplicable(), SMESH_MesherHelper::IsBlock(), and LoadBlockShapes().
|
protected |
Finds parameters corresponding to a given UV of a given face by searching around the starting solution.
| [in] | theUV | - the UV to locate |
| [in] | tface | - the face |
| [in,out] | theParams | - the starting parameters to improve |
| [in] | nbGetWorstLimit | - nb of steps from the starting solution w/o improvement to stop searching in this direction |
true if found solution is within myTolerance References distance(), SMESH_Block::TFace::GetUInd(), SMESH_Block::TFace::GetVInd(), Max(), Min(), SMESH_Block::TFace::Point(), and saveBetterSolution().
Referenced by refineParametersOnFace().
|
protected |
Finds parameters corresponding to a given UV of a given face using half-division.
| [in] | theUV | - the UV to locate |
| [in] | tface | - the face |
| [in,out] | theParams | - the starting parameters to improve |
true if found solution is within myTolerance References distance(), SMESH_Block::TFace::GetUInd(), SMESH_Block::TFace::GetVInd(), SMESH_Block::TFace::IsUVInQuad(), Max(), Min(), SMESH_Block::TFace::Point(), and saveBetterSolution().
Referenced by refineParametersOnFace().
Referenced by SMESH_Block::TEdge::Set(), and StdMeshers_Penta_3D::SetHorizEdgeXYZ().
References ID_E00z, ID_E01z, ID_E0y0, ID_E0y1, ID_E10z, ID_E11z, ID_E1y0, ID_E1y1, ID_Ex00, ID_Ex01, ID_Ex10, ID_Ex11, ID_V000, ID_V001, ID_V010, ID_V011, ID_V100, ID_V101, ID_V110, ID_V111, and MESSAGE.
Referenced by SMESH_Pattern::Apply(), StdMeshers_Projection_3D::Compute(), EdgeParameters(), StdMeshers_PrismAsBlock::Init(), StdMeshers_PrismAsBlock::TSideFace::InsertSubShapes(), and LoadMeshBlock().
References ID_E00z, ID_E01z, ID_E0y0, ID_E0y1, ID_E10z, ID_E11z, ID_E1y0, ID_E1y1, ID_Ex00, ID_Ex01, ID_Ex10, ID_Ex11, ID_F0yz, ID_F1yz, ID_Fx0z, ID_Fx1z, ID_Fxy0, ID_Fxy1, and MESSAGE.
Referenced by SMESH_Pattern::Apply(), StdMeshers_Projection_3D::Compute(), StdMeshers_PrismAsBlock::Init(), StdMeshers_PrismAsBlock::TSideFace::InsertSubShapes(), LoadFace(), LoadMeshBlock(), StdMeshers_Prism_3D::setFaceAndEdgesXYZ(), and StdMeshers_Penta_3D::SetHorizEdgeXYZ().
|
static |
Return number of wires and a list of oredered edges.
| theFace | - the face to process |
| theEdges | - all ordered edges of theFace (outer edges go first). |
| theNbEdgesInWires | - nb of edges (== nb of vertices in closed wire) in each wire |
| theFirstVertex | - the vertex of the outer wire to set first in the returned list ( theFirstVertex may be NULL ) |
| theShapeAnalysisAlgo | - if true, ShapeAnalysis::OuterWire() is used to find the outer wire else BRepTools::OuterWire() is used. |
| int | - nb of wires |
Always try to set a seam edge first. BRepTools::OuterWire() fails e.g. in the case of issue 0020184, ShapeAnalysis::OuterWire() fails in the case of issue 0020452
References Edge, Handle(), and MESSAGE.
Referenced by SMESH_Pattern::Apply(), StdMeshers_Quadrangle_2D::CheckNbEdges(), StdMeshers_Quadrangle_2D::checkNbEdgesForEvaluate(), StdMeshers_Projection_2D::Compute(), FindBlockShapes(), StdMeshers_ProjectionUtils::FindFaceAssociation(), StdMeshers_FaceSide::GetFaceWires(), _QuadFaceGrid::Init(), StdMeshers_Prism_3D::initPrism(), and SMESH_MesherHelper::IsStructured().
|
static |
Referenced by ComputeParameters().
|
static |
References MESSAGE.
Referenced by SMESH_Pattern::findBoundaryPoints(), and StdMeshers_Penta_3D::FindNodeOnShape().
| Standard_Integer SMESH_Block::GetStateNumber | ( | ) |
| double SMESH_Block::GetTolerance | ( | ) | const |
|
protected |
Call it after geometry initialisation.
References myGridComputed, myNbIterations, and mySumDist.
Referenced by StdMeshers_PrismAsBlock::Init(), LoadBlockShapes(), and LoadMeshBlock().
|
static |
/ Insert theShape into theShapeIDMap with theShapeID
| theShape | - shape to insert |
| theShapeID | - shape in-block ID |
| theShapeIDMap | - map of block sub-shapes |
Referenced by StdMeshers_PrismAsBlock::Init(), and StdMeshers_PrismAsBlock::TSideFace::InsertSubShapes().
|
static |
Referenced by StdMeshers_SMESHBlock::IsForwadEdge(), LoadBlockShapes(), and LoadFace().
| bool SMESH_Block::IsToleranceReached | ( | ) | const |
References distance(), and myTolerance.
| bool SMESH_Block::LoadBlockShapes | ( | const TopoDS_Shell & | theShell, |
| const TopoDS_Vertex & | theVertex000, | ||
| const TopoDS_Vertex & | theVertex001, | ||
| TopTools_IndexedMapOfOrientedShape & | theShapeIDMap | ||
| ) |
References FindBlockShapes().
Referenced by SMESH_Pattern::Apply(), StdMeshers_Projection_3D::Compute(), and StdMeshers_SMESHBlock::Load().
| bool SMESH_Block::LoadBlockShapes | ( | const TopTools_IndexedMapOfOrientedShape & | theShapeIDMap | ) |
Initialize block geometry with shapes from theShapeIDMap.
| theShapeIDMap | - map of block sub-shapes |
| bool | - is a success |
References Edge, Face, ID_FirstE, ID_V000, ID_V111, init(), IsEdgeID(), IsForwardEdge(), IsVertexID(), LoadFace(), myEdge, myPnt, and SMESH_Block::TEdge::Set().
| bool SMESH_Block::LoadFace | ( | const TopoDS_Face & | theFace, |
| const int | theFaceID, | ||
| const TopTools_IndexedMapOfOrientedShape & | theShapeIDMap | ||
| ) |
Load face geometry.
| theFace | - face |
| theFaceID | - face in-block ID |
| theShapeIDMap | - map of block sub-shapes |
| bool | - is a success |
It is enough to compute params or coordinates on the face. Face sub-shapes must be loaded into theShapeIDMap before
References Edge, GetFaceEdgesIDs(), ID_FirstF, IsFaceID(), IsForwardEdge(), myFace, and SMESH_Block::TFace::Set().
Referenced by LoadBlockShapes().
| bool SMESH_Block::LoadMeshBlock | ( | const SMDS_MeshVolume * | theVolume, |
| const int | theNode000Index, | ||
| const int | theNode001Index, | ||
| std::vector< const SMDS_MeshNode * > & | theOrderedNodes | ||
| ) |
References GetEdgeVertexIDs(), GetFaceEdgesIDs(), SMDS_VolumeTool::GetFaceNodesIndices(), SMDS_VolumeTool::GetNodes(), gpXYZ, ID_Ex00, ID_FirstE, ID_FirstF, ID_Fxy0, ID_Shell, ID_V000, ID_V001, ID_V010, ID_V011, ID_V100, ID_V101, ID_V110, ID_V111, init(), SMDS_VolumeTool::IsLinked(), MESSAGE, myEdge, myFace, myPnt, NbEdges(), SMDS_VolumeTool::NbFaces(), SMDS_VolumeTool::NbNodes(), SMDS_VolumeTool::Set(), SMESH_Block::TEdge::Set(), SMESH_Block::TFace::Set(), and SMDS_VolumeTool::SetExternalNormal().
Referenced by SMESH_Pattern::Apply().
|
static |
Referenced by LoadMeshBlock(), and StdMeshers_SMESHBlock::StdMeshers_SMESHBlock().
| Standard_Integer SMESH_Block::NbEquations | ( | ) | const |
|
static |
Referenced by StdMeshers_Penta_3D::StdMeshers_Penta_3D().
|
static |
Referenced by StdMeshers_Penta_3D::StdMeshers_Penta_3D().
| Standard_Integer SMESH_Block::NbVariables | ( | ) | const |
|
static |
|
protected |
Find more precise solution.
| [in] | thePoint | - the point |
| [in,out] | theParams | - solution to precise |
| [in] | theFaceID | - FACE ID |
References distance(), findUVAround(), findUVByHalfDivision(), SMESH_Block::TFace::GetUInd(), SMESH_Block::TFace::GetVInd(), ID_FirstF, myFace, myTolerance, SMESH_Block::TFace::Point(), and SMESH_Block::TFace::Surface().
Referenced by ComputeParameters(), and computeParameters().
|
protected |
Store a solution if it's better than a previous one.
| [in] | theNewParams | - a new solution |
| [out] | theParams | - the parameters to store solution in |
| [in] | sqDistance | - a square distance reached at theNewParams |
References distance(), myTolerance, myValues, and SQUARE_DIST.
Referenced by findUVAround(), and findUVByHalfDivision().
| void SMESH_Block::SetTolerance | ( | const double | tol | ) |
References myTolerance.
| bool SMESH_Block::ShellPoint | ( | const gp_XYZ & | theParams, |
| gp_XYZ & | thePoint | ||
| ) | const |
Referenced by SMESH_MesherHelper::AddVolume(), SMESH_Pattern::Apply(), StdMeshers_HexaFromSkin_3D::Compute(), StdMeshers_Projection_3D::Compute(), StdMeshers_CompositeHexa_3D::Compute(), StdMeshers_Hexa_3D::Compute(), StdMeshers_Prism_3D::compute(), ComputeParameters(), StdMeshers_Penta_3D::CreateNode(), StdMeshers_PrismAsBlock::faceGridToPythonDump(), SMESH_MesherHelper::FixQuadraticElements(), StdMeshers_SMESHBlock::Point(), Value(), and Values().
|
static |
| Standard_Boolean SMESH_Block::Value | ( | const math_Vector & | X, |
| math_Vector & | F | ||
| ) |
References funcValue(), myParam, myPoint, myValues, ShellPoint(), and SQUARE_DIST.
| Standard_Boolean SMESH_Block::Values | ( | const math_Vector & | X, |
| math_Vector & | F, | ||
| math_Matrix & | D | ||
| ) |
References Abs(), DRV_1, DRV_2, DRV_3, funcValue(), MESSAGE, myFaceIndex, myNbIterations, myParam, myPoint, myTolerance, myValues, ShellPoint(), and SQUARE_DIST.
Referenced by Derivatives().
References ID_V000, ID_V010, ID_V100, and ID_V110.
Referenced by ComputeParameters(), and EdgeParameters().
Referenced by SMESH_Pattern::Apply(), and StdMeshers_SMESHBlock::Point().
|
protected |
Referenced by ComputeParameters().
|
protected |
Referenced by ComputeParameters(), EdgeParameters(), StdMeshers_PrismAsBlock::Init(), LoadBlockShapes(), and LoadMeshBlock().
|
protected |
|
protected |
Referenced by ComputeParameters(), computeParameters(), and Values().
|
protected |
Referenced by ComputeParameters(), and computeParameters().
|
protected |
Referenced by ComputeParameters(), and init().
|
protected |
Referenced by ComputeParameters(), computeParameters(), init(), and Values().
|
protected |
Referenced by computeParameters(), Value(), and Values().
|
protected |
Referenced by StdMeshers_PrismAsBlock::Init(), LoadBlockShapes(), and LoadMeshBlock().
|
protected |
Referenced by computeParameters(), Value(), and Values().
|
protected |
Referenced by computeParameters().
|
protected |
Referenced by ComputeParameters(), computeParameters(), and init().
|
protected |
Referenced by ComputeParameters(), computeParameters(), IsToleranceReached(), refineParametersOnFace(), saveBetterSolution(), SetTolerance(), and Values().
|
protected |
Referenced by ComputeParameters(), computeParameters(), saveBetterSolution(), Value(), and Values().