+ // ===============================================
+ /*!
+ * \brief Structure containing node relative data
+ */
+ struct TNode
+ {
+ const SMDS_MeshNode* myNode;
+ mutable gp_XYZ myParams;
+
+ gp_XYZ GetCoords() const { return gp_XYZ( myNode->X(), myNode->Y(), myNode->Z() ); }
+ gp_XYZ GetParams() const { return myParams; }
+ gp_XYZ& ChangeParams() const { return myParams; }
+ bool HasParams() const { return myParams.X() >= 0.0; }
+ SMDS_TypeOfPosition GetPositionType() const
+ { return myNode ? myNode->GetPosition()->GetTypeOfPosition() : SMDS_TOP_UNSPEC; }
+ bool IsNeighbor( const TNode& other ) const;
+
+ TNode(const SMDS_MeshNode* node = 0): myNode(node), myParams(-1,-1,-1) {}
+ bool operator < (const TNode& other) const { return myNode->GetID() < other.myNode->GetID(); }
+ };
+ // ===============================================
+ /*!
+ * \brief Topological data of the prism
+ */
+ typedef std::list< TFaceQuadStructPtr > TQuadList;
+
+ struct TPrismTopo
+ {
+ TopoDS_Shape myShape3D;
+ TopoDS_Face myBottom;
+ TopoDS_Face myTop;
+ std::list< TopoDS_Edge > myBottomEdges;
+ std::vector< TQuadList> myWallQuads; // wall sides can be vertically composite
+ std::vector< int > myRightQuadIndex; // index of right neighbour wall quad
+ std::list< int > myNbEdgesInWires;