0024023: Revamp the OCCT Handle -- ambiguity
[occt.git] / src / BRepAlgoAPI / BRepAlgoAPI.cdl
CommitLineData
b311480e 1-- Created on: 1993-07-06
2-- Created by: Remi LEQUETTE
3-- Copyright (c) 1993-1999 Matra Datavision
973c2be1 4-- Copyright (c) 1999-2014 OPEN CASCADE SAS
b311480e 5--
973c2be1 6-- This file is part of Open CASCADE Technology software library.
b311480e 7--
d5f74e42 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
973c2be1 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.
b311480e 13--
973c2be1 14-- Alternatively, this file may be used under the terms of Open CASCADE
15-- commercial license or contractual agreement.
b311480e 16
7fd59977 17package BRepAlgoAPI
49b0c452 18
19 ---Purpose: The BRepAlgoAPI package provides a full range of
b1d15f53 20 -- services to perform Boolean Operations on arguments (shapes
21 -- that are defined in the BRep data structures). The
22 -- implemented new algorithm is intended to replace the Old
23 -- Boolean Operations algorithm in the BRepAlgoAPI package.
24 -- The New algorithm is free of a large number of weak spots
25 -- and limitations characteristics of the Old algorithm.
26 -- It is more powerful and flexible.
27 -- It can process arguments the Old algorithm was not adapted for.
28 -- The new algorithm is based on a new approach to operations
29 -- with interfered shapes. The advantages of the new algorithm
30 -- include an ability to treat arguments that have shared
31 -- entities. It can properly process two solids with shared
32 -- faces (in terms of TopoDS_Shape::IsSame()), two
33 -- faces that have shared edges and so on. Now the New Boolean
34 -- Operation algorithm can treat a wide range of shapes while the
35 -- Old one fails on them.
36 -- A generalization of treatment of same-domain faces
37 -- was included into the New algorithm. Two faces that share
38 -- the same domain are processed according to the common rule
39 -- even if the underlying surfaces are of different types. This
40 -- allows to execute Boolean Operations properly for the same
41 -- domain faces. It also concerns solids and shells that have the
42 -- same domain faces. It is quite frequent when two faces share
43 -- the same domain. And the New algorithm successfully copes
44 -- with it in contrast to the Old one.
45 -- Generalization oftreatment of degenerated edges
46 -- gives a possibility to process them properly. Although there
47 -- are still some difficulties with processing faces in areas close
48 -- to degenerated edges.
49 -- Now the processing of arguments having internal sub-shapes gives
50 -- a correct result. Internal sub-shape means a sub-shape of a
51 -- shape with the orientation TopAbs_INTERNAL and is located
52 -- inside the shape boundaries. The New algorithm processes faces
53 -- with internal edges properly. The new API of the Boolean
54 -- Operations (in addition to the old API) allows to reuse the
55 -- already computed interference between arguments in different
56 -- types of Boolean Operations. It is possible to use once computed
57 -- interference in FUSE, CUT and COMMON operations on given
58 -- arguments. So there is no need to re-compute the interference
59 -- between the arguments. It allows to reduce time for more than one
60 -- operation on given arguments.
61 -- The shape type of a Boolean Operation result and types of the arguments:
62 -- - For arguments with the same shape type (e.g. SOLID /
63 -- SOLID) the type of the resulting shape will be a
64 -- COMPOUND, containing shapes of this type;
65 -- - For arguments with different shape types (e.g.
66 -- SHELL / SOLID) the type of the resulting shape will be a
67 -- COMPOUND, containing shapes of the type that is the same as
68 -- that of the low type of the argument. Example: For
69 -- SHELL/SOLID the result is a COMPOUND of SHELLs.
70 -- - For arguments with different shape types some of
71 -- Boolean Operations can not be done using the default
72 -- implementation, because of a non-manifold type of the
73 -- result. Example: the FUSE operation for SHELL and SOLID
74 -- can not be done, but the CUT operation can be done, where
75 -- SHELL is the object and SOLID is the tool.
76 -- It is possible to perform Boolean Operations on arguments
77 -- of the COMPOUND shape type. In this case each compound must not
78 -- be heterogeneous, i.e. it must contain equidimensional shapes
79 -- (EDGEs or/and WIREs, FACEs or/and SHELLs, SOLIDs). SOLIDs
80 -- inside the COMPOUND must not contact (intersect or touch)
81 -- each other. The same condition is true for SHELLs or FACEs,
82 -- WIREs or EDGEs.
83 -- It does not support Boolean Operations for COMPSOLID type of shape.
49b0c452 84
85uses
86 TopTools,
87 TopoDS,
88 gp,
89 Geom,
90 Geom2d,
91 Message,
92 BOPCol,
93 BOPAlgo,
94 BOPDS,
95 BRepBuilderAPI
96is
97
98 deferred class BooleanOperation;
99 class Fuse;
100 class Common;
101 class Cut;
102 class Section;
103 class Check;
104 ---Purpose: Check shapes on validity for boolean
105 --- operation.
106
107 deferred class Algo;
108 class BuilderAlgo;
109
110end BRepAlgoAPI;
111
112
113
114