+ class Delaunay : public SMESH_Delaunay
+ {
+ public:
+
+ Delaunay( const TSideVector& wires, bool checkUV = false );
+
+ Delaunay( const std::vector< const UVPtStructVec* > & boundaryNodes,
+ SMESH_MesherHelper& faceHelper,
+ bool checkUV = false);
+
+ protected:
+ virtual gp_XY getNodeUV( const TopoDS_Face& face, const SMDS_MeshNode* node ) const;
+
+ private:
+ SMESH_MesherHelper* _helper;
+ StdMeshers_FaceSidePtr _wire;
+ bool *_checkUVPtr, _checkUV;
+ };
+ typedef boost::shared_ptr< Delaunay > DelaunayPtr;
+
+ //-----------------------------------------------------------------------------------------
+ /*!
+ * \brief Morph mesh on the target FACE to lie within FACE boundary w/o distortion
+ */
+ class Morph
+ {
+ Delaunay _delaunay;
+ SMESH_subMesh* _srcSubMesh;
+ public:
+
+ Morph(const TSideVector& srcWires);
+
+ bool Perform(SMESH_MesherHelper& tgtHelper,
+ const TSideVector& tgtWires,
+ Handle(ShapeAnalysis_Surface) tgtSurface,
+ const TNodeNodeMap& src2tgtNodes,
+ const bool moveAll);
+ };
+
+ //-----------------------------------------------------------------------------------------
+ /*!
+ * \brief Looks for association of all sub-shapes of two shapes
+ * \param theShape1 - shape 1
+ * \param theMesh1 - mesh built on shape 1
+ * \param theShape2 - shape 2
+ * \param theMesh2 - mesh built on shape 2
+ * \param theAssociation - association map to be filled that may
+ * contain association of one or two pairs of vertices
+ * \retval bool - true if association found
+ */
+ bool FindSubShapeAssociation(const TopoDS_Shape& theShape1,
+ SMESH_Mesh* theMesh1,
+ const TopoDS_Shape& theShape2,
+ SMESH_Mesh* theMesh2,
+ TShapeShapeMap & theAssociationMap);