summaryrefslogtreecommitdiff
path: root/src/TopOpeBRepDS/TopOpeBRepDS.cxx
blob: 4227370be096804f5a44b54389c8a1690123fe6d (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
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
// File:	TopOpeBRepDS.cxx
// Created:	Fri Mar 18 18:20:30 1994
// Author:	Jean Yves LEBEY
//		<jyl@phobox>

#include <TopOpeBRepDS.ixx>
#include <TopOpeBRepDS_define.hxx>
#include <Standard_ProgramError.hxx>

//=======================================================================
//function : Print the name of a State
//=======================================================================
TCollection_AsciiString TopOpeBRepDS::SPrint(const TopAbs_State S)
{
  TCollection_AsciiString s;
  switch (S) {
  case TopAbs_IN      : s = s + "IN"; break;
  case TopAbs_OUT     : s = s + "OU"; break;
  case TopAbs_ON      : s = s + "ON"; break;
  case TopAbs_UNKNOWN : s = s + "UN"; break;
  }
  return s;
}

Standard_OStream& TopOpeBRepDS::Print(const TopAbs_State S,Standard_OStream& OS)
{ OS<<TopOpeBRepDS::SPrint(S); return OS; }

//=======================================================================
//purpose  : print the name of a Kind
//=======================================================================
TCollection_AsciiString TopOpeBRepDS::SPrint(const TopOpeBRepDS_Kind k)
{
  TCollection_AsciiString s;
  switch(k) {
  case TopOpeBRepDS_POINT   : s = s + "PO"; break;
  case TopOpeBRepDS_CURVE   : s = s + "CU"; break;
  case TopOpeBRepDS_SURFACE : s = s + "SU"; break;
  case TopOpeBRepDS_VERTEX  : s = s + "VE"; break;
  case TopOpeBRepDS_EDGE    : s = s + "ED"; break;
  case TopOpeBRepDS_WIRE    : s = s + "WI"; break;
  case TopOpeBRepDS_FACE    : s = s + "FA"; break;
  case TopOpeBRepDS_SHELL   : s = s + "SH"; break;
  case TopOpeBRepDS_SOLID   : s = s + "SO"; break;
  case TopOpeBRepDS_COMPSOLID : s = s + "CS"; break;
  case TopOpeBRepDS_COMPOUND : s = s + "CO"; break;
  default:
    break ;
  }
  return s;
}
TCollection_AsciiString TopOpeBRepDS::SPrint(const TopOpeBRepDS_Kind k,const Standard_Integer i,const TCollection_AsciiString& S1,const TCollection_AsciiString& S2)
{
  TCollection_AsciiString si = ""; if (i >= 0 && i <= 9) si = " ";
  TCollection_AsciiString s = S1 + "(" + TopOpeBRepDS::SPrint(k) + "," + si + TCollection_AsciiString(i) + ")" + S2;
  return s;
}

Standard_OStream& TopOpeBRepDS::Print(const TopOpeBRepDS_Kind k,Standard_OStream& OS)
{ OS<<TopOpeBRepDS::SPrint(k); return OS; }
Standard_OStream& TopOpeBRepDS::Print(const TopOpeBRepDS_Kind k,const Standard_Integer i,Standard_OStream& OS,const TCollection_AsciiString& S1,const TCollection_AsciiString& S2)
{ OS<<TopOpeBRepDS::SPrint(k,i,S1,S2); OS.flush();return OS; }

//=======================================================================
//purpose  : print the name of a ShapeEnum
//=======================================================================
TCollection_AsciiString TopOpeBRepDS::SPrint(const TopAbs_ShapeEnum t)
{ return TopOpeBRepDS::SPrint(TopOpeBRepDS::ShapeToKind(t)); }
TCollection_AsciiString TopOpeBRepDS::SPrint(const TopAbs_ShapeEnum t,const Standard_Integer i)
{ return TopOpeBRepDS::SPrint(TopOpeBRepDS::ShapeToKind(t),i); }

Standard_OStream& TopOpeBRepDS::Print(const TopAbs_ShapeEnum t,const Standard_Integer i,Standard_OStream& s)
{ s<<TopOpeBRepDS::SPrint(TopOpeBRepDS::ShapeToKind(t),i); return s; }

//=======================================================================
//purpose  : print the name of a Orientation
//=======================================================================
TCollection_AsciiString TopOpeBRepDS::SPrint(const TopAbs_Orientation o) 
{
  TCollection_AsciiString SS;
  switch (o) {
  case TopAbs_FORWARD  : SS = "FORWARD" ; break;
  case TopAbs_REVERSED : SS = "REVERSED"; break;
  case TopAbs_INTERNAL : SS = "INTERNAL"; break;
  case TopAbs_EXTERNAL : SS = "EXTERNAL"; break;
  }
  return SS;
}

//=======================================================================
//purpose  : print the name of a Config
//=======================================================================
TCollection_AsciiString TopOpeBRepDS::SPrint(const TopOpeBRepDS_Config C)
{
  TCollection_AsciiString SS;
  switch (C) {
  case TopOpeBRepDS_UNSHGEOMETRY : SS = "UNSH"; break;
  case TopOpeBRepDS_SAMEORIENTED : SS = "SAME"; break;
  case TopOpeBRepDS_DIFFORIENTED : SS = "DIFF"; break;
  }
  return SS;
}

Standard_OStream& TopOpeBRepDS::Print(const TopOpeBRepDS_Config C,Standard_OStream& OS)
{ OS<<TopOpeBRepDS::SPrint(C); return OS; }

//=======================================================================
//function : IsTopology
//purpose  : 
//=======================================================================

Standard_Boolean TopOpeBRepDS::IsTopology(const TopOpeBRepDS_Kind k)
{
  switch (k) {
  case TopOpeBRepDS_COMPOUND : return Standard_True; break;
  case TopOpeBRepDS_COMPSOLID : return Standard_True; break;
  case TopOpeBRepDS_SOLID   : return Standard_True; break;
  case TopOpeBRepDS_SHELL   : return Standard_True; break;
  case TopOpeBRepDS_FACE    : return Standard_True; break;
  case TopOpeBRepDS_WIRE    : return Standard_True; break;
  case TopOpeBRepDS_EDGE    : return Standard_True; break;
  case TopOpeBRepDS_VERTEX  : return Standard_True; break;
  default : break;
  }
  return Standard_False;
}

//=======================================================================
//function : IsGeometry
//purpose  : 
//=======================================================================

Standard_Boolean TopOpeBRepDS::IsGeometry(const TopOpeBRepDS_Kind k)
{
  switch (k) {
  case TopOpeBRepDS_SURFACE : return Standard_True; break;
  case TopOpeBRepDS_CURVE   : return Standard_True; break;
  case TopOpeBRepDS_POINT   : return Standard_True; break;
  default:
    break ;
  }
  return Standard_False;
}

//=======================================================================
//function : ShapeToKind
//purpose  : 
//=======================================================================

TopOpeBRepDS_Kind TopOpeBRepDS::ShapeToKind(const TopAbs_ShapeEnum S) 
{
  TopOpeBRepDS_Kind res = TopOpeBRepDS_SOLID; // bidon
  switch (S) {
  case TopAbs_VERTEX : res = TopOpeBRepDS_VERTEX; break;
  case TopAbs_EDGE   : res = TopOpeBRepDS_EDGE; break;
  case TopAbs_WIRE   : res = TopOpeBRepDS_WIRE; break;
  case TopAbs_FACE   : res = TopOpeBRepDS_FACE; break;
  case TopAbs_SHELL  : res = TopOpeBRepDS_SHELL; break;
  case TopAbs_SOLID  : res = TopOpeBRepDS_SOLID; break;
  case TopAbs_COMPSOLID : res = TopOpeBRepDS_COMPSOLID; break;
  case TopAbs_COMPOUND : res = TopOpeBRepDS_COMPOUND; break;
  default : Standard_ProgramError::Raise("TopOpeBRepDS::ShapeToKind");
  }
  return res;
}

//=======================================================================
//function : KindToShape
//purpose  : 
//=======================================================================

TopAbs_ShapeEnum TopOpeBRepDS::KindToShape(const TopOpeBRepDS_Kind K)
{
  TopAbs_ShapeEnum res = TopAbs_SHAPE; // bidon
  if ( ! TopOpeBRepDS::IsTopology(K) ) return res;

  switch (K) {
  case TopOpeBRepDS_VERTEX : res = TopAbs_VERTEX; break;
  case TopOpeBRepDS_EDGE   : res = TopAbs_EDGE; break;
  case TopOpeBRepDS_WIRE   : res = TopAbs_WIRE; break;
  case TopOpeBRepDS_FACE   : res = TopAbs_FACE; break;
  case TopOpeBRepDS_SHELL  : res = TopAbs_SHELL; break;
  case TopOpeBRepDS_SOLID  : res = TopAbs_SOLID; break;
  case TopOpeBRepDS_COMPSOLID  : res = TopAbs_COMPSOLID; break;
  case TopOpeBRepDS_COMPOUND : res = TopAbs_COMPOUND; break;
  default : Standard_ProgramError::Raise("TopOpeBRepDS::KindToShape");
  }
  return res;
}