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 | -- |
d5f74e42 |
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 |
973c2be1 |
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 | |
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; |