0023024: Update headers of OCCT files
[occt.git] / src / BRepLib / BRepLib_FuseEdges.cdl
1 -- Created on: 2007-09-10
2 -- Created by: Igor FEOKTISTOV
3 -- Copyright (c) 2007-2012 OPEN CASCADE SAS
4 --
5 -- The content of this file is subject to the Open CASCADE Technology Public
6 -- License Version 6.5 (the "License"). You may not use the content of this file
7 -- except in compliance with the License. Please obtain a copy of the License
8 -- at http://www.opencascade.org and read it completely before using this file.
9 --
10 -- The Initial Developer of the Original Code is Open CASCADE S.A.S., having its
11 -- main offices at: 1, place des Freres Montgolfier, 78280 Guyancourt, France.
12 --
13 -- The Original Code and all software distributed under the License is
14 -- distributed on an "AS IS" basis, without warranty of any kind, and the
15 -- Initial Developer hereby disclaims all such warranties, including without
16 -- limitation, any warranties of merchantability, fitness for a particular
17 -- purpose or non-infringement. Please see the License for the specific terms
18 -- and conditions governing the rights and limitations under the License.
19
20
21
22 class FuseEdges from BRepLib 
23
24         ---Purpose: This class can detect  vertices in a face that can
25         --          be considered useless and then perform the fuse of
26         --          the  edges and remove  the  useless vertices.  By
27         --          useles vertices,  we mean :
28         --            * vertices that  have  exactly two connex edges 
29         --            * the edges connex to the vertex must have 
30         --              exactly the same 2 connex faces .
31         --            * The edges connex to the vertex must have the
32         --               same geometric support.
33
34 uses
35   Shape from TopoDS,
36   Vertex from TopoDS,
37   Edge from TopoDS,
38   ShapeEnum from TopAbs,
39   MapOfShape from TopTools,
40   ListOfShape from TopTools,
41   DataMapOfIntegerListOfShape from TopTools,
42   DataMapOfIntegerShape from TopTools,
43   DataMapOfShapeShape from TopTools,
44   IndexedDataMapOfShapeListOfShape from TopTools,
45   IndexedMapOfShape from TopTools
46
47 raises
48         ConstructionError from Standard,
49         NullObject        from Standard
50
51 is
52     Create (theShape : Shape from TopoDS;
53             PerformNow : Boolean from Standard = Standard_False)
54     returns FuseEdges from BRepLib
55     raises NullObject        from Standard;
56         ---Purpose: Initialise members  and build  construction of map
57         --          of ancestors.
58
59     AvoidEdges (me : in out; theMapEdg : IndexedMapOfShape from TopTools);
60         ---Purpose: set edges to avoid being fused 
61          
62     --  Modified  by  IFV  19.04.07   
63     SetConcatBSpl(me : in out; theConcatBSpl : Boolean from Standard = Standard_True);
64         ---Purpose: set mode to enable concatenation G1 BSpline edges in one 
65     --  End  Modified  by  IFV  19.04.07   
66
67     Edges (me : in out ; theMapLstEdg : in out DataMapOfIntegerListOfShape from TopTools);
68         ---Purpose: returns  all the list of edges to be fused
69         --          each list of the map represent a set of connex edges
70         --          that can be fused.
71
72     ResultEdges (me : in out ; theMapEdg : in out DataMapOfIntegerShape from TopTools);
73         ---Purpose: returns all the fused edges. each integer entry in
74         --           the   map  corresponds  to  the  integer   in the
75         --           DataMapOfIntegerListOfShape  we    get in  method
76         --          Edges.   That is to say, to  the list  of edges in
77         --          theMapLstEdg(i) corresponds the resulting edge theMapEdge(i)
78         --          
79
80
81     Faces (me: in out; theMapFac : in out DataMapOfShapeShape from TopTools); 
82         ---Purpose: returns the map of modified faces.
83
84     Shape (me : in out)
85     returns Shape from TopoDS
86     raises NullObject        from Standard;
87         ---Purpose: returns myShape modified with the list of internal
88         --          edges removed from it.
89         ---C++: return &
90
91     NbVertices (me : in out)
92     returns Integer from Standard
93     raises NullObject        from Standard;
94         ---Purpose: returns the number of vertices candidate to be removed
95         ---C++: return const
96
97     Perform (me : in out);
98     ---Purpose: Using  map of list of connex  edges, fuse each list to
99     --           one edge and then update myShape
100
101
102     BuildAncestors (me; S: Shape from TopoDS; TS: ShapeEnum from TopAbs; 
103                     TA: ShapeEnum from TopAbs; M: in out IndexedDataMapOfShapeListOfShape from TopTools)
104     ---Purpose: build a map of shapes and ancestors, like 
105     --          TopExp.MapShapesAndAncestors, but we remove duplicate 
106     --          shapes in list of shapes.
107     is private;
108     
109     BuildListEdges (me : in out)
110         ---Purpose: Build the all the lists of edges that are to be fused
111     is private;
112     
113     BuildListResultEdges (me : in out)
114         ---Purpose: Build result   fused edges according  to  the list
115         --          builtin BuildLisEdges
116     is private;
117     
118     BuildListConnexEdge (me : in out; theEdge : Shape from TopoDS; theMapUniq : in out MapOfShape from TopTools;
119                          theLstEdg : in out ListOfShape from TopTools)
120     is private;
121     
122     NextConnexEdge (me; theVertex : Vertex from TopoDS; theEdge : Shape from TopoDS; 
123                     theEdgeConnex : in out Shape from TopoDS)
124     returns Boolean from Standard
125     is private;
126     
127     SameSupport (me; E1 : Edge from TopoDS; E2 :Edge from TopoDS)
128     returns Boolean from Standard
129     is private;
130     
131     UpdatePCurve (me; theOldEdge : Edge from TopoDS; 
132                       theNewEdge : in out Edge from TopoDS; 
133                       theLstEdg  : ListOfShape from TopTools)
134     returns Boolean from Standard
135     is private;
136     
137     
138 fields
139     myShape           : Shape from TopoDS;
140     myShapeDone       : Boolean from Standard;
141     myEdgesDone       : Boolean from Standard;
142     myResultEdgesDone : Boolean from Standard;
143     myMapVerLstEdg    : IndexedDataMapOfShapeListOfShape from TopTools;
144     myMapEdgLstFac    : IndexedDataMapOfShapeListOfShape from TopTools;
145     myMapLstEdg       : DataMapOfIntegerListOfShape from TopTools;
146     myMapEdg          : DataMapOfIntegerShape from TopTools;
147     myMapFaces        : DataMapOfShapeShape from TopTools;
148     myNbConnexEdge    : Integer from Standard;
149     myAvoidEdg        : IndexedMapOfShape from TopTools; 
150     --  Modified  by  IFV  19.04.07   
151     myConcatBSpl      : Boolean  from  Standard;  --  to enable  concatenation of G1 BSpline 
152                                                   --  edges
153     
154 end FuseEdges;