0024023: Revamp the OCCT Handle -- ambiguity
[occt.git] / src / BRepLib / BRepLib_FuseEdges.cdl
1 -- Created on: 2007-09-10
2 -- Created by: Igor FEOKTISTOV
3 -- Copyright (c) 2007-2014 OPEN CASCADE SAS
4 --
5 -- This file is part of Open CASCADE Technology software library.
6 --
7 -- This library is free software; you can redistribute it and/or modify it under
8 -- the terms of the GNU Lesser General Public License version 2.1 as published
9 -- by the Free Software Foundation, with special exception defined in the file
10 -- OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
11 -- distribution for complete text of the license and disclaimer of any warranty.
12 --
13 -- Alternatively, this file may be used under the terms of Open CASCADE
14 -- commercial license or contractual agreement.
15
16 class FuseEdges from BRepLib 
17
18         ---Purpose: This class can detect  vertices in a face that can
19         --          be considered useless and then perform the fuse of
20         --          the  edges and remove  the  useless vertices.  By
21         --          useles vertices,  we mean :
22         --            * vertices that  have  exactly two connex edges 
23         --            * the edges connex to the vertex must have 
24         --              exactly the same 2 connex faces .
25         --            * The edges connex to the vertex must have the
26         --               same geometric support.
27
28 uses
29   Shape from TopoDS,
30   Vertex from TopoDS,
31   Edge from TopoDS,
32   ShapeEnum from TopAbs,
33   MapOfShape from TopTools,
34   ListOfShape from TopTools,
35   DataMapOfIntegerListOfShape from TopTools,
36   DataMapOfIntegerShape from TopTools,
37   DataMapOfShapeShape from TopTools,
38   IndexedDataMapOfShapeListOfShape from TopTools,
39   IndexedMapOfShape from TopTools
40
41 raises
42         ConstructionError from Standard,
43         NullObject        from Standard
44
45 is
46     Create (theShape : Shape from TopoDS;
47             PerformNow : Boolean from Standard = Standard_False)
48     returns FuseEdges from BRepLib
49     raises NullObject        from Standard;
50         ---Purpose: Initialise members  and build  construction of map
51         --          of ancestors.
52
53     AvoidEdges (me : in out; theMapEdg : IndexedMapOfShape from TopTools);
54         ---Purpose: set edges to avoid being fused 
55          
56     --  Modified  by  IFV  19.04.07   
57     SetConcatBSpl(me : in out; theConcatBSpl : Boolean from Standard = Standard_True);
58         ---Purpose: set mode to enable concatenation G1 BSpline edges in one 
59     --  End  Modified  by  IFV  19.04.07   
60
61     Edges (me : in out ; theMapLstEdg : in out DataMapOfIntegerListOfShape from TopTools);
62         ---Purpose: returns  all the list of edges to be fused
63         --          each list of the map represent a set of connex edges
64         --          that can be fused.
65
66     ResultEdges (me : in out ; theMapEdg : in out DataMapOfIntegerShape from TopTools);
67         ---Purpose: returns all the fused edges. each integer entry in
68         --           the   map  corresponds  to  the  integer   in the
69         --           DataMapOfIntegerListOfShape  we    get in  method
70         --          Edges.   That is to say, to  the list  of edges in
71         --          theMapLstEdg(i) corresponds the resulting edge theMapEdge(i)
72         --          
73
74
75     Faces (me: in out; theMapFac : in out DataMapOfShapeShape from TopTools); 
76         ---Purpose: returns the map of modified faces.
77
78     Shape (me : in out)
79     returns Shape from TopoDS
80     raises NullObject        from Standard;
81         ---Purpose: returns myShape modified with the list of internal
82         --          edges removed from it.
83         ---C++: return &
84
85     NbVertices (me : in out)
86     returns Integer from Standard
87     raises NullObject        from Standard;
88         ---Purpose: returns the number of vertices candidate to be removed
89         ---C++: return const
90
91     Perform (me : in out);
92     ---Purpose: Using  map of list of connex  edges, fuse each list to
93     --           one edge and then update myShape
94
95
96     BuildAncestors (me; S: Shape from TopoDS; TS: ShapeEnum from TopAbs; 
97                     TA: ShapeEnum from TopAbs; M: in out IndexedDataMapOfShapeListOfShape from TopTools)
98     ---Purpose: build a map of shapes and ancestors, like 
99     --          TopExp.MapShapesAndAncestors, but we remove duplicate 
100     --          shapes in list of shapes.
101     is private;
102     
103     BuildListEdges (me : in out)
104         ---Purpose: Build the all the lists of edges that are to be fused
105     is private;
106     
107     BuildListResultEdges (me : in out)
108         ---Purpose: Build result   fused edges according  to  the list
109         --          builtin BuildLisEdges
110     is private;
111     
112     BuildListConnexEdge (me : in out; theEdge : Shape from TopoDS; theMapUniq : in out MapOfShape from TopTools;
113                          theLstEdg : in out ListOfShape from TopTools)
114     is private;
115     
116     NextConnexEdge (me; theVertex : Vertex from TopoDS; theEdge : Shape from TopoDS; 
117                     theEdgeConnex : in out Shape from TopoDS)
118     returns Boolean from Standard
119     is private;
120     
121     SameSupport (me; E1 : Edge from TopoDS; E2 :Edge from TopoDS)
122     returns Boolean from Standard
123     is private;
124     
125     UpdatePCurve (me; theOldEdge : Edge from TopoDS; 
126                       theNewEdge : in out Edge from TopoDS; 
127                       theLstEdg  : ListOfShape from TopTools)
128     returns Boolean from Standard
129     is private;
130     
131     
132 fields
133     myShape           : Shape from TopoDS;
134     myShapeDone       : Boolean from Standard;
135     myEdgesDone       : Boolean from Standard;
136     myResultEdgesDone : Boolean from Standard;
137     myMapVerLstEdg    : IndexedDataMapOfShapeListOfShape from TopTools;
138     myMapEdgLstFac    : IndexedDataMapOfShapeListOfShape from TopTools;
139     myMapLstEdg       : DataMapOfIntegerListOfShape from TopTools;
140     myMapEdg          : DataMapOfIntegerShape from TopTools;
141     myMapFaces        : DataMapOfShapeShape from TopTools;
142     myNbConnexEdge    : Integer from Standard;
143     myAvoidEdg        : IndexedMapOfShape from TopTools; 
144     --  Modified  by  IFV  19.04.07   
145     myConcatBSpl      : Boolean  from  Standard;  --  to enable  concatenation of G1 BSpline 
146                                                   --  edges
147     
148 end FuseEdges;