Integration of OCCT 6.5.0 from SVN
[occt.git] / src / TopOpeBRepBuild / TopOpeBRepBuild_Griddump.cxx
CommitLineData
7fd59977 1// file: TopOpeBRepBuild_Griddump.cxx
2// Created: Thu Mar 7 10:49:33 1996
3// Author: Jean Yves LEBEY
4// <jyl@meteox>
5
6#ifdef HAVE_CONFIG_H
7# include <config.h>
8#endif
9#include <TopOpeBRepBuild_Builder.ixx>
10#include <TopOpeBRepBuild_define.hxx>
11#include <stdio.h>
12
13#ifdef DRAW
14#include <DBRep.hxx>
15#endif
16
17#include <TopOpeBRepBuild_GIter.hxx>
18#include <TopOpeBRepBuild_GTool.hxx>
19#include <TopOpeBRepDS_Surface.hxx>
20#include <TopOpeBRepDS_Curve.hxx>
21#include <TopOpeBRepDS_Point.hxx>
22#include <TopOpeBRepDS_Interference.hxx>
23#include <TopOpeBRepDS_Config.hxx>
24#include <TopOpeBRepDS_Dumper.hxx>
25#include <TopOpeBRepDS.hxx>
26#include <TopOpeBRepTool_ShapeExplorer.hxx>
27#include <Geom_Curve.hxx>
28#include <Geom2d_Curve.hxx>
29#include <BRep_Tool.hxx>
30#include <TopoDS_Shell.hxx>
31#include <TopoDS_Wire.hxx>
32#include <TopoDS.hxx>
33#include <TopExp.hxx>
34#include <Geom_Plane.hxx>
35#include <gp_Pnt.hxx>
36#include <gp_Pnt2d.hxx>
37#include <ElCLib.hxx>
38#include <ElSLib.hxx>
39#include <Geom2dAdaptor_Curve.hxx>
40#include <BRepAdaptor_Surface.hxx>
41#include <GeomAbs_CurveType.hxx>
42#include <GeomAbs_SurfaceType.hxx>
43#include <GeomAdaptor_Curve.hxx>
44#include <Geom_Line.hxx>
45#include <Geom_Circle.hxx>
46#include <Geom_Ellipse.hxx>
47#include <Geom_Hyperbola.hxx>
48#include <Geom_Parabola.hxx>
49#include <Geom_BezierCurve.hxx>
50#include <Geom_BSplineCurve.hxx>
51#include <TCollection_AsciiString.hxx>
52#include <TopOpeBRepBuild_WireEdgeSet.hxx>
53
54#ifdef DEB
55#ifdef HAVE_STRINGS_H
56# include <strings.h>
57#endif
58Standard_IMPORT Standard_Boolean TopOpeBRepDS_GettraceSPSX(const Standard_Integer);
59Standard_IMPORT Standard_Boolean TopOpeBRepDS_GettraceSPSXX(const Standard_Integer,const Standard_Integer);
60static TCollection_AsciiString PRODINS("dins ");
61#endif
62
63//=======================================================================
64//function : GdumpLS
65//purpose :
66//=======================================================================
67#ifdef DEB
68void TopOpeBRepBuild_Builder::GdumpLS(const TopTools_ListOfShape& L) const
69{
70 TopTools_ListIteratorOfListOfShape it(L);
71 for (; it.More(); it.Next() ) {
72 const TopoDS_Shape& SL = it.Value();
73 GdumpSHA(SL);
74 }
75}
76#else
77void TopOpeBRepBuild_Builder::GdumpLS(const TopTools_ListOfShape&) const
78{
79}
80#endif
81
82//=======================================================================
83//function : PrintGeo
84//purpose :
85//=======================================================================
86#ifdef DEB
87void TopOpeBRepBuild_Builder::PrintGeo(const TopoDS_Shape& S)
88{
89 if (S.ShapeType() == TopAbs_VERTEX) PrintPnt(TopoDS::Vertex(S));
90 else if (S.ShapeType() == TopAbs_EDGE) PrintCur(TopoDS::Edge(S));
91 else if (S.ShapeType() == TopAbs_FACE) PrintSur(TopoDS::Face(S));
92}
93#else
94void TopOpeBRepBuild_Builder::PrintGeo(const TopoDS_Shape&)
95{
96}
97#endif
98
99//=======================================================================
100//function : PrintSur
101//purpose : print the name of a surface
102//=======================================================================
103#ifdef DEB
104void TopOpeBRepBuild_Builder::PrintSur(const TopoDS_Face& F)
105{
106 BRepAdaptor_Surface STA_Surface(F);
107 GeomAbs_SurfaceType t = STA_Surface.GetType();
108 switch(t) {
109 case GeomAbs_Plane : cout<<"PLANE"; break;
110 case GeomAbs_Cylinder : cout<<"CYLINDER"; break;
111 case GeomAbs_Cone : cout<<"CONE"; break;
112 case GeomAbs_Sphere : cout<<"SPHERE"; break;
113 case GeomAbs_Torus : cout<<"TORUS"; break;
114 case GeomAbs_BezierSurface : cout<<"BEZIERSURFACE"; break;
115 case GeomAbs_BSplineSurface : cout<<"BSPLINESURFACE"; break;
116 case GeomAbs_SurfaceOfRevolution : cout<<"SURFACEOFREVOLUTION"; break;
117 case GeomAbs_SurfaceOfExtrusion : cout<<"SURFACEOFEXTRUSION"; break;
118 case GeomAbs_OtherSurface : default : cout<<"OTHERSURFACE"; break;
119 }
120 cout.flush();
121}
122#else
123void TopOpeBRepBuild_Builder::PrintSur(const TopoDS_Face& )
124{
125}
126#endif
127
128//=======================================================================
129//function : PrintCur
130//purpose : print the name of a curve
131//=======================================================================
132#ifdef DEB
133void TopOpeBRepBuild_Builder::PrintCur(const TopoDS_Edge& E)
134{
135 TopLoc_Location L; Standard_Real f,l;
136 Handle(Geom_Curve) C = BRep_Tool::Curve(E,L,f,l);
137 if ( C.IsNull() ) return;
138 GeomAdaptor_Curve GC(C);
139 GeomAbs_CurveType t = GC.GetType();
140
141 switch(t) {
142 case GeomAbs_Line : cout<<"LINE"; break;
143 case GeomAbs_Circle : cout<<"CIRCLE"; break;
144 case GeomAbs_Ellipse : cout<<"ELLIPSE"; break;
145 case GeomAbs_Hyperbola : cout<<"HYPERBOLA"; break;
146 case GeomAbs_Parabola : cout<<"PARABOLA"; break;
147 case GeomAbs_BezierCurve : cout<<"BEZIERCURVE"; break;
148 case GeomAbs_BSplineCurve : cout<<"BSPLINECURVE "<<GC.BSpline()->Degree(); break;
149 case GeomAbs_OtherCurve : cout<<"OTHERCURVE"; break;
150 }
151 cout.flush();
152}
153#else
154void TopOpeBRepBuild_Builder::PrintCur(const TopoDS_Edge&)
155{
156}
157#endif
158
159//=======================================================================
160//function : PrintPnt
161//purpose :
162//=======================================================================
163#ifdef DEB
164void TopOpeBRepBuild_Builder::PrintPnt(const TopoDS_Vertex& V)
165{
166 GdumpPNT(BRep_Tool::Pnt(V));
167}
168#else
169void TopOpeBRepBuild_Builder::PrintPnt(const TopoDS_Vertex&)
170{
171}
172#endif
173
174//=======================================================================
175//function : PrintOri
176//purpose :
177//=======================================================================
178#ifdef DEB
179void TopOpeBRepBuild_Builder::PrintOri(const TopoDS_Shape& S)
180{
181 TopAbs::Print(S.Orientation(),cout);
182 cout.flush();
183}
184#else
185void TopOpeBRepBuild_Builder::PrintOri(const TopoDS_Shape& /*S*/)
186{
187}
188#endif
189
190//=======================================================================
191//function : StringState
192//purpose :
193//=======================================================================
194#ifdef DEB
195TCollection_AsciiString TopOpeBRepBuild_Builder::StringState(const TopAbs_State st)
196#else
197TCollection_AsciiString TopOpeBRepBuild_Builder::StringState(const TopAbs_State)
198#endif
199{
200 TCollection_AsciiString s;
201#ifdef DEB
202 switch(st) {
203 case TopAbs_ON : s.AssignCat("ON"); break;
204 case TopAbs_IN : s.AssignCat("IN"); break;
205 case TopAbs_OUT : s.AssignCat("OUT"); break;
206 case TopAbs_UNKNOWN : s.AssignCat("UNKNOWN"); break;
207 }
208#endif
209 return s;
210}
211
212//=======================================================================
213//function : GdumpPNT
214//purpose :
215//=======================================================================
216#ifdef DEB
217void TopOpeBRepBuild_Builder::GdumpPNT(const gp_Pnt& P)
218{
219 cout<<P.X()<<" "<<P.Y()<<" "<<P.Z(); cout.flush();
220}
221#else
222void TopOpeBRepBuild_Builder::GdumpPNT(const gp_Pnt&)
223{
224}
225#endif
226
227//=======================================================================
228//function : GdumpORIPARPNT
229//purpose :
230//=======================================================================
231#ifdef DEB
232void TopOpeBRepBuild_Builder::GdumpORIPARPNT(const TopAbs_Orientation o,
233 const Standard_Real p,
234 const gp_Pnt& Pnt)
235{
236 TopAbs::Print(o,cout); cout<<" "<<p<<" pnt "; GdumpPNT(Pnt); cout.flush();
237}
238#else
239void TopOpeBRepBuild_Builder::GdumpORIPARPNT(const TopAbs_Orientation,
240 const Standard_Real,const gp_Pnt&)
241{
242}
243#endif
244
245//=======================================================================
246//function : GdumpEDGVER
247//purpose :
248//=======================================================================
249#ifdef DEB
250void TopOpeBRepBuild_Builder::GdumpEDGVER(const TopoDS_Shape& E,
251 const TopoDS_Shape& V,
252 const Standard_Address s) const
253{
254 char* c = (char*)s; if (c) cout<<c;
255 const TopoDS_Edge& EE = TopoDS::Edge(E);
256 const TopoDS_Vertex& VV = TopoDS::Vertex(V);
257 Standard_Real par = BRep_Tool::Parameter(VV,EE);
258 gp_Pnt P = BRep_Tool::Pnt(VV);
259 GdumpORIPARPNT(VV.Orientation(),par,P);
260 cout.flush();
261}
262#else
263void TopOpeBRepBuild_Builder::GdumpEDGVER(const TopoDS_Shape&,
264 const TopoDS_Shape&,
265 const Standard_Address) const
266{
267}
268#endif
269
270//=======================================================================
271//function : GdumpEDG
272//purpose :
273//=======================================================================
274#ifdef DEB
275void TopOpeBRepBuild_Builder::GdumpEDG(const TopoDS_Shape& E,
276 const Standard_Address s) const
277{
278 char* c = (char*)s; if (c) cout<<c;
279 const TopoDS_Edge& EE = TopoDS::Edge(E);
280 Standard_Integer n = 0;
281 GdumpSHAORI(E, (char *) "vertices of ");cout<<endl;
282 TopOpeBRepTool_ShapeExplorer ex(E,TopAbs_VERTEX);
283 char strpar[256]; sprintf(strpar," #");
284 for (; ex.More(); ex.Next()) {
285 const TopoDS_Vertex& VV = TopoDS::Vertex(ex.Current());
286 TopAbs_Orientation o = VV.Orientation();
287 cout<<"vertex v";
288 if (o == TopAbs_FORWARD) cout<<"F";
289 else if (o == TopAbs_REVERSED) cout<<"R";
290 else if (o == TopAbs_INTERNAL) cout<<"I";
291 else if (o == TopAbs_EXTERNAL) cout<<"E";
292 cout<<++n<<" "; TopOpeBRepBuild_Builder::PrintPnt(VV); cout<<";";
293 Standard_Real par = BRep_Tool::Parameter(VV,EE);
294 char spar[255];sprintf(spar," par%d %f",n,par); strcat(strpar,spar);
295 }
296 if(n) cout<<strpar<<endl;
297 cout.flush();
298}
299#else
300void TopOpeBRepBuild_Builder::GdumpEDG(const TopoDS_Shape&,
301 const Standard_Address) const
302{
303}
304#endif
305
306//=======================================================================
307//function : GdumpSAMDOM
308//purpose :
309//=======================================================================
310void TopOpeBRepBuild_Builder::GdumpSAMDOM(const TopTools_ListOfShape& L,
311 const Standard_Address astr) const
312{
313 TopOpeBRepDS_Dumper Dumper(myDataStructure);
314 cout<<Dumper.SPrintShapeRefOri(L,(char*)astr)<<endl;
315 cout.flush();
316}
317
318//=======================================================================
319//function : GdumpSHA
320//purpose :
321//=======================================================================
322#ifdef DEB
323void TopOpeBRepBuild_Builder::GdumpSHA(const TopoDS_Shape& S,
324 const Standard_Address str) const
325{
326 char* c = (char*)str; if (c) cout<<c;
327 if (S.IsNull()) return;
328 TopAbs_ShapeEnum tS = S.ShapeType(); Standard_Integer iS = 0;
329 if ( ! myDataStructure.IsNull() ) iS = myDataStructure->Shape(S);
330 TopOpeBRepDS::Print(tS,iS,cout);
331 cout.flush();
332}
333#else
334void TopOpeBRepBuild_Builder::GdumpSHA(const TopoDS_Shape&,
335 const Standard_Address) const
336{
337}
338#endif
339
340//=======================================================================
341//function : GdumpSHAORI
342//purpose :
343//=======================================================================
344#ifdef DEB
345void TopOpeBRepBuild_Builder::GdumpSHAORI(const TopoDS_Shape& S,
346 const Standard_Address str) const
347{
348 char* c = (char*)str; if (c) cout<<c;
349 GdumpSHA(S,NULL); cout<<","; PrintOri(S);
350 cout.flush();
351}
352#else
353void TopOpeBRepBuild_Builder::GdumpSHAORI(const TopoDS_Shape& ,
354 const Standard_Address ) const
355{
356}
357#endif
358//=======================================================================
359//function : GdumpSHAORIGEO
360//purpose :
361//=======================================================================
362#ifdef DEB
363void TopOpeBRepBuild_Builder::GdumpSHAORIGEO(const TopoDS_Shape& S,
364 const Standard_Address str) const
365{
366 char* c = (char*)str; if (c) cout<<c;
367 GdumpSHAORI(S,NULL); cout<<","; PrintGeo(S);
368 cout.flush();
369}
370#else
371void TopOpeBRepBuild_Builder::GdumpSHAORIGEO(const TopoDS_Shape& ,
372 const Standard_Address ) const
373{
374}
375#endif
376//=======================================================================
377//function : GdumpSHASTA
378//purpose :
379//=======================================================================
380#ifdef DEB
381void TopOpeBRepBuild_Builder::GdumpSHASTA(const TopoDS_Shape& S,
382 const TopAbs_State T,
383 const TCollection_AsciiString& a,
384 const TCollection_AsciiString& b) const
385{
386 cout<<a;
387 GdumpSHAORIGEO(S,NULL); cout<<","<<StringState(T).ToCString();
388 cout<<b;
389 cout.flush();
390}
391#else
392void TopOpeBRepBuild_Builder::GdumpSHASTA(const TopoDS_Shape& ,
393 const TopAbs_State ,
394 const TCollection_AsciiString& ,
395 const TCollection_AsciiString& ) const
396{
397}
398#endif
399
400//=======================================================================
401//function : GdumpSHASTA
402//purpose :
403//=======================================================================
404#ifdef DEB
405void TopOpeBRepBuild_Builder::GdumpSHASTA(const Standard_Integer iS,
406 const TopAbs_State T,
407 const TCollection_AsciiString& a,
408 const TCollection_AsciiString& b) const
409{
410 const TopoDS_Shape& S = myDataStructure->Shape(iS);
411 GdumpSHASTA(S,T,a,b);
412 cout.flush();
413}
414#else
415void TopOpeBRepBuild_Builder::GdumpSHASTA(const Standard_Integer ,
416 const TopAbs_State ,
417 const TCollection_AsciiString& ,
418 const TCollection_AsciiString& ) const
419{
420}
421#endif
422
423//=======================================================================
424//function : GdumpSHASTA
425//purpose :
426//=======================================================================
427#ifdef DEB
428void TopOpeBRepBuild_Builder::GdumpSHASTA(const Standard_Integer iS,
429 const TopAbs_State T,
430 const TopOpeBRepBuild_ShapeSet& SS,
431 const TCollection_AsciiString& a,
432 const TCollection_AsciiString& b,
433 const TCollection_AsciiString& c)const
434{
435 const TopoDS_Shape& S = myDataStructure->Shape(iS);
436 TCollection_AsciiString aib = a + " " + SS.DEBNumber() + " " + b;
437 GdumpSHASTA(S,T,aib,c);
438 cout.flush();
439}
440#else
441void TopOpeBRepBuild_Builder::GdumpSHASTA(const Standard_Integer ,
442 const TopAbs_State ,
443 const TopOpeBRepBuild_ShapeSet& ,
444 const TCollection_AsciiString& ,
445 const TCollection_AsciiString& ,
446 const TCollection_AsciiString& )const
447{
448}
449#endif
450
451//=======================================================================
452//function : GdumpSHASETreset
453//purpose :
454//=======================================================================
455void TopOpeBRepBuild_Builder::GdumpSHASETreset()
456{
457#ifdef DEB
458 mySHASETindex = 0;
459#endif
460}
461
462//=======================================================================
463//function : GdumpSHASETindex
464//purpose :
465//=======================================================================
466Standard_Integer TopOpeBRepBuild_Builder::GdumpSHASETindex()
467{
468 Standard_Integer n = 0;
469#ifdef DEB
470 n = ++mySHASETindex;
471#endif
472 return n;
473}
474
475//=======================================================================
476//function : GdumpEXP
477//purpose :
478//=======================================================================
479#ifdef DEB
480void TopOpeBRepBuild_Builder::GdumpEXP(const TopOpeBRepTool_ShapeExplorer& Ex) const
481{
482 if ( ! Ex.More() ) return;
483 TopAbs_ShapeEnum t = Ex.Current().ShapeType();
484 if (t == TopAbs_SOLID) cout<<"";
485 else if (t == TopAbs_FACE) cout<<" ";
486 else if (t == TopAbs_EDGE) cout<<" ";
487 else cout<<"??";
488 Ex.DumpCurrent(cout);
489 Standard_Integer I = myDataStructure->Shape(Ex.Current());
490 if ( I != 0 ) cout<<" : shape "<<I;
491 cout<<endl;
492 cout.flush();
493}
494#else
495void TopOpeBRepBuild_Builder::GdumpEXP(const TopOpeBRepTool_ShapeExplorer& ) const
496{
497}
498#endif
499
500//=======================================================================
501//function : GdumpSOBU
502//purpose :
503//=======================================================================
504void TopOpeBRepBuild_Builder::GdumpSOBU(TopOpeBRepBuild_SolidBuilder& /*ME*/) const
505{
506#ifdef DEB
507#endif
508} // GdumpSOBU
509
510#ifdef DEB
511void* GFABUMAKEFACEPWES_DEB = NULL;
512#endif
513
514//=======================================================================
515//function : GdumpFABU
516//purpose :
517//=======================================================================
518#ifdef DEB
519void TopOpeBRepBuild_Builder::GdumpFABU(TopOpeBRepBuild_FaceBuilder& ME) const
520{
521 const TopoDS_Shape& face = ME.Face();
522 Standard_Integer iF;
523// Standard_Boolean tSPS =
524 GtraceSPS(face,iF);
525 TopOpeBRepBuild_WireEdgeSet* PWES = (TopOpeBRepBuild_WireEdgeSet*)GFABUMAKEFACEPWES_DEB;
526
527 Standard_Integer nf,nw,ne;
528 ME.InitFace();
529 if ( ME.MoreFace() ) cout<<"clear;"<<endl;
530 for (nf=0;ME.MoreFace();ME.NextFace()) {
531 nf++;
532 cout<<"# face "<<nf<<endl;
533 for (nw=0,ME.InitWire();ME.MoreWire();ME.NextWire()) {
534 nw++;
535 Standard_Boolean ow = ME.IsOldWire();
536 cout<<"# wire "<<nw;if(ow)cout<<" (old)";else cout<<" (new)";cout<<endl;
537 if (!ow) {
538 TCollection_AsciiString whatis("whatis");
539 for(ne=0,ME.InitEdge();ME.MoreEdge();ME.NextEdge()) {
540 ne++;
541 const TopoDS_Edge& EE = TopoDS::Edge(ME.Edge());
542 TCollection_AsciiString Enam("E");
543 TCollection_AsciiString VFnam("VF");
544 TCollection_AsciiString VRnam("VR");
545 Enam = Enam + ne + "NF" + nf + "F" + iF;
546 if (PWES) Enam = Enam + PWES->DEBName() + PWES->DEBNumber();
547 VFnam = VFnam + ne + "NF" + nf + "F" + iF;
548 VRnam = VRnam + ne + "NF" + nf + "F" + iF;
549// cout<<" puts \"edge "<<ne<<" : "<<Enam<<"\"";cout<<"; ";
550 TopoDS_Vertex VF,VR; TopExp::Vertices(EE,VF,VR);
551 if ( ! VF.IsNull() && !VR.IsNull() && !EE.IsNull()) {
552#ifdef DRAW
553 DBRep::Set(Enam.ToCString(),EE);
554 DBRep::Set(VFnam.ToCString(),VF);
555 DBRep::Set(VRnam.ToCString(),VR);
556#endif
557 cout<<PRODINS<<"-O -p 0.5 "<<Enam; cout<<"; ";
558// cout<<PRODINS<<VFnam; cout<<"; ";
559// cout<<PRODINS<<VRnam; cout<<"; ";
560// gp_Pnt PF = BRep_Tool::Pnt(VF);
561// gp_Pnt PR = BRep_Tool::Pnt(VR);
562// cout<<endl;
563// cout<<"# ";
564// cout<<"dinp "<<VFnam<<" ";TopOpeBRepBuild_Builder::PrintPnt(VF);cout<<"; ";
565// cout<<"dinp "<<VRnam<<" ";TopOpeBRepBuild_Builder::PrintPnt(VR);cout<<"; ";
566 cout<<endl;
567 whatis += " "; whatis += Enam;
568 }
569 }
570 if (ne) cout<<" "<<whatis<<endl<<endl;
571 }
572 }
573 }
574 cout.flush();
575} // GdumpFABU
576#else
577void TopOpeBRepBuild_Builder::GdumpFABU(TopOpeBRepBuild_FaceBuilder& ) const
578{
579}
580#endif
581
582//=======================================================================
583//function : GdumpEDBU
584//purpose :
585//=======================================================================
586void TopOpeBRepBuild_Builder::GdumpEDBU(TopOpeBRepBuild_EdgeBuilder& /*ME*/) const
587{
588#ifdef DEB
589#endif
590} // GdumpEDBU
591
592//=======================================================================
593//function : GtraceSPS
594//purpose :
595//=======================================================================
596#ifdef DEB
597Standard_Boolean TopOpeBRepBuild_Builder::GtraceSPS(const Standard_Integer iS) const
598#else
599Standard_Boolean TopOpeBRepBuild_Builder::GtraceSPS(const Standard_Integer ) const
600#endif
601{
602 Standard_Boolean b = Standard_False;
603#ifdef DEB
604 Standard_Integer ibid;
605 b = GtraceSPS(myDataStructure->Shape(iS),ibid);
606#endif
607 return b;
608}
609
610//=======================================================================
611//function : GtraceSPS
612//purpose :
613//=======================================================================
614#ifdef DEB
615Standard_Boolean TopOpeBRepBuild_Builder::GtraceSPS(const Standard_Integer i,
616 const Standard_Integer j) const
617#else
618Standard_Boolean TopOpeBRepBuild_Builder::GtraceSPS(const Standard_Integer ,
619 const Standard_Integer ) const
620#endif
621{
622 Standard_Boolean b = Standard_False;
623#ifdef DEB
624 b = TopOpeBRepDS_GettraceSPSXX(i,j);
625#endif
626 return b;
627}
628
629//=======================================================================
630//function : GtraceSPS
631//purpose :
632//=======================================================================
633#ifdef DEB
634Standard_Boolean TopOpeBRepBuild_Builder::GtraceSPS(const TopoDS_Shape& S) const
635#else
636Standard_Boolean TopOpeBRepBuild_Builder::GtraceSPS(const TopoDS_Shape& ) const
637#endif
638{
639 Standard_Boolean b = Standard_False;
640#ifdef DEB
641 Standard_Integer iS;
642 b = GtraceSPS(S,iS);
643#endif
644 return b;
645}
646
647//=======================================================================
648//function : GtraceSPS
649//purpose :
650//=======================================================================
651#ifdef DEB
652Standard_Boolean TopOpeBRepBuild_Builder::GtraceSPS(const TopoDS_Shape& S,
653 Standard_Integer& IS) const
654#else
655Standard_Boolean TopOpeBRepBuild_Builder::GtraceSPS(const TopoDS_Shape&,
656 Standard_Integer& IS) const
657#endif
658{
659 IS = 0; Standard_Boolean b = Standard_False;
660#ifdef DEB
661 if ( ! myDataStructure.IsNull() ) {
662 if ( ! S.IsNull() ) {
663 IS = myDataStructure->Shape(S);
664 b = TopOpeBRepDS_GettraceSPSX(IS);
665 }
666 }
667#endif
668 return b;
669}
670
671
672//=======================================================================
673//function : GcheckNBOUNDS
674//purpose :
675//=======================================================================
676#ifdef DEB
677Standard_Boolean TopOpeBRepBuild_Builder::GcheckNBOUNDS(const TopoDS_Shape& E)
678#else
679Standard_Boolean TopOpeBRepBuild_Builder::GcheckNBOUNDS(const TopoDS_Shape& )
680#endif
681{
682 Standard_Boolean res = Standard_False;
683#ifdef DEB
684 Standard_Integer nf = 0, nr = 0;
685 TopOpeBRepTool_ShapeExplorer ex(E,TopAbs_VERTEX);
686 for(; ex.More(); ex.Next()) {
687 TopAbs_Orientation o = ex.Current().Orientation();
688 if (o == TopAbs_FORWARD) nf++;
689 if (o == TopAbs_REVERSED) nr++;
690 }
691 if ( nf == 1 && nr == 1 ) res = Standard_True;
692#endif
693 return res;
694}