summaryrefslogtreecommitdiff
path: root/src/TopOpeBRep/TopOpeBRep_ShapeScanner.cxx
blob: 72f9cf6e8e8261413d4c50d918ecbe2fb3161f65 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
// File:	TopOpeBRep_ShapeScanner.cxx
// Created:	Wed Jul  7 20:10:58 1993
// Author:	Jean Yves LEBEY
//		<jyl@zerox>

#include <TopOpeBRep_ShapeScanner.ixx>
#include <TopOpeBRepTool_define.hxx>
#include <TopAbs.hxx>

//=======================================================================
//function : TopOpeBRep_ShapeScanner
//purpose  : 
//=======================================================================
TopOpeBRep_ShapeScanner::TopOpeBRep_ShapeScanner()
{
}    

//=======================================================================
//function : Clear
//purpose  : 
//=======================================================================
void TopOpeBRep_ShapeScanner::Clear()
{
  myBoxSort.Clear();
}    

//=======================================================================
//function : AddBoxesMakeCOB
//purpose  : 
//=======================================================================
void TopOpeBRep_ShapeScanner::AddBoxesMakeCOB(const TopoDS_Shape& S,const TopAbs_ShapeEnum TS,const TopAbs_ShapeEnum TA)
{
  myBoxSort.AddBoxesMakeCOB(S,TS,TA);
}

//=======================================================================
//function : Init
//purpose  : 
//=======================================================================
void TopOpeBRep_ShapeScanner::Init(TopOpeBRepTool_ShapeExplorer &E)
{
  TColStd_ListOfInteger anEmptyList;

  myListIterator.Initialize(anEmptyList);

  for (; E.More(); E.Next() )  {
    const TopoDS_Shape& cur = E.Current();
//    TopAbs_ShapeEnum t = cur.ShapeType();
    Init(cur);
    Standard_Boolean b = More();
    if ( b ) break;
  }
}

//=======================================================================
//function : Init
//purpose  : 
//=======================================================================
void TopOpeBRep_ShapeScanner::Init(const TopoDS_Shape &E)
{
  myListIterator = myBoxSort.Compare(E);
}

//=======================================================================
//function : More
//purpose  : 
//=======================================================================
Standard_Boolean TopOpeBRep_ShapeScanner::More() const
{
  Standard_Boolean b = myListIterator.More();
  return b;
}

//=======================================================================
//function : Next
//purpose  : 
//=======================================================================
void TopOpeBRep_ShapeScanner::Next()
{
  myListIterator.Next();
}

//=======================================================================
//function : Current
//purpose  : 
//=======================================================================
const TopoDS_Shape& TopOpeBRep_ShapeScanner::Current() const
{
  const TopoDS_Shape& E = myBoxSort.TouchedShape(myListIterator);
  return E;
}

//=======================================================================
//function : BoxSort
//purpose  : 
//=======================================================================
const TopOpeBRepTool_BoxSort& TopOpeBRep_ShapeScanner::BoxSort() const
{
  return myBoxSort;
}

//=======================================================================
//function : BoxSort
//purpose  : 
//=======================================================================
TopOpeBRepTool_BoxSort& TopOpeBRep_ShapeScanner::ChangeBoxSort()
{
  return myBoxSort;
}

//=======================================================================
//function : Index
//purpose  : 
//=======================================================================
Standard_Integer TopOpeBRep_ShapeScanner::Index()const 
{
  Standard_Integer n = 0;
  if ( myListIterator.More() ) n = myListIterator.Value();
  return n;
}

//=======================================================================
//function : DumpCurrent
//purpose  : 
//=======================================================================
Standard_OStream& TopOpeBRep_ShapeScanner::DumpCurrent(Standard_OStream& OS)const 
{
#ifdef DEB
  if ( More() ) { 
    const TopoDS_Shape&     S = Current();
    TopAbs_ShapeEnum    T = S.ShapeType();
    TopAbs_Orientation  O = S.Orientation();
    Standard_Integer    I = Index();
    TopAbs::Print(T,cout);
    cout<<"("<<I<<","; TopAbs::Print(O,cout); cout<<") ";
  }
#endif
  return OS;
}