b311480e |
1 | -- Created on: 1995-12-21 |
2 | -- Created by: Jean Yves LEBEY |
3 | -- Copyright (c) 1995-1999 Matra Datavision |
4 | -- Copyright (c) 1999-2012 OPEN CASCADE SAS |
5 | -- |
6 | -- The content of this file is subject to the Open CASCADE Technology Public |
7 | -- License Version 6.5 (the "License"). You may not use the content of this file |
8 | -- except in compliance with the License. Please obtain a copy of the License |
9 | -- at http://www.opencascade.org and read it completely before using this file. |
10 | -- |
11 | -- The Initial Developer of the Original Code is Open CASCADE S.A.S., having its |
12 | -- main offices at: 1, place des Freres Montgolfier, 78280 Guyancourt, France. |
13 | -- |
14 | -- The Original Code and all software distributed under the License is |
15 | -- distributed on an "AS IS" basis, without warranty of any kind, and the |
16 | -- Initial Developer hereby disclaims all such warranties, including without |
17 | -- limitation, any warranties of merchantability, fitness for a particular |
18 | -- purpose or non-infringement. Please see the License for the specific terms |
19 | -- and conditions governing the rights and limitations under the License. |
20 | |
7fd59977 |
21 | |
22 | class FaceBuilder from TopOpeBRepBuild |
23 | |
24 | uses |
25 | |
26 | Shape from TopoDS, |
27 | Face from TopoDS, |
28 | ListOfShape from TopTools, |
29 | IndexedMapOfShape from TopTools, |
30 | IndexedDataMapOfShapeShape from TopTools, |
31 | ShapeSet from TopOpeBRepBuild, |
32 | LoopSet from TopOpeBRepBuild, |
33 | BlockIterator from TopOpeBRepBuild, |
34 | BlockBuilder from TopOpeBRepBuild, |
35 | WireEdgeSet from TopOpeBRepBuild, |
36 | FaceAreaBuilder from TopOpeBRepBuild, |
37 | DataMapOfShapeInteger from TopTools |
38 | |
39 | is |
40 | |
41 | Create returns FaceBuilder; |
42 | |
43 | Create(ES : in out WireEdgeSet; F : Shape from TopoDS; |
44 | ForceClass : Boolean = Standard_False) returns FaceBuilder; |
45 | ---Purpose: Create a FaceBuilder to build the faces on |
46 | -- the shapes (wires, blocks of edge) described by <LS>. |
47 | |
48 | InitFaceBuilder(me : in out; |
49 | ES : in out WireEdgeSet; F : Shape from TopoDS; |
50 | ForceClass : Boolean); |
51 | |
52 | DetectUnclosedWire(me : in out; |
53 | mapVVsameG : out IndexedDataMapOfShapeShape from TopTools; |
54 | mapVon1Edge : out IndexedDataMapOfShapeShape from TopTools); |
55 | ---Purpose: Removes are non 3d-closed wires. |
56 | -- Fills up maps <mapVVsameG> and <mapVon1Edge>, in order to |
57 | -- correct 3d-closed but unclosed (topologic connexity) wires. |
58 | -- modifies myBlockBuilder |
59 | |
60 | CorrectGclosedWire(me : in out; |
61 | mapVVref : IndexedDataMapOfShapeShape from TopTools; |
62 | mapVon1Edge : IndexedDataMapOfShapeShape from TopTools); |
63 | ---Purpose: Using the given maps, change the topology of the 3d-closed |
64 | -- wires, in order to get closed wires. |
65 | |
66 | DetectPseudoInternalEdge(me : in out; |
67 | mapE : out IndexedMapOfShape from TopTools); |
68 | ---Purpose: Removes edges appearing twice (FORWARD,REVERSED) with a bounding |
69 | -- vertex not connected to any other edge. |
70 | -- mapE contains edges found. |
71 | -- modifies myBlockBuilder. |
72 | |
73 | Face(me) returns Shape from TopoDS; |
74 | ---C++: return const & |
75 | ---Purpose: return myFace |
76 | |
77 | -- Output methods |
78 | InitFace(me : in out) returns Integer from Standard; |
79 | MoreFace(me) returns Boolean from Standard; |
80 | NextFace(me : in out); |
81 | |
82 | -- Exploration of the wires of the current face |
83 | InitWire(me : in out) returns Integer from Standard; |
84 | MoreWire(me) returns Boolean from Standard; |
85 | NextWire(me : in out); |
86 | IsOldWire(me) returns Boolean from Standard; |
87 | OldWire(me) returns Shape from TopoDS; |
88 | ---Purpose: Returns current wire |
89 | -- This wire may be : |
90 | -- * an old wire OldWire(), which has not been reconstructed; |
91 | -- * a new wire made of edges described by ...NewEdge() methods. |
92 | ---C++: return const & |
93 | |
94 | -- Exploration of the edges of current wire when IsOldWire = False |
95 | FindNextValidElement(me : in out); |
96 | ---Purpose: Iterates on myBlockIterator until finding a valid element |
97 | InitEdge(me : in out) returns Integer from Standard; |
98 | MoreEdge(me) returns Boolean from Standard; |
99 | NextEdge(me : in out); |
100 | Edge(me) returns Shape from TopoDS; |
101 | ---Purpose: Returns current new edge of current new wire. |
102 | ---C++: return const & |
103 | |
104 | EdgeConnexity(me;E:Shape) returns Integer; |
105 | AddEdgeWire(me;E:Shape;W:in out Shape) |
106 | returns Integer; |
107 | |
108 | --- private |
109 | MakeLoops(me : in out; SS : in out ShapeSet from TopOpeBRepBuild) |
110 | is private; |
111 | |
112 | fields |
113 | |
114 | myFace : Face from TopoDS; |
115 | myLoopSet : LoopSet from TopOpeBRepBuild; |
116 | myBlockIterator : BlockIterator from TopOpeBRepBuild; |
117 | myBlockBuilder : BlockBuilder from TopOpeBRepBuild; |
118 | myFaceAreaBuilder : FaceAreaBuilder from TopOpeBRepBuild; |
119 | myMOSI : DataMapOfShapeInteger from TopTools; |
120 | |
121 | end FaceBuilder; |