X-Git-Url: http://git.dev.opencascade.org/gitweb/?p=occt.git;a=blobdiff_plain;f=src%2FBRepMesh%2FBRepMesh_ShapeTool.hxx;h=d257d612d0aaa448609bd682eeb17e901e96790c;hb=7bd071edb13e5aa7a1d3aed4ed4366fe3da83324;hpb=80da8585f4351470d5034519a8468a88bd12a819 diff --git a/src/BRepMesh/BRepMesh_ShapeTool.hxx b/src/BRepMesh/BRepMesh_ShapeTool.hxx index e1883d7746..d257d612d0 100644 --- a/src/BRepMesh/BRepMesh_ShapeTool.hxx +++ b/src/BRepMesh/BRepMesh_ShapeTool.hxx @@ -1,4 +1,6 @@ -// Copyright (c) 2013 OPEN CASCADE SAS +// Created on: 2016-04-19 +// Copyright (c) 2016 OPEN CASCADE SAS +// Created by: Oleg AGASHIN // // This file is part of Open CASCADE Technology software library. // @@ -11,31 +13,29 @@ // Alternatively, this file may be used under the terms of Open CASCADE // commercial license or contractual agreement. - #ifndef _BRepMesh_ShapeTool_HeaderFile #define _BRepMesh_ShapeTool_HeaderFile -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include -class Poly_Triangulation; +class Geom_Curve; +class Geom2d_Curve; +class Poly_Polygon3D; class TopoDS_Face; class TopoDS_Edge; class Bnd_Box; -class TopoDS_Vertex; -class gp_XY; -class gp_Pnt2d; -class BRepMesh_ShapeTool +//! Auxiliary class providing functionality to compute, +//! retrieve and store data to TopoDS and model shape. +class BRepMesh_ShapeTool : public Standard_Transient { public: - DEFINE_STANDARD_ALLOC - //! Returns maximum tolerance of the given face. //! Considers tolerances of edges and vertices contained in the given face. Standard_EXPORT static Standard_Real MaxFaceTolerance( @@ -48,39 +48,15 @@ public: Standard_EXPORT static void BoxMaxDimension(const Bnd_Box& theBox, Standard_Real& theMaxDimension); - //! Returns relative deflection for edge with respect to shape size. - //! @param theEdge edge for which relative deflection should be computed. - //! @param theDeflection absolute deflection. - //! @param theMaxShapeSize maximum size of a shape. - //! @param theAdjustmentCoefficient coefficient of adjustment between maximum - //! size of shape and calculated relative deflection. - //! @return relative deflection for the edge. - Standard_EXPORT static Standard_Real RelativeEdgeDeflection( - const TopoDS_Edge& theEdge, - const Standard_Real theDeflection, - const Standard_Real theMaxShapeSize, - Standard_Real& theAdjustmentCoefficient); - - //! Checks 2d representations of 3d point with the - //! given index for equality to avoid duplications. - //! @param theIndexOfPnt3d index of 3d point with which 2d - //! representation should be associated. - //! @param thePnt2d 2d representation of the point with the - //! given index. - //! @param theMinDistance minimum distance between vertices - //! regarding which they could be treated as distinct ones. - //! @param theFaceAttribute attributes contining data calculated - //! according to face geomtry and define limits of face in parametric - //! space. If defined, will be used instead of surface parameter. - //! @param theLocation2dMap map of 2d representations of 3d points. - //! @return given 2d point in case if 3d poind does not alredy have - //! the similar representation, otherwice 2d point corresponding to - //! existing representation will be returned. - Standard_EXPORT static gp_XY FindUV( - const Standard_Integer theIndexOfPnt3d, - const gp_Pnt2d& thePnt2d, - const Standard_Real theMinDistance, - const Handle(BRepMesh_FaceAttribute)& theFaceAttribute); + //! Checks same parameter, same range and degenerativity attributes + //! using geometrical data of the given edge and updates edge model + //! by computed parameters in case of worst case - it can drop flags + //! same parameter and same range to False but never to True if it is + //! already set to False. In contrary, it can also drop degenerated + //! flag to True, but never to False if it is already set to True. + Standard_EXPORT static void CheckAndUpdateFlags ( + const IMeshData::IEdgeHandle& theEdge, + const IMeshData::IPCurveHandle& thePCurve); //! Stores the given triangulation into the given face. //! @param theFace face to be updated by triangulation. @@ -91,27 +67,41 @@ public: //! Nullifies triangulation stored in the face. //! @param theFace face to be updated by null triangulation. - Standard_EXPORT static void NullifyFace(const TopoDS_Face& theFace); + Standard_EXPORT static void NullifyFace (const TopoDS_Face& theFace); //! Nullifies polygon on triangulation stored in the edge. //! @param theEdge edge to be updated by null polygon. //! @param theTriangulation triangulation the given edge is associated to. //! @param theLocation face location. - Standard_EXPORT static void NullifyEdge( - const TopoDS_Edge& theEdge, - const Handle(Poly_Triangulation)& theTriangulation, - const TopLoc_Location& theLocation); + Standard_EXPORT static void NullifyEdge ( + const TopoDS_Edge& theEdge, + const Handle (Poly_Triangulation)& theTriangulation, + const TopLoc_Location& theLocation); + + //! Nullifies 3d polygon stored in the edge. + //! @param theEdge edge to be updated by null polygon. + //! @param theLocation face location. + Standard_EXPORT static void NullifyEdge ( + const TopoDS_Edge& theEdge, + const TopLoc_Location& theLocation); //! Updates the given edge by the given tessellated representation. //! @param theEdge edge to be updated. //! @param thePolygon tessellated representation of the edge to be stored. //! @param theTriangulation triangulation the given edge is associated to. //! @param theLocation face location. + Standard_EXPORT static void UpdateEdge ( + const TopoDS_Edge& theEdge, + const Handle (Poly_PolygonOnTriangulation)& thePolygon, + const Handle (Poly_Triangulation)& theTriangulation, + const TopLoc_Location& theLocation); + + //! Updates the given edge by the given tessellated representation. + //! @param theEdge edge to be updated. + //! @param thePolygon tessellated representation of the edge to be stored. Standard_EXPORT static void UpdateEdge( - const TopoDS_Edge& theEdge, - const Handle(Poly_PolygonOnTriangulation)& thePolygon, - const Handle(Poly_Triangulation)& theTriangulation, - const TopLoc_Location& theLocation); + const TopoDS_Edge& theEdge, + const Handle(Poly_Polygon3D)& thePolygon); //! Updates the given seam edge by the given tessellated representations. //! @param theEdge edge to be updated. @@ -121,27 +111,46 @@ public: //! reversed direction of the seam edge. //! @param theTriangulation triangulation the given edge is associated to. //! @param theLocation face location. - Standard_EXPORT static void UpdateEdge( - const TopoDS_Edge& theEdge, - const Handle(Poly_PolygonOnTriangulation)& thePolygon1, - const Handle(Poly_PolygonOnTriangulation)& thePolygon2, - const Handle(Poly_Triangulation)& theTriangulation, - const TopLoc_Location& theLocation); + Standard_EXPORT static void UpdateEdge ( + const TopoDS_Edge& theEdge, + const Handle (Poly_PolygonOnTriangulation)& thePolygon1, + const Handle (Poly_PolygonOnTriangulation)& thePolygon2, + const Handle (Poly_Triangulation)& theTriangulation, + const TopLoc_Location& theLocation); //! Applies location to the given point and return result. //! @param thePnt point to be transformed. //! @param theLoc location to be applied. - Standard_EXPORT static gp_Pnt UseLocation(const gp_Pnt& thePnt, - const TopLoc_Location& theLoc); - - //! Checks is the given edge degenerated. - //! Checks geometrical parameters in case if IsDegenerated flag is not set. - //! @param theEdge edge to be checked. - //! @param theFace face within which parametric space edge will be checked - //! for geometrical degenerativity. - Standard_EXPORT static Standard_Boolean IsDegenerated( - const TopoDS_Edge& theEdge, - const TopoDS_Face& theFace); + Standard_EXPORT static gp_Pnt UseLocation ( + const gp_Pnt& thePnt, + const TopLoc_Location& theLoc); + + //! Gets the strict UV locations of the extremities of the edge using pcurve. + Standard_EXPORT static Standard_Boolean UVPoints ( + const TopoDS_Edge& theEdge, + const TopoDS_Face& theFace, + gp_Pnt2d& theFirstPoint2d, + gp_Pnt2d& theLastPoint2d, + const Standard_Boolean isConsiderOrientation = Standard_False); + + //! Gets the parametric range of the given edge on the given face. + Standard_EXPORT static Standard_Boolean Range ( + const TopoDS_Edge& theEdge, + const TopoDS_Face& theFace, + Handle (Geom2d_Curve)& thePCurve, + Standard_Real& theFirstParam, + Standard_Real& theLastParam, + const Standard_Boolean isConsiderOrientation = Standard_False); + + //! Gets the 3d range of the given edge. + Standard_EXPORT static Standard_Boolean Range ( + const TopoDS_Edge& theEdge, + Handle (Geom_Curve)& theCurve, + Standard_Real& theFirstParam, + Standard_Real& theLastParam, + const Standard_Boolean isConsiderOrientation = Standard_False); + + DEFINE_STANDARD_RTTI_INLINE(BRepMesh_ShapeTool, Standard_Transient) }; -#endif +#endif \ No newline at end of file