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