X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2FStdMeshers%2FStdMeshers_Prism_3D.hxx;h=ccdf5457f3b4bff3502c8a483a84f530a42c54ab;hb=87a7f0d0495483874b3fb322ffef2866d6bd30c6;hp=48c75ba0e2026d5d205848ac3d2ba0688605861c;hpb=096485adbe5e66ace1182bf6c49dc6853f437d9c;p=modules%2Fsmesh.git diff --git a/src/StdMeshers/StdMeshers_Prism_3D.hxx b/src/StdMeshers/StdMeshers_Prism_3D.hxx index 48c75ba0e..ccdf5457f 100644 --- a/src/StdMeshers/StdMeshers_Prism_3D.hxx +++ b/src/StdMeshers/StdMeshers_Prism_3D.hxx @@ -103,12 +103,14 @@ namespace Prism_3D TopoDS_Face myBottom; TopoDS_Face myTop; std::list< TopoDS_Edge > myBottomEdges; - std::vector< TQuadList> myWallQuads; // wall sides can be vertically composite + std::vector< TQuadList> myWallQuads; // wall sides can be vertically composite std::vector< int > myRightQuadIndex; // index of right neighbour wall quad std::list< int > myNbEdgesInWires; bool myNotQuadOnTop; + size_t NbWires() const { return myNbEdgesInWires.size(); } + void Clear(); void SetUpsideDown(); }; @@ -497,6 +499,10 @@ public: SMESH_MesherHelper* helper); static bool IsApplicable(const TopoDS_Shape & aShape, bool toCheckAll); + virtual bool IsApplicableToShape(const TopoDS_Shape & shape, bool toCheckAll) const + { + return IsApplicable( shape, toCheckAll ); + } private: @@ -519,11 +525,22 @@ public: */ bool compute(const Prism_3D::TPrismTopo& thePrism); + /*! + * \brief Compute the base face of a prism + */ + bool computeBase(const Prism_3D::TPrismTopo& thePrism); + /*! * \brief Compute 2D mesh on walls FACEs of a prism */ bool computeWalls(const Prism_3D::TPrismTopo& thePrism); + /*! + * \brief Create artificial wall quads for vertical projection between the outer and inner walls + */ + void makeQuadsForOutInProjection( const Prism_3D::TPrismTopo& thePrism, + std::multimap< int, int >& wgt2quad, + std::map< int, FaceQuadStruct >& iW2oiQuads); /*! * \brief Returns a source EDGE of propagation to a given EDGE */ @@ -594,6 +611,7 @@ private: StdMeshers_PrismAsBlock myBlock; SMESH_MesherHelper* myHelper; + SMESH_subMesh* myPrevBottomSM; std::vector myShapeXYZ; // point on each sub-shape of the block