0024530: TKMesh - remove unused package IntPoly
[occt.git] / src / BRepLib / BRepLib_MakeSolid.cxx
CommitLineData
b311480e 1// Created on: 1995-01-04
2// Created by: Bruno DUMORTIER
3// Copyright (c) 1995-1999 Matra Datavision
973c2be1 4// Copyright (c) 1999-2014 OPEN CASCADE SAS
b311480e 5//
973c2be1 6// This file is part of Open CASCADE Technology software library.
b311480e 7//
973c2be1 8// This library is free software; you can redistribute it and / or modify it
9// under the terms of the GNU Lesser General Public version 2.1 as published
10// by the Free Software Foundation, with special exception defined in the file
11// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
12// distribution for complete text of the license and disclaimer of any warranty.
b311480e 13//
973c2be1 14// Alternatively, this file may be used under the terms of Open CASCADE
15// commercial license or contractual agreement.
7fd59977 16
17#include <BRepLib_MakeSolid.ixx>
18
19#include <TopoDS.hxx>
20#include <BRep_Builder.hxx>
21#include <TopExp_Explorer.hxx>
22#include <TopTools_MapOfShape.hxx>
23#include <TopTools_MapIteratorOfMapOfShape.hxx>
24#include <TopTools_ListIteratorOfListOfShape.hxx>
25
26//=======================================================================
27//function : BRepLib_MakeSolid
28//purpose :
29//=======================================================================
30
31BRepLib_MakeSolid::BRepLib_MakeSolid()
32{
33 BRep_Builder B;
34 B.MakeSolid(TopoDS::Solid(myShape));
35 Done();
36}
37
38//=======================================================================
39//function : BRepLib_MakeSolid
40//purpose :
41//=======================================================================
42
43BRepLib_MakeSolid::BRepLib_MakeSolid(const TopoDS_CompSolid& S)
44{
45 BRep_Builder B;
46 B.MakeSolid(TopoDS::Solid(myShape));
47
48 TopExp_Explorer ex1, ex2;
49 TopTools_MapOfShape aMapOfFaces;
50 for (ex1.Init(S,TopAbs_SHELL); ex1.More(); ex1.Next()) {
51 for (ex2.Init(ex1.Current(),TopAbs_FACE); ex2.More(); ex2.Next()) {
52 if(!aMapOfFaces.Add(ex2.Current())) {
53 myDeletedFaces.Append(ex2.Current());
54 aMapOfFaces.Remove(ex2.Current());
55 }
56 }
57 }
58
59 TopoDS_Shape aShell;
60 B.MakeShell(TopoDS::Shell(aShell));
61
62 TopTools_MapIteratorOfMapOfShape aFaceIter(aMapOfFaces);
63 for(; aFaceIter.More(); aFaceIter.Next()) {
64 B.Add(aShell, aFaceIter.Key());
65 }
66
67 B.Add(myShape,aShell);
68
69 Done();
70}
71
72
73//=======================================================================
74//function : BRepLib_MakeSolid
75//purpose :
76//=======================================================================
77
78BRepLib_MakeSolid::BRepLib_MakeSolid(const TopoDS_Shell& S)
79{
80 BRep_Builder B;
81 B.MakeSolid(TopoDS::Solid(myShape));
82 B.Add(myShape,S);
83 Done();
84}
85
86
87//=======================================================================
88//function : BRepLib_MakeSolid
89//purpose :
90//=======================================================================
91
92BRepLib_MakeSolid::BRepLib_MakeSolid(const TopoDS_Shell& S1, const TopoDS_Shell& S2)
93{
94 BRep_Builder B;
95 B.MakeSolid(TopoDS::Solid(myShape));
96 B.Add(myShape,S1);
97 B.Add(myShape,S2);
98 Done();
99}
100
101
102//=======================================================================
103//function : BRepLib_MakeSolid
104//purpose :
105//=======================================================================
106
107BRepLib_MakeSolid::BRepLib_MakeSolid(const TopoDS_Shell& S1, const TopoDS_Shell& S2, const TopoDS_Shell& S3)
108{
109 BRep_Builder B;
110 B.MakeSolid(TopoDS::Solid(myShape));
111 B.Add(myShape,S1);
112 B.Add(myShape,S2);
113 B.Add(myShape,S3);
114 Done();
115}
116
117
118//=======================================================================
119//function : BRepLib_MakeSolid
120//purpose :
121//=======================================================================
122
123BRepLib_MakeSolid::BRepLib_MakeSolid(const TopoDS_Solid& So)
124{
125 BRep_Builder B;
126 B.MakeSolid(TopoDS::Solid(myShape));
127 TopExp_Explorer ex;
128 for (ex.Init(So,TopAbs_SHELL); ex.More(); ex.Next())
129 B.Add(myShape,ex.Current());
130 Done();
131}
132
133
134//=======================================================================
135//function : BRepLib_MakeSolid
136//purpose :
137//=======================================================================
138
139BRepLib_MakeSolid::BRepLib_MakeSolid(const TopoDS_Solid& So, const TopoDS_Shell& S)
140{
141 BRep_Builder B;
142 B.MakeSolid(TopoDS::Solid(myShape));
143 TopExp_Explorer ex;
144 for (ex.Init(So,TopAbs_SHELL); ex.More(); ex.Next())
145 B.Add(myShape,ex.Current());
146 B.Add(myShape,S);
147 Done();
148}
149
150
151//=======================================================================
152//function : Add
153//purpose :
154//=======================================================================
155
156void BRepLib_MakeSolid::Add(const TopoDS_Shell& S)
157{
158 BRep_Builder B;
159 B.Add(myShape,S);
160}
161
162
163//=======================================================================
164//function : Solid
165//purpose :
166//=======================================================================
167
168const TopoDS_Solid& BRepLib_MakeSolid::Solid()const
169{
170 return TopoDS::Solid(Shape());
171}
172
173
174
175//=======================================================================
176//function : operator
177//purpose :
178//=======================================================================
179
180BRepLib_MakeSolid::operator TopoDS_Solid() const
181{
182 return TopoDS::Solid(Shape());
183}
184
185//=======================================================================
186//function : FaceStatus
187//purpose :
188//=======================================================================
189
190BRepLib_ShapeModification BRepLib_MakeSolid::FaceStatus
191 (const TopoDS_Face& F) const
192{
193 BRepLib_ShapeModification myStatus = BRepLib_Preserved;
194 TopTools_ListIteratorOfListOfShape anIter(myDeletedFaces);
195
196 for(; anIter.More(); anIter.Next()) {
197 if(F.IsSame(anIter.Value())) {
198 myStatus = BRepLib_Deleted;
199 break;
200 }
201 }
202
203 return myStatus;
204}
205