Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-09-15 09:15:17

0001 // Created on: 1993-11-09
0002 // Created by: Laurent BOURESCHE
0003 // Copyright (c) 1993-1999 Matra Datavision
0004 // Copyright (c) 1999-2014 OPEN CASCADE SAS
0005 //
0006 // This file is part of Open CASCADE Technology software library.
0007 //
0008 // This library is free software; you can redistribute it and/or modify it under
0009 // the terms of the GNU Lesser General Public License version 2.1 as published
0010 // by the Free Software Foundation, with special exception defined in the file
0011 // OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
0012 // distribution for complete text of the license and disclaimer of any warranty.
0013 //
0014 // Alternatively, this file may be used under the terms of Open CASCADE
0015 // commercial license or contractual agreement.
0016 
0017 #ifndef _ChFi3d_HeaderFile
0018 #define _ChFi3d_HeaderFile
0019 
0020 #include <Standard.hxx>
0021 #include <Standard_DefineAlloc.hxx>
0022 #include <Standard_Handle.hxx>
0023 
0024 #include <TopAbs_Orientation.hxx>
0025 #include <Standard_Boolean.hxx>
0026 #include <ChFiDS_TypeOfConcavity.hxx>
0027 #include <GeomAbs_Shape.hxx>
0028 class BRepAdaptor_Surface;
0029 class TopoDS_Edge;
0030 class TopoDS_Face;
0031 
0032 //! creation of spatial fillets on a solid.
0033 class ChFi3d
0034 {
0035 public:
0036   DEFINE_STANDARD_ALLOC
0037 
0038   //! Defines the type of concavity in the edge of connection of two faces
0039   Standard_EXPORT static ChFiDS_TypeOfConcavity DefineConnectType(const TopoDS_Edge& E,
0040                                                                   const TopoDS_Face& F1,
0041                                                                   const TopoDS_Face& F2,
0042                                                                   const double       SinTol,
0043                                                                   const bool         CorrectPoint);
0044 
0045   //! Returns true if theEdge between theFace1 and theFace2 is tangent
0046   Standard_EXPORT static bool IsTangentFaces(const TopoDS_Edge&  theEdge,
0047                                              const TopoDS_Face&  theFace1,
0048                                              const TopoDS_Face&  theFace2,
0049                                              const GeomAbs_Shape Order = GeomAbs_G1);
0050 
0051   //! Returns Reversed in Or1 and(or) Or2 if
0052   //! the concave edge defined by the interior of faces F1 and F2,
0053   //! in the neighbourhood of their boundary E is of the edge opposite to the
0054   //! normal of their surface support. The orientation of
0055   //! faces is not taken into consideration in the calculation. The
0056   //! function returns 0 if the calculation fails (tangence),
0057   //! if not, it returns the number of choice of the fillet
0058   //! or chamfer corresponding to the orientations calculated
0059   //! and to the tangent to the guide line read in E.
0060   Standard_EXPORT static int ConcaveSide(const BRepAdaptor_Surface& S1,
0061                                          const BRepAdaptor_Surface& S2,
0062                                          const TopoDS_Edge&         E,
0063                                          TopAbs_Orientation&        Or1,
0064                                          TopAbs_Orientation&        Or2);
0065 
0066   //! Same as ConcaveSide, but the orientations are
0067   //! logically deduced from the result of the call of
0068   //! ConcaveSide on the first pair of faces of the fillet or
0069   //! chamnfer.
0070   Standard_EXPORT static int NextSide(TopAbs_Orientation&      Or1,
0071                                       TopAbs_Orientation&      Or2,
0072                                       const TopAbs_Orientation OrSave1,
0073                                       const TopAbs_Orientation OrSave2,
0074                                       const int                ChoixSauv);
0075 
0076   //! Same as the other NextSide, but the calculation is done
0077   //! on an edge only.
0078   Standard_EXPORT static void NextSide(TopAbs_Orientation&      Or,
0079                                        const TopAbs_Orientation OrSave,
0080                                        const TopAbs_Orientation OrFace);
0081 
0082   //! Enables to determine while processing an angle, if
0083   //! two fillets or chamfers constituting a face have
0084   //! identic or opposed concave edges.
0085   Standard_EXPORT static bool SameSide(const TopAbs_Orientation Or,
0086                                        const TopAbs_Orientation OrSave1,
0087                                        const TopAbs_Orientation OrSave2,
0088                                        const TopAbs_Orientation OrFace1,
0089                                        const TopAbs_Orientation OrFace2);
0090 };
0091 
0092 #endif // _ChFi3d_HeaderFile