0024428: Implementation of LGPL license
[occt.git] / src / BRepLib / BRepLib_FuseEdges.cdl
CommitLineData
b311480e 1-- Created on: 2007-09-10
2-- Created by: Igor FEOKTISTOV
973c2be1 3-- Copyright (c) 2007-2014 OPEN CASCADE SAS
b311480e 4--
973c2be1 5-- This file is part of Open CASCADE Technology software library.
b311480e 6--
973c2be1 7-- This library is free software; you can redistribute it and / or modify it
8-- under the terms of the GNU Lesser General Public 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.
b311480e 12--
973c2be1 13-- Alternatively, this file may be used under the terms of Open CASCADE
14-- commercial license or contractual agreement.
7fd59977 15
16class 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
28uses
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
41raises
42 ConstructionError from Standard,
43 NullObject from Standard
44
45is
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
132fields
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
148end FuseEdges;