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
6 // This file is part of Open CASCADE Technology software library.
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.
14 // Alternatively, this file may be used under the terms of Open CASCADE
15 // commercial license or contractual agreement.
17 #ifndef _BRepAlgo_HeaderFile
18 #define _BRepAlgo_HeaderFile
20 #include <Standard.hxx>
21 #include <Standard_DefineAlloc.hxx>
22 #include <Standard_Handle.hxx>
24 #include <GeomAbs_Shape.hxx>
25 #include <Standard_Real.hxx>
26 #include <Standard_Boolean.hxx>
27 #include <TopTools_ListOfShape.hxx>
31 class BRepAlgo_BooleanOperation;
34 class BRepAlgo_Common;
35 class BRepAlgo_Section;
40 class BRepAlgo_FaceRestrictor;
41 class BRepAlgo_BooleanOperations;
42 class BRepAlgo_DSAccess;
43 class BRepAlgo_EdgeConnector;
44 class BRepAlgo_NormalProjection;
48 //! The BRepAlgo package provides a full range of
49 //! services to perform Old Boolean Operations in Open CASCADE.
51 //! The New Boolean Operation has replaced the Old
52 //! Boolean Operations algorithm in the BrepAlgoAPI
53 //! package in Open CASCADE.
61 //! this method makes a wire whose edges are C1 from
62 //! a Wire whose edges could be G1. It removes a vertex
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);
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);
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);
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
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);
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);
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;
130 #endif // _BRepAlgo_HeaderFile