0022904: Clean up sccsid variables
[occt.git] / src / QANewModTopOpe / QANewModTopOpe_Glue.cdl
1 -- File:        QANewModTopOpe_Glue.cdl
2 -- Created:     Fri May  3 18:01:59 2001
3 -- Author:      Michael SAZONOV <msv@nnov.matra-dtv.fr>
4 -- Copyright:   SAMTECH S.A. 2001
5
6 -- Lastly modified by :
7 -- +---------------------------------------------------------------------------+
8 -- !       msv ! Creation                                ! 3-05-2001! 3.0-00-2!
9 -- !       skv ! Add gluing Solid-Solid operation        ! 5-05-2001! 3.0-00-2!
10 -- !       skv ! Adaptation to OCC version 5.0           ! 6-05-2003! 3.0-00-2!
11 -- +---------------------------------------------------------------------------+
12
13
14
15 class Glue from QANewModTopOpe inherits BooleanOperation from BRepAlgoAPI
16
17         ---Purpose: Perform the gluing topological operation.
18
19 uses
20     Boolean from Standard,
21     Pnt from gp,
22     Shape from TopoDS,
23     Vertex from TopoDS,
24     Edge from TopoDS,
25     Face from TopoDS,
26     ListOfShape from TopTools,
27     State from TopAbs,
28     Substitution from BRepTools,
29     MapOfShape from TopTools,
30     DataMapOfShapeShape from TopTools,
31     DataMapOfShapeListOfShape from TopTools,
32     IndexedDataMapOfShapeListOfShape from TopTools
33
34 is
35
36     Create (theS1,theS2 : Shape from TopoDS;
37             theAllowCutting: Boolean from Standard = Standard_False;
38             thePerformNow: Boolean from Standard = Standard_True)
39     returns Glue from QANewModTopOpe;  
40     ---Purpose: Defines 2 operands.
41     --          If one of operands is Solid and another is Shell and Shell
42     --          goes inside Solid, the <allowCutting> determines what to do:
43     --            if True, Shell is cut by Solid during the operation;
44     --            if False, Null shape is returned, IsDone() returns False.
45     --          If <thePerformNow> is False then does not compute immediately.
46     ---Level: Public 
47
48     Build (me: in out)
49     is redefined static;
50     ---Purpose: Computation; is usefull when Create was called with thePerformNow
51     --          being False
52     ---Level: Public
53
54     Generated (me: in out; theS : Shape from TopoDS)
55     returns ListOfShape from TopTools is redefined static;
56     ---Purpose: Returns the  list   of shapes generated   from the
57     --          shape <theS>. 
58     ---C++: return const & 
59     ---Level: Public
60
61     Modified (me: in out; theS : Shape from TopoDS)
62     returns ListOfShape from TopTools is redefined static;
63     ---Purpose: Returns the list  of shapes modified from the shape
64     --          <theS>. 
65     ---C++: return const & 
66     ---Level: Public
67
68     IsDeleted (me: in out; theS : Shape from TopoDS)
69     returns Boolean from Standard is redefined static;
70     ---Purpose: Returns True if the shape <theS> existed in one of operands
71     --          and is absent in the result.
72     ---Level: Public 
73
74     HasGenerated (me)
75     returns Boolean  from  Standard 
76     is redefined;
77     ---Purpose: Returns True if there is at leat one generated shape
78     ---Level: Public
79
80     HasModified (me)
81     returns Boolean  from  Standard 
82     is redefined;
83     ---Purpose: Returns True if there is at leat one modified shape
84     ---Level: Public
85
86     HasDeleted (me)
87     returns Boolean  from  Standard 
88     is redefined;
89     ---Purpose: Returns True if there is at leat one deleted shape
90     ---Level: Public 
91      
92     
93
94     ------------------
95     -- Private methods
96     ------------------
97
98     PerformShellWire (me: in out) is private;
99     ---Purpose: Performs gluing Shell-Wire
100     ---Level: Private
101
102     PerformVertex (me: in out) is private;
103     ---Purpose: Performs gluing Solid-Vertex and Shell-Vertex
104     ---Level: Private
105
106     PerformShell (me: in out) is private;
107     ---Purpose: Performs gluing Solid-Shell and Shell-Shell
108     ---Level: Private
109
110     PerformWires (me: in out) is private;
111     ---Purpose: Performs gluing Wire-Wire
112     ---Level: Private
113
114     SubstitudeSDFaces(me:  in  out; 
115        theFirstSDFace      :           Shape                      from  TopoDS; 
116        theSecondSDFace     :           Shape                      from  TopoDS; 
117        theNewSolid1        :  in  out  Shape                      from  TopoDS;
118        theNewSolid2        :  in  out  Shape                      from  TopoDS; 
119        theMapOfChangedFaces:  in  out  DataMapOfShapeListOfShape  from  TopTools)
120     ---Purpose: This function performs gluing operation of same domain
121     --          faces theFirstSDFace and theSecondSDFace on shapes
122     --          theNewSolid1 and theNewSolid2 and returns them.
123     --          theMapOfChangedFaces contains changed faces as keys and
124     --          lists of their splits as items.
125     ---Level: Private
126     returns  Boolean  from  Standard
127     is  private;
128
129     PerformSDFaces (me: in out) is private;
130     ---Purpose: Performs gluing between same domain faces of object and tool
131     ---Level: Private
132
133     CutFace (me: in out; theFace: Face from TopoDS;
134                          theListSE: ListOfShape from TopTools)
135     returns Boolean from Standard is private;
136     ---Purpose: For the case Solid-Shell, <aFace> is from Shell.
137     --          Splits <theFace> onto faces by section edges <theListSE> and
138     --          add <theFace> for substitution by list of faces which are "out"
139     --          of Solid
140     ---Level: Private
141
142     ClassifyFace (me: in; theFace: Face from TopoDS;
143                           theListSE: ListOfShape from TopTools)
144     returns State from TopAbs is private;
145     ---Purpose: For the case Solid-Shell, <theFace> is a split of Shell's face.
146     --          Returns the state of <theFace> relatively Solid.
147     ---Level: Private
148
149     SectionInsideFace (me: in out; theFace: Face from TopoDS;
150                                    theListSE: ListOfShape from TopTools;
151                                    theShapeNum: Integer from Standard; 
152                                    theGenEdges: MapOfShape from TopTools)
153     is private;
154     ---Purpose: Inserts "internal" elements (wires, edges, vertices) computed
155     --          from a list of section edges <theListSE> into <theFace>.
156     ---Level: Private
157
158     ------------------
159     -- Utilities
160     ------------------
161     ProjPointOnEdge (myclass; thePnt: Pnt from gp; theEdge: Edge from TopoDS;
162                               thePar, theDist: out Real from Standard)
163     returns Boolean from Standard;
164
165     InsertVertexInEdge (myclass; theEdge: Edge from TopoDS;
166                                  theVer: Vertex from TopoDS;
167                                  thePar: Real from Standard;
168                                  theNewEdge: out Edge from TopoDS);
169
170     SplitEdgeByVertex (myclass; theEdge: Edge from TopoDS;
171                                 theVer: Vertex from TopoDS;
172                                 thePar: Real from Standard;
173                                 theListE: out ListOfShape from TopTools);
174
175     CompareVertices (myclass; theV1, theV2: Vertex from TopoDS;
176                               theDist: out Real from Standard)
177     returns Boolean from Standard;
178
179     FindWireOrUpdateMap (myclass; theWire: Shape from TopoDS;
180                   theMapELW: in out IndexedDataMapOfShapeListOfShape from TopTools)
181     returns Shape from TopoDS is private;
182     ---C++: return const &
183
184 fields
185
186     myCompleted: Boolean from Standard;
187     myAllowCutting: Boolean from Standard;
188     mySubst : Substitution from BRepTools;
189     -- Map: section edge => list of all faces-ancestors from corresponding shape
190     myMapSEdgeFaces1: DataMapOfShapeListOfShape from TopTools;
191     myMapSEdgeFaces2: DataMapOfShapeListOfShape from TopTools;
192     -- Map: section edge => face crossed by this edge (i.e., edge lies
193     --      inside the face, not on boundary)
194     myMapSEdgeCrossFace1: DataMapOfShapeShape from TopTools;
195     myMapSEdgeCrossFace2: DataMapOfShapeShape from TopTools;
196     -- Map: internal edge => list of internal wires containing this edge;
197     --      it is to share wires
198     myMapEdgeWires: IndexedDataMapOfShapeListOfShape from TopTools;
199     myEdgesToLeave: MapOfShape from TopTools;
200     myMapModif: DataMapOfShapeListOfShape from TopTools;
201     myMapGener: DataMapOfShapeListOfShape from TopTools;
202
203 end Glue;
204
205 -- @@SDM: begin
206
207 -- Copyright SAMTECH ..........................................Version    3.0-00
208 -- Lastly modified by : skv                                    Date :  6-05-2003
209
210 -- File history synopsis (creation,modification,correction)
211 -- +---------------------------------------------------------------------------+
212 -- ! Developer !              Comments                   !   Date   ! Version  !
213 -- +-----------!-----------------------------------------!----------!----------+
214 -- !       msv ! Creation                                ! 3-05-2001! 3.0-00-2!
215 -- !       skv ! Add gluing Solid-Solid operation        ! 5-05-2001! 3.0-00-2!
216 -- !       skv ! Adaptation to OCC version 5.0           ! 6-05-2003! 3.0-00-2!
217 -- !  vladimir ! adaptation to CAS 5.0                   !  07/01/03!    4.0-2!
218 -- +---------------------------------------------------------------------------+
219 --
220 -- @@SDM: end