X-Git-Url: http://git.salome-platform.org/gitweb/?p=modules%2Fsmesh.git;a=blobdiff_plain;f=src%2FStdMeshers%2FStdMeshers_FaceSide.hxx;h=b7d79b9929c46cabd9e59a148805c204e1c35928;hp=fce2e8de0e82207caf4afb4bf847f5db7c84a8db;hb=6bac08c1a81f34d3f21c550bd92f83654b2546a5;hpb=bd8f1aee7c78f7d2eb82bd4fec5e08c9e3d280ce diff --git a/src/StdMeshers/StdMeshers_FaceSide.hxx b/src/StdMeshers/StdMeshers_FaceSide.hxx index fce2e8de0..b7d79b992 100644 --- a/src/StdMeshers/StdMeshers_FaceSide.hxx +++ b/src/StdMeshers/StdMeshers_FaceSide.hxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2013 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2015 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -6,7 +6,7 @@ // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either -// version 2.1 of the License. +// version 2.1 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -35,6 +35,7 @@ #include #include #include +#include #include #include @@ -47,7 +48,6 @@ class SMESH_Mesh; class Adaptor2d_Curve2d; class Adaptor3d_Curve; class BRepAdaptor_CompCurve; -class TopoDS_Face; struct SMESH_ComputeError; class StdMeshers_FaceSide; @@ -86,9 +86,54 @@ public: /*! * \brief Simulate a side from a vertex using data from other FaceSide */ - StdMeshers_FaceSide(const SMDS_MeshNode* theNode, - const gp_Pnt2d thePnt2d, - const StdMeshers_FaceSide* theSide); + StdMeshers_FaceSide(const StdMeshers_FaceSide* theSide, + const SMDS_MeshNode* theNode, + const gp_Pnt2d* thePnt2d1, + const gp_Pnt2d* thePnt2d2=NULL, + const Handle(Geom2d_Curve)& theC2d=NULL, + const double theUFirst=0., + const double theULast=1.); + /*! + * \brief Create a side from an UVPtStructVec + */ + StdMeshers_FaceSide(UVPtStructVec& theSideNodes, + const TopoDS_Face& theFace = TopoDS_Face()); + + // static "consrtuctors" + static StdMeshers_FaceSidePtr New(const TopoDS_Face& Face, + const TopoDS_Edge& Edge, + SMESH_Mesh* Mesh, + const bool IsForward, + const bool IgnoreMediumNodes, + SMESH_ProxyMesh::Ptr ProxyMesh = SMESH_ProxyMesh::Ptr()) + { return StdMeshers_FaceSidePtr + ( new StdMeshers_FaceSide( Face,Edge,Mesh,IsForward,IgnoreMediumNodes,ProxyMesh )); + } + static StdMeshers_FaceSidePtr New (const TopoDS_Face& Face, + std::list& Edges, + SMESH_Mesh* Mesh, + const bool IsForward, + const bool IgnoreMediumNodes, + SMESH_ProxyMesh::Ptr ProxyMesh = SMESH_ProxyMesh::Ptr()) + { return StdMeshers_FaceSidePtr + ( new StdMeshers_FaceSide( Face,Edges,Mesh,IsForward,IgnoreMediumNodes,ProxyMesh )); + } + static StdMeshers_FaceSidePtr New (const StdMeshers_FaceSide* Side, + const SMDS_MeshNode* Node, + const gp_Pnt2d* Pnt2d1, + const gp_Pnt2d* Pnt2d2=NULL, + const Handle(Geom2d_Curve)& C2d=NULL, + const double UFirst=0., + const double ULast=1.) + { return StdMeshers_FaceSidePtr + ( new StdMeshers_FaceSide( Side,Node,Pnt2d1,Pnt2d2,C2d,UFirst,ULast )); + } + static StdMeshers_FaceSidePtr New (UVPtStructVec& theSideNodes, + const TopoDS_Face& theFace = TopoDS_Face()) + { + return StdMeshers_FaceSidePtr( new StdMeshers_FaceSide( theSideNodes, theFace )); + } + /*! * \brief Return wires of a face as StdMeshers_FaceSide's */ @@ -96,7 +141,8 @@ public: SMESH_Mesh & theMesh, const bool theIgnoreMediumNodes, TError & theError, - SMESH_ProxyMesh::Ptr theProxyMesh = SMESH_ProxyMesh::Ptr()); + SMESH_ProxyMesh::Ptr theProxyMesh = SMESH_ProxyMesh::Ptr(), + const bool theCheckVertexNodes=true); /*! * \brief Change orientation of side geometry */ @@ -175,7 +221,7 @@ public: */ int NbEdges() const { return myEdge.size(); } /*! - * \brief Return i-th wrapped edge (count starts from zero) + * \brief Return i-th edge (count starts from zero) */ const TopoDS_Edge& Edge(int i) const { return myEdge[i]; } /*! @@ -251,7 +297,7 @@ protected: std::vector myFirst, myLast; std::vector myNormPar; std::vector myEdgeLength; - std::vector myIsUniform; + std::vector myIsUniform; double myLength; int myNbPonits, myNbSegments; SMESH_ProxyMesh::Ptr myProxyMesh;