0031668: Visualization - WebGL sample doesn't work on Emscripten 1.39
[occt.git] / src / BRepFeat / BRepFeat_SplitShape.cxx
CommitLineData
b311480e 1// Created on: 1995-09-04
2// Created by: Jacques GOUSSARD
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//
d5f74e42 8// This library is free software; you can redistribute it and/or modify it under
9// the terms of the GNU Lesser General Public License version 2.1 as published
973c2be1 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
7fd59977 17
42cf5bc1 18#include <BRepFeat_SplitShape.hxx>
19#include <LocOpe_WiresOnShape.hxx>
20#include <Standard_ConstructionError.hxx>
7fd59977 21#include <Standard_Failure.hxx>
42cf5bc1 22#include <Standard_NoSuchObject.hxx>
23#include <StdFail_NotDone.hxx>
24#include <TopoDS_Compound.hxx>
25#include <TopoDS_Edge.hxx>
26#include <TopoDS_Face.hxx>
27#include <TopoDS_Shape.hxx>
28#include <TopoDS_Wire.hxx>
29#include <TopTools_ListIteratorOfListOfShape.hxx>
68064d7b 30#include <TopExp_Explorer.hxx>
7fd59977 31
32//=======================================================================
33//function : Build
34//purpose :
35//=======================================================================
7fd59977 36void BRepFeat_SplitShape::Build ()
37{
38 mySShape.Perform(myWOnShape);
39 if (mySShape.IsDone()) {
40 Done();
41 myShape = mySShape.ResultingShape();
68064d7b 42 myRight.Clear();
7fd59977 43 }
44}
45
46
47
48//=======================================================================
49//function : DirectLeft
50//purpose :
51//=======================================================================
52
53const TopTools_ListOfShape& BRepFeat_SplitShape::DirectLeft() const
54{
55 return mySShape.DirectLeft();
56}
57
58
59//=======================================================================
60//function : DirectLeft
61//purpose :
62//=======================================================================
63
64const TopTools_ListOfShape& BRepFeat_SplitShape::Left() const
65{
66 return mySShape.Left();
67}
68
68064d7b 69
70//=======================================================================
71//function : Right
72//purpose :
73//=======================================================================
74
75const TopTools_ListOfShape& BRepFeat_SplitShape::Right() const
76{
77 if (myRight.IsEmpty())
78 {
79 TopTools_MapOfShape aMapOfLeft;
80 TopTools_ListIteratorOfListOfShape anIterator;
81 for (anIterator.Initialize(mySShape.Left()); anIterator.More(); anIterator.Next())
82 {
83 aMapOfLeft.Add(anIterator.Value());
84 }
85 TopExp_Explorer anExplorer;
86 for (anExplorer.Init(myShape, TopAbs_FACE); anExplorer.More(); anExplorer.Next())
87 {
88 const TopoDS_Shape& aFace = anExplorer.Current();
89 if (!aMapOfLeft.Contains(aFace))
90 myRight.Append(aFace);
91 }
92 }
93 return myRight;
94}
95
7fd59977 96//=======================================================================
97//function : isDeleted
98//purpose :
99//=======================================================================
100
101Standard_Boolean BRepFeat_SplitShape::IsDeleted(const TopoDS_Shape& F)
102{
103 TopTools_ListIteratorOfListOfShape itl
104 (((LocOpe_Spliter*) &mySShape)->DescendantShapes(F));
0d969553 105 // all that to swindle the constant
7fd59977 106
107 return (!itl.More());// a priori impossible
108
109}
110//=======================================================================
111//function : Modified
112//purpose :
113//=======================================================================
114
115const TopTools_ListOfShape& BRepFeat_SplitShape::Modified
116 (const TopoDS_Shape& F)
117{
118 return mySShape.DescendantShapes(F);
119}
120
121
122
123