0031501: Foundation Classes, Message_Printer - remove theToPutEndl argument -- prepar...
[occt.git] / src / StepToTopoDS / StepToTopoDS_Tool.cxx
CommitLineData
b311480e 1// Created on: 1995-01-03
2// Created by: Frederic MAUPAS
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
17// Complement : CKY, alimentation du TransientProcess
18// (Bind general; BindVertex ?)
19
42cf5bc1 20#include <Geom2d_Curve.hxx>
21#include <Geom_Curve.hxx>
22#include <Geom_Surface.hxx>
23#include <StepGeom_CartesianPoint.hxx>
24#include <StepShape_TopologicalRepresentationItem.hxx>
25#include <StepToTopoDS_PointPair.hxx>
26#include <StepToTopoDS_Tool.hxx>
27#include <TopoDS_Edge.hxx>
28#include <TopoDS_Shape.hxx>
29#include <TopoDS_Vertex.hxx>
30#include <Transfer_TransientProcess.hxx>
7fd59977 31#include <TransferBRep.hxx>
32
33// ============================================================================
34// Method : StepToTopoDS_Tool::StepToTopoDS_Tool
35// Purpose : Empty Constructor
36// ============================================================================
7fd59977 37StepToTopoDS_Tool::StepToTopoDS_Tool() {}
38
39// ============================================================================
40// Method : StepToTopoDS_Tool::StepToTopoDS_Tool
41// Purpose : Constructor with a Map and a TransientProcess
42// ============================================================================
43
44StepToTopoDS_Tool::StepToTopoDS_Tool(const StepToTopoDS_DataMapOfTRI& Map,
45 const Handle(Transfer_TransientProcess)& TP)
46{
47 Init(Map, TP);
48}
49
50// ============================================================================
51// Method : Init
52// Purpose : Init with a Map
53// ============================================================================
54
55void StepToTopoDS_Tool::Init(const StepToTopoDS_DataMapOfTRI& Map,
56 const Handle(Transfer_TransientProcess)& TP)
57{
58 myComputePC = Standard_False;
59
60 StepToTopoDS_PointVertexMap aVertexMap;
61 StepToTopoDS_PointEdgeMap aEdgeMap;
62
63 myDataMap = Map;
64 myVertexMap = aVertexMap;
65 myEdgeMap = aEdgeMap;
66 myTransProc = TP;
67
68 myNbC0Surf = myNbC1Surf = myNbC2Surf = 0;
69 myNbC0Cur2 = myNbC1Cur2 = myNbC2Cur2 = 0;
70 myNbC0Cur3 = myNbC1Cur3 = myNbC2Cur3 = 0;
71
72
73}
74
75// ============================================================================
76// Method : StepToTopoDS_Tool::IsBound
77// Purpose : Indicates weither a TRI is bound or not in the Map
78// ============================================================================
79
80Standard_Boolean StepToTopoDS_Tool::IsBound(const Handle(StepShape_TopologicalRepresentationItem)& TRI)
81{
82 return myDataMap.IsBound(TRI);
83}
84
85// ============================================================================
86// Method : StepToTopoDS_Tool::Bind
87// Purpose : Binds a TRI with a Shape in the Map
88// ============================================================================
89
90void StepToTopoDS_Tool::Bind(const Handle(StepShape_TopologicalRepresentationItem)& TRI, const TopoDS_Shape& S)
91{
92 myDataMap.Bind(TRI, S);
93 TransferBRep::SetShapeResult (myTransProc,TRI,S);
94}
95
96// ============================================================================
97// Method : StepToTopoDS_Tool::Find
98// Purpose : Returns the Shape corresponding to the bounded TRI
99// ============================================================================
100
101const TopoDS_Shape& StepToTopoDS_Tool::Find(const Handle(StepShape_TopologicalRepresentationItem)& TRI)
102{
103 return myDataMap.Find(TRI);
104}
105
106
107// ============================================================================
108// Method : StepToTopoDS_Tool::ClearEdgeMap
109// Purpose :
110// ============================================================================
111
112void StepToTopoDS_Tool::ClearEdgeMap()
113{
114 myEdgeMap.Clear();
115}
116
117// ============================================================================
118// Method : StepToTopoDS_Tool::IsEdgeBound
119// Purpose :
120// ============================================================================
121
122Standard_Boolean StepToTopoDS_Tool::IsEdgeBound(const StepToTopoDS_PointPair& PP)
123{
124 return myEdgeMap.IsBound(PP);
125}
126
127// ============================================================================
128// Method : StepToTopoDS_Tool_BindEdge
129// Purpose :
130// ============================================================================
131
132void StepToTopoDS_Tool::BindEdge(const StepToTopoDS_PointPair& PP, const TopoDS_Edge& E)
133{
134 myEdgeMap.Bind(PP, E);
135}
136
137// ============================================================================
138// Method : StepToTopoDS_Tool::FindEdge
139// Purpose :
140// ============================================================================
141
142const TopoDS_Edge& StepToTopoDS_Tool::FindEdge(const StepToTopoDS_PointPair& PP)
143{
144 return myEdgeMap.Find(PP);
145}
146
147// ============================================================================
148// Method : StepToTopoDS_Tool::ClearVertexMap
149// Purpose :
150// ============================================================================
151
152void StepToTopoDS_Tool::ClearVertexMap()
153{
154 myVertexMap.Clear();
155}
156
157// ============================================================================
158// Method : StepToTopoDS_Tool::IsVertexBound
159// Purpose :
160// ============================================================================
161
162Standard_Boolean StepToTopoDS_Tool::IsVertexBound(const Handle(StepGeom_CartesianPoint)& PG)
163{
164 return myVertexMap.IsBound(PG);
165}
166
167// ============================================================================
168// Method : StepToTopoDS_Tool::BindVertex
169// Purpose :
170// ============================================================================
171
172void StepToTopoDS_Tool::BindVertex(const Handle(StepGeom_CartesianPoint)& P, const TopoDS_Vertex& V)
173{
174 myVertexMap.Bind(P, V);
0797d9d3 175#ifdef OCCT_DEBUG
7fd59977 176 TransferBRep::SetShapeResult (myTransProc,P,V);
177#endif
178}
179
180// ============================================================================
181// Method : StepToTopoDS_Tool::FindVertex
182// Purpose :
183// ============================================================================
184
185const TopoDS_Vertex& StepToTopoDS_Tool::FindVertex(const Handle(StepGeom_CartesianPoint)& P)
186{
187 return myVertexMap.Find(P);
188}
189
190// ============================================================================
191// Method : ComputePCurve
192// Purpose :
193// ============================================================================
194
195void StepToTopoDS_Tool::ComputePCurve(const Standard_Boolean B)
196{
197 myComputePC = B;
198}
199
200// ============================================================================
201// Method : ComputePCurve
202// Purpose :
203// ============================================================================
204
205Standard_Boolean StepToTopoDS_Tool::ComputePCurve() const
206{
207 return myComputePC;
208}
209
210// ============================================================================
211// Method : StepToTopoDS_Tool::TransientProcess
212// Purpose : Returns the TransientProcess
213// ============================================================================
214
215Handle(Transfer_TransientProcess) StepToTopoDS_Tool::TransientProcess() const
216{
217 return myTransProc;
218}
219
220
221//===========
222// AddStatistics
223//===========
224
225void StepToTopoDS_Tool::AddContinuity (const Handle(Geom_Surface)& GeomSurf)
226{
227 switch(GeomSurf->Continuity())
228 {
229 case GeomAbs_C0: myNbC0Surf ++; break;
230 case GeomAbs_C1: myNbC1Surf ++; break;
231 default: myNbC2Surf ++;
232 }
233}
234
235void StepToTopoDS_Tool::AddContinuity (const Handle(Geom_Curve)& GeomCurve)
236{
237 switch(GeomCurve->Continuity())
238 {
239 case GeomAbs_C0: myNbC0Cur3 ++; break;
240 case GeomAbs_C1: myNbC1Cur3 ++; break;
241 default: myNbC2Cur3 ++;
242 }
243}
244
245void StepToTopoDS_Tool::AddContinuity (const Handle(Geom2d_Curve)& GeomCur2d)
246{
247 switch(GeomCur2d->Continuity())
248 {
249 case GeomAbs_C0: myNbC0Cur2 ++; break;
250 case GeomAbs_C1: myNbC1Cur2 ++; break;
251 default: myNbC2Cur2 ++;
252 }
253}
254
255//===========
256// Statistics
257//===========
258
259Standard_Integer StepToTopoDS_Tool::C0Surf() const
260{
261 return myNbC0Surf;
262}
263
264
265Standard_Integer StepToTopoDS_Tool::C1Surf() const
266{
267 return myNbC1Surf;
268}
269
270
271Standard_Integer StepToTopoDS_Tool::C2Surf() const
272{
273 return myNbC2Surf;
274}
275
276
277//===========
278// Statistics
279//===========
280
281Standard_Integer StepToTopoDS_Tool::C0Cur2() const
282{
283 return myNbC0Cur2;
284}
285
286
287Standard_Integer StepToTopoDS_Tool::C1Cur2() const
288{
289 return myNbC1Cur2;
290}
291
292
293Standard_Integer StepToTopoDS_Tool::C2Cur2() const
294{
295 return myNbC2Cur2;
296}
297
298
299//===========
300// Statistics
301//===========
302
303Standard_Integer StepToTopoDS_Tool::C0Cur3() const
304{
305 return myNbC0Cur3;
306}
307
308
309Standard_Integer StepToTopoDS_Tool::C1Cur3() const
310{
311 return myNbC1Cur3;
312}
313
314
315Standard_Integer StepToTopoDS_Tool::C2Cur3() const
316{
317 return myNbC2Cur3;
318}
319