0024002: Overall code and build procedure refactoring -- automatic
[occt.git] / src / BRepAlgo / BRepAlgo.hxx
1 // Created on: 1997-01-17
2 // Created by: Didier PIFFAULT
3 // Copyright (c) 1997-1999 Matra Datavision
4 // Copyright (c) 1999-2014 OPEN CASCADE SAS
5 //
6 // This file is part of Open CASCADE Technology software library.
7 //
8 // This library is free software; you can redistribute it and/or modify it under
9 // the terms of the GNU Lesser General Public License version 2.1 as published
10 // by the Free Software Foundation, with special exception defined in the file
11 // OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
12 // distribution for complete text of the license and disclaimer of any warranty.
13 //
14 // Alternatively, this file may be used under the terms of Open CASCADE
15 // commercial license or contractual agreement.
16
17 #ifndef _BRepAlgo_HeaderFile
18 #define _BRepAlgo_HeaderFile
19
20 #include <Standard.hxx>
21 #include <Standard_DefineAlloc.hxx>
22 #include <Standard_Handle.hxx>
23
24 #include <GeomAbs_Shape.hxx>
25 #include <Standard_Real.hxx>
26 #include <Standard_Boolean.hxx>
27 #include <TopTools_ListOfShape.hxx>
28 class TopoDS_Wire;
29 class TopoDS_Edge;
30 class TopoDS_Shape;
31 class BRepAlgo_BooleanOperation;
32 class BRepAlgo_Fuse;
33 class BRepAlgo_Cut;
34 class BRepAlgo_Common;
35 class BRepAlgo_Section;
36 class BRepAlgo_Loop;
37 class BRepAlgo_Tool;
38 class BRepAlgo_Image;
39 class BRepAlgo_AsDes;
40 class BRepAlgo_FaceRestrictor;
41 class BRepAlgo_BooleanOperations;
42 class BRepAlgo_DSAccess;
43 class BRepAlgo_EdgeConnector;
44 class BRepAlgo_NormalProjection;
45
46
47
48 //! The BRepAlgo package provides a full range of
49 //! services to perform Old Boolean Operations in Open CASCADE.
50 //! Attention:
51 //! The New Boolean Operation has replaced the Old
52 //! Boolean Operations algorithm in the BrepAlgoAPI
53 //! package in Open CASCADE.
54 class BRepAlgo 
55 {
56 public:
57
58   DEFINE_STANDARD_ALLOC
59
60   
61   //! this method makes a wire whose edges are C1 from
62   //! a Wire whose edges could be G1. It removes a vertex
63   //! between G1 edges.
64   //! Option can be G1 or C1.
65   Standard_EXPORT static TopoDS_Wire ConcatenateWire (const TopoDS_Wire& Wire, const GeomAbs_Shape Option, const Standard_Real AngularTolerance = 1.0e-4);
66   
67   //! this method makes an edge from a wire.
68   //! Junction points between edges of wire may be sharp,
69   //! resulting curve of the resulting edge may be C0.
70   Standard_EXPORT static TopoDS_Edge ConcatenateWireC0 (const TopoDS_Wire& Wire);
71   
72   //! Checks if the  shape is "correct". If not, returns
73   //! <Standard_False>, else returns <Standard_True>.
74   Standard_EXPORT static Standard_Boolean IsValid (const TopoDS_Shape& S);
75   
76   //! Checks if  the  Generated and Modified Faces  from
77   //! the shapes <arguments> in  the shape <result>  are
78   //! "correct". The args   may be empty, then all faces
79   //! will be checked.
80   //! If <Closed> is True,  only  closed shape are valid.
81   //! If <GeomCtrl>  is    False the geometry  of   new
82   //! vertices and edges   are   not verified and  the
83   //! auto-intersection of new wires are not searched.
84   Standard_EXPORT static Standard_Boolean IsValid (const TopTools_ListOfShape& theArgs, const TopoDS_Shape& theResult, const Standard_Boolean closedSolid = Standard_False, const Standard_Boolean GeomCtrl = Standard_True);
85   
86   //! Checks if the shape is  "correct". If not, returns
87   //! <Standard_False>,  else   returns <Standard_True>.
88   //! This method differs from  the previous one in  the
89   //! fact that no   geometric contols (intersection  of
90   //! wires, pcurve validity) are performed.
91   Standard_EXPORT static Standard_Boolean IsTopologicallyValid (const TopoDS_Shape& S);
92
93
94
95
96 protected:
97
98
99
100
101
102 private:
103
104
105
106
107 friend class BRepAlgo_BooleanOperation;
108 friend class BRepAlgo_Fuse;
109 friend class BRepAlgo_Cut;
110 friend class BRepAlgo_Common;
111 friend class BRepAlgo_Section;
112 friend class BRepAlgo_Loop;
113 friend class BRepAlgo_Tool;
114 friend class BRepAlgo_Image;
115 friend class BRepAlgo_AsDes;
116 friend class BRepAlgo_FaceRestrictor;
117 friend class BRepAlgo_BooleanOperations;
118 friend class BRepAlgo_DSAccess;
119 friend class BRepAlgo_EdgeConnector;
120 friend class BRepAlgo_NormalProjection;
121
122 };
123
124
125
126
127
128
129
130 #endif // _BRepAlgo_HeaderFile