0024157: Parallelization of assembly part of BO
[occt.git] / src / BRepOffset / BRepOffset_Tool.cdl
1 -- Created on: 1995-10-23
2 -- Created by: Yves FRICAUD
3 -- Copyright (c) 1995-1999 Matra Datavision
4 -- Copyright (c) 1999-2012 OPEN CASCADE SAS
5 --
6 -- The content of this file is subject to the Open CASCADE Technology Public
7 -- License Version 6.5 (the "License"). You may not use the content of this file
8 -- except in compliance with the License. Please obtain a copy of the License
9 -- at http://www.opencascade.org and read it completely before using this file.
10 --
11 -- The Initial Developer of the Original Code is Open CASCADE S.A.S., having its
12 -- main offices at: 1, place des Freres Montgolfier, 78280 Guyancourt, France.
13 --
14 -- The Original Code and all software distributed under the License is
15 -- distributed on an "AS IS" basis, without warranty of any kind, and the
16 -- Initial Developer hereby disclaims all such warranties, including without
17 -- limitation, any warranties of merchantability, fitness for a particular
18 -- purpose or non-infringement. Please see the License for the specific terms
19 -- and conditions governing the rights and limitations under the License.
20
21
22
23 class Tool from BRepOffset 
24
25         ---Purpose: 
26
27 uses
28     Edge                      from TopoDS,
29     Face                      from TopoDS,
30     Wire                      from TopoDS,
31     Shape                     from TopoDS,
32     Orientation               from TopAbs,
33     MapOfShape                from TopTools,
34     IndexedMapOfShape         from TopTools,
35     DataMapOfShapeShape       from TopTools,
36     DataMapOfShapeListOfShape from TopTools,
37     ListOfShape               from TopTools,    
38     Vertex                    from TopoDS,
39     State                     from TopAbs,
40     Image                     from BRepAlgo,
41     AsDes                     from BRepAlgo, 
42     Analyse                   from BRepOffset, 
43     Curve                     from Geom
44     
45 is
46     EdgeVertices (myclass; E  : Edge   from TopoDS;
47                            V1 : in out Vertex from TopoDS;
48                            V2 : in out Vertex from TopoDS);
49         ---Purpose: <V1> is the FirstVertex ,<V2> is the Last Vertex of <Edge> 
50         --          taking account the orientation of Edge.
51     
52     OriEdgeInFace (myclass; E : Edge from TopoDS;
53                             F : Face from TopoDS)
54         ---Purpose: returns the cumul  of the orientation  of <Edge>
55         --          and thc containing wire in <Face>
56     returns Orientation from TopAbs;
57     
58
59                         
60     OrientSection (myclass; E     : Edge from TopoDS;
61                             F1,F2 : Face from TopoDS;
62                             O1,O2 : in out Orientation from TopAbs);    
63         ---Purpose: <E> is a section  between <F1> and <F2>.  Computes 
64         --          <O1> the orientation of <E> in <F1> influenced by <F2>.
65         --          idem for <O2>.
66
67     HasCommonShapes (myclass; F1,F2 : Face from TopoDS;
68                               LE    : in out ListOfShape from TopTools;
69                               LV    : in out ListOfShape from TopTools)
70         ---Purpose: Returns True if  <F1> and <F2> has common Vertices
71         --          or edges , <LE> contains the common edges. <LV> the
72         --          common vertices.
73     returns Boolean from Standard;                           
74
75     Inter3D (myclass; F1, F2 :        Face        from TopoDS;
76                       LInt1  : in out ListOfShape from TopTools;
77                       LInt2  : in out ListOfShape from TopTools;
78                       Side   :        State       from TopAbs; 
79                       RefEdge :          Edge from TopoDS; 
80                       IsRefEdgeDefined : Boolean from Standard = Standard_False);
81
82         ---Purpose: Computes the   Section betwwen  <F1> and  <F2> the
83         --          edges solution   are  stored in <LInt1>  with  the
84         --          orientation on <F1>, the sames edges are stored in
85         --          <Lint2> with the orientation on <F2>.
86                       
87     TryProject (myclass; F1, F2 :        Face        from TopoDS;
88                          Edges  :        ListOfShape from TopTools;
89                          LInt1  : in out ListOfShape from TopTools;
90                          LInt2  : in out ListOfShape from TopTools;
91                          Side   :        State       from TopAbs;
92                          TolConf:        Real        from Standard)
93                          
94          ---Purpose: Find if the edges <Edges> of the face <F2> are on
95          --          the face <F1>.
96          --          Set in <LInt1> <LInt2> the updated edges.
97          --          If all the edges are computed, returns true.
98          --          
99     returns Boolean from Standard;
100                       
101     PipeInter (myclass; F1, F2 :        Face        from TopoDS;
102                         LInt1  : in out ListOfShape from TopTools;
103                         LInt2  : in out ListOfShape from TopTools;      
104                         Side   :        State       from TopAbs);
105
106     Inter2d (myclass; F     :        Face        from TopoDS;
107                       E1,E2 :        Edge        from TopoDS;
108                       LV    : in out ListOfShape from TopTools;
109                       Tol   :        Real        from Standard);   
110
111     InterOrExtent (myclass; F1, F2 :        Face        from TopoDS;
112                             LInt1  : in out ListOfShape from TopTools;
113                             LInt2  : in out ListOfShape from TopTools;
114                             Side   :        State       from TopAbs);
115                             
116     CheckBounds(myclass; F : Face from TopoDS;                      
117                          Analyse : Analyse from BRepOffset;
118                          enlargeU, enlargeVfirst,  enlargeVlast : out Boolean from Standard);
119                             
120     EnLargeFace(myclass; F            :        Face from TopoDS;                            
121                          NF           : in out Face from TopoDS;                             
122                          ChangeGeom   :        Boolean from Standard;
123                          UpDatePCurve :        Boolean from Standard = Standard_False; 
124                          enlargeU      :        Boolean from Standard = Standard_True;
125                          enlargeVfirst :        Boolean from Standard = Standard_True;
126                          enlargeVlast  :        Boolean from Standard = Standard_True)
127         ---Purpose: if <ChangeGeom> is TRUE  ,   the surface  can  be
128         --          changed .   
129         --          if <UpdatePCurve>  is  TRUE, update the  pcurves of the
130         --          edges of <F> on   the new surface.if the surface has  been changed,
131         --          Returns  True if The Surface of  <NF> has changed.
132         --          
133     returns Boolean from Standard;                       
134
135     ExtentFace (myclass;
136                 F           :        Face                from TopoDS;
137                 ConstShapes : in out DataMapOfShapeShape from TopTools;
138                 ToBuild     : in out DataMapOfShapeShape from TopTools;
139                 Side        :        State               from TopAbs ;
140                 TolConf     :        Real                from Standard;    
141                 NF          : in out Face                from TopoDS);
142                          
143                          
144     BuildNeighbour (myclass;
145                     W      :         Wire from TopoDS;
146                     F      :         Face from TopoDS;
147                     NOnV1  :  in out DataMapOfShapeShape from TopTools;
148                     NOnV2  :  in out DataMapOfShapeShape from TopTools);
149         ---Purpose: Via the wire explorer store in <NOnV1> for 
150         --          an Edge <E> of <W> his Edge neighbour on the first
151         --          vertex <V1> of <E>.
152         --          Store in NOnV2 the Neighbour of <E>on the last 
153         --          vertex <V2> of <E>.
154
155     MapVertexEdges (myclass;
156                     S      :        Shape                     from TopoDS;
157                     MVE    : in out DataMapOfShapeListOfShape from TopTools); 
158        ---Purpose: Store in MVE for a vertex <V>  in <S> the incident
159        --          edges <E> in <S>.
160        --          An Edge is Store only one Time for a vertex.
161
162
163     
164     Deboucle3D (myclass;
165                 S        : in Shape      from TopoDS;
166                 Boundary : in MapOfShape from TopTools)
167         ---Purpose: Remove the non valid   part of an offsetshape 
168         --          1 - Remove all the free boundary  and the faces 
169         --          connex to such edges.
170         --          2 - Remove all the shapes not  valid in the result
171         --          (according to the side of offseting)
172         --   in this verion only the first point is implemented.
173     returns Shape from TopoDS;
174     
175     CorrectOrientation (myclass ;
176                         SI         : in     Shape      from TopoDS;
177                         NewEdges   : in     IndexedMapOfShape from TopTools;    
178                         AsDes      : in out AsDes      from BRepAlgo;
179                         InitOffset : in out Image      from BRepAlgo;
180                         Offset     : in     Real       from Standard);
181     
182     Gabarit(myclass ; 
183             aCurve  :  Curve from Geom) 
184     returns Real from Standard;
185     
186 end Tool;