b311480e |
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 | |
7fd59977 |
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; |