0024624: Lost word in license statement in source files
[occt.git] / src / BOPTools / BOPTools_ShapeSet.lxx
CommitLineData
b311480e 1// Created by: Peter KURNEV
973c2be1 2// Copyright (c) 1999-2014 OPEN CASCADE SAS
b311480e 3//
973c2be1 4// This file is part of Open CASCADE Technology software library.
b311480e 5//
d5f74e42 6// This library is free software; you can redistribute it and/or modify it under
7// the terms of the GNU Lesser General Public License version 2.1 as published
973c2be1 8// by the Free Software Foundation, with special exception defined in the file
9// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
10// distribution for complete text of the license and disclaimer of any warranty.
b311480e 11//
973c2be1 12// Alternatively, this file may be used under the terms of Open CASCADE
13// commercial license or contractual agreement.
b311480e 14
4e57c75e 15#include <TopExp_Explorer.hxx>
16#include <TopoDS_Edge.hxx>
17#include <BRep_Tool.hxx>
7fd59977 18
19//=======================================================================
4e57c75e 20//function :
21//purpose :
7fd59977 22//=======================================================================
4e57c75e 23 inline BOPTools_ShapeSet::BOPTools_ShapeSet()
24{
25}
7fd59977 26//=======================================================================
4e57c75e 27//function :
28//purpose :
7fd59977 29//=======================================================================
4e57c75e 30 inline BOPTools_ShapeSet::BOPTools_ShapeSet(const Handle(NCollection_BaseAllocator)& theObj)
31:
32 myMap(100, theObj)
7fd59977 33{
7fd59977 34}
35//=======================================================================
4e57c75e 36//function : ~
37//purpose :
7fd59977 38//=======================================================================
4e57c75e 39 inline BOPTools_ShapeSet::~BOPTools_ShapeSet()
7fd59977 40{
7fd59977 41}
7fd59977 42//=======================================================================
4e57c75e 43//function : Clear
44//purpose :
7fd59977 45//=======================================================================
4e57c75e 46 inline void BOPTools_ShapeSet::Clear()
7fd59977 47{
4e57c75e 48 myMap.Clear();
7fd59977 49}
7fd59977 50//=======================================================================
4e57c75e 51//function : SetShape
52//purpose :
7fd59977 53//=======================================================================
4e57c75e 54 inline void BOPTools_ShapeSet::SetShape(const TopoDS_Shape& theShape)
7fd59977 55{
4e57c75e 56 myShape=theShape;
7fd59977 57}
7fd59977 58//=======================================================================
4e57c75e 59//function : Shape
60//purpose :
7fd59977 61//=======================================================================
4e57c75e 62 inline const TopoDS_Shape& BOPTools_ShapeSet::Shape()const
7fd59977 63{
4e57c75e 64 return myShape;
7fd59977 65}
4e57c75e 66
7fd59977 67//=======================================================================
4e57c75e 68//function : Add
69//purpose :
7fd59977 70//=======================================================================
4e57c75e 71 inline void BOPTools_ShapeSet::Add(const TopoDS_Shape& theShape)
7fd59977 72{
4e57c75e 73 myMap.Add(theShape);
7fd59977 74}
7fd59977 75//=======================================================================
4e57c75e 76//function : Add
77//purpose :
7fd59977 78//=======================================================================
4e57c75e 79 inline void BOPTools_ShapeSet::Add(const TopoDS_Shape& theShape,
80 const TopAbs_ShapeEnum theType)
7fd59977 81{
4e57c75e 82 TopExp_Explorer aExp(theShape, theType);
83 for(; aExp.More(); aExp.Next()) {
84 const TopoDS_Shape& aS=aExp.Current();
85 myMap.Add(aS);
86 }
7fd59977 87}
88//=======================================================================
4e57c75e 89//function : Add
90//purpose :
7fd59977 91//=======================================================================
4e57c75e 92 inline void BOPTools_ShapeSet::Add(const BOPCol_ListOfShape& theLS)
7fd59977 93{
4e57c75e 94 BOPCol_ListIteratorOfListOfShape aIt;
95 //
96 aIt.Init(theLS);
97 for (; aIt.More(); aIt.Next()) {
98 const TopoDS_Shape& aS=aIt.Value();
99 myMap.Add(aS);
100 }
7fd59977 101}
102//=======================================================================
4e57c75e 103//function : AddEdge
104//purpose :
7fd59977 105//=======================================================================
4e57c75e 106 inline void BOPTools_ShapeSet::AddEdge(const TopoDS_Edge& theEdge)
7fd59977 107{
4e57c75e 108 if (!BRep_Tool::Degenerated(theEdge)){
109 myMap.Add(theEdge);
110 }
7fd59977 111}
112//=======================================================================
4e57c75e 113//function : AddEdges
114//purpose :
7fd59977 115//=======================================================================
4e57c75e 116 inline void BOPTools_ShapeSet::AddEdges(const BOPCol_ListOfShape& theLS)
7fd59977 117{
4e57c75e 118 BOPCol_ListIteratorOfListOfShape aIt;
119 //
120 aIt.Initialize(theLS);
121 for (; aIt.More(); aIt.Next()) {
122 const TopoDS_Edge& aE=(*(TopoDS_Edge*)&aIt.Value());
123 AddEdge(aE);
124 }
7fd59977 125}
126//=======================================================================
4e57c75e 127//function : AddEdges
128//purpose :
7fd59977 129//=======================================================================
4e57c75e 130 inline void BOPTools_ShapeSet::AddEdges(const TopoDS_Shape& theFace)
7fd59977 131{
4e57c75e 132 TopExp_Explorer aExp(theFace, TopAbs_EDGE);
133 for(; aExp.More(); aExp.Next()) {
134 const TopoDS_Edge& aE=(*(TopoDS_Edge*)&aExp.Current());
135 AddEdge(aE);
136 }
7fd59977 137}
7fd59977 138//=======================================================================
4e57c75e 139//function : Get
140//purpose :
7fd59977 141//=======================================================================
4e57c75e 142 inline void BOPTools_ShapeSet::Get(BOPCol_ListOfShape& theLS)const
7fd59977 143{
4e57c75e 144 BOPCol_MapIteratorOfMapOfOrientedShape aIt;
145 //
146 aIt.Initialize(myMap);
147 for (; aIt.More(); aIt.Next()) {
148 const TopoDS_Shape& aS=aIt.Value();
149 theLS.Append(aS);
150 }
7fd59977 151}
152//=======================================================================
4e57c75e 153//function : Contains
154//purpose :
7fd59977 155//=======================================================================
4e57c75e 156 inline Standard_Boolean BOPTools_ShapeSet::Contains(const BOPTools_ShapeSet& theOther)const
7fd59977 157{
4e57c75e 158 Standard_Boolean bRet;
159 BOPCol_MapIteratorOfMapOfOrientedShape aIt;
160 //
161 aIt.Initialize(theOther.myMap);
162 for (; aIt.More(); aIt.Next()) {
163 const TopoDS_Shape& aS=aIt.Value();
164 bRet=myMap.Contains(aS);
165 if (!bRet) {
166 break;
167 }
168 }
169 return bRet;
7fd59977 170}
7fd59977 171//=======================================================================
4e57c75e 172//function : Subtract
173//purpose :
7fd59977 174//=======================================================================
4e57c75e 175 inline void BOPTools_ShapeSet::Subtract(const BOPTools_ShapeSet& theOther)
7fd59977 176{
4e57c75e 177 BOPCol_MapIteratorOfMapOfOrientedShape aIt;
178 //
179 aIt.Initialize(theOther.myMap);
180 for (; aIt.More(); aIt.Next()) {
181 const TopoDS_Shape& aS=aIt.Value();
182 if (myMap.Contains(aS)) {
183 myMap.Remove(aS);
184 }
185 }
7fd59977 186}