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 |
58 | Standard_IMPORT Standard_Boolean TopOpeBRepDS_GettraceSPSX(const Standard_Integer); |
59 | Standard_IMPORT Standard_Boolean TopOpeBRepDS_GettraceSPSXX(const Standard_Integer,const Standard_Integer); |
60 | static TCollection_AsciiString PRODINS("dins "); |
61 | #endif |
62 | |
63 | //======================================================================= |
64 | //function : GdumpLS |
65 | //purpose : |
66 | //======================================================================= |
67 | #ifdef DEB |
68 | void 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 |
77 | void TopOpeBRepBuild_Builder::GdumpLS(const TopTools_ListOfShape&) const |
78 | { |
79 | } |
80 | #endif |
81 | |
82 | //======================================================================= |
83 | //function : PrintGeo |
84 | //purpose : |
85 | //======================================================================= |
86 | #ifdef DEB |
87 | void 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 |
94 | void 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 |
104 | void 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 |
123 | void 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 |
133 | void 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 |
154 | void TopOpeBRepBuild_Builder::PrintCur(const TopoDS_Edge&) |
155 | { |
156 | } |
157 | #endif |
158 | |
159 | //======================================================================= |
160 | //function : PrintPnt |
161 | //purpose : |
162 | //======================================================================= |
163 | #ifdef DEB |
164 | void TopOpeBRepBuild_Builder::PrintPnt(const TopoDS_Vertex& V) |
165 | { |
166 | GdumpPNT(BRep_Tool::Pnt(V)); |
167 | } |
168 | #else |
169 | void TopOpeBRepBuild_Builder::PrintPnt(const TopoDS_Vertex&) |
170 | { |
171 | } |
172 | #endif |
173 | |
174 | //======================================================================= |
175 | //function : PrintOri |
176 | //purpose : |
177 | //======================================================================= |
178 | #ifdef DEB |
179 | void TopOpeBRepBuild_Builder::PrintOri(const TopoDS_Shape& S) |
180 | { |
181 | TopAbs::Print(S.Orientation(),cout); |
182 | cout.flush(); |
183 | } |
184 | #else |
185 | void TopOpeBRepBuild_Builder::PrintOri(const TopoDS_Shape& /*S*/) |
186 | { |
187 | } |
188 | #endif |
189 | |
190 | //======================================================================= |
191 | //function : StringState |
192 | //purpose : |
193 | //======================================================================= |
194 | #ifdef DEB |
195 | TCollection_AsciiString TopOpeBRepBuild_Builder::StringState(const TopAbs_State st) |
196 | #else |
197 | TCollection_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 |
217 | void TopOpeBRepBuild_Builder::GdumpPNT(const gp_Pnt& P) |
218 | { |
219 | cout<<P.X()<<" "<<P.Y()<<" "<<P.Z(); cout.flush(); |
220 | } |
221 | #else |
222 | void TopOpeBRepBuild_Builder::GdumpPNT(const gp_Pnt&) |
223 | { |
224 | } |
225 | #endif |
226 | |
227 | //======================================================================= |
228 | //function : GdumpORIPARPNT |
229 | //purpose : |
230 | //======================================================================= |
231 | #ifdef DEB |
232 | void 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 |
239 | void 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 |
250 | void 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 |
263 | void 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 |
275 | void 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 |
300 | void TopOpeBRepBuild_Builder::GdumpEDG(const TopoDS_Shape&, |
301 | const Standard_Address) const |
302 | { |
303 | } |
304 | #endif |
305 | |
306 | //======================================================================= |
307 | //function : GdumpSAMDOM |
308 | //purpose : |
309 | //======================================================================= |
310 | void 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 |
323 | void 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 |
334 | void 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 |
345 | void 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 |
353 | void 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 |
363 | void 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 |
371 | void 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 |
381 | void 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 |
392 | void 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 |
405 | void 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 |
415 | void 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 |
428 | void 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 |
441 | void 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 | //======================================================================= |
455 | void TopOpeBRepBuild_Builder::GdumpSHASETreset() |
456 | { |
457 | #ifdef DEB |
458 | mySHASETindex = 0; |
459 | #endif |
460 | } |
461 | |
462 | //======================================================================= |
463 | //function : GdumpSHASETindex |
464 | //purpose : |
465 | //======================================================================= |
466 | Standard_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 |
480 | void 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 |
495 | void TopOpeBRepBuild_Builder::GdumpEXP(const TopOpeBRepTool_ShapeExplorer& ) const |
496 | { |
497 | } |
498 | #endif |
499 | |
500 | //======================================================================= |
501 | //function : GdumpSOBU |
502 | //purpose : |
503 | //======================================================================= |
504 | void TopOpeBRepBuild_Builder::GdumpSOBU(TopOpeBRepBuild_SolidBuilder& /*ME*/) const |
505 | { |
506 | #ifdef DEB |
507 | #endif |
508 | } // GdumpSOBU |
509 | |
510 | #ifdef DEB |
511 | void* GFABUMAKEFACEPWES_DEB = NULL; |
512 | #endif |
513 | |
514 | //======================================================================= |
515 | //function : GdumpFABU |
516 | //purpose : |
517 | //======================================================================= |
518 | #ifdef DEB |
519 | void 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 |
577 | void TopOpeBRepBuild_Builder::GdumpFABU(TopOpeBRepBuild_FaceBuilder& ) const |
578 | { |
579 | } |
580 | #endif |
581 | |
582 | //======================================================================= |
583 | //function : GdumpEDBU |
584 | //purpose : |
585 | //======================================================================= |
586 | void 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 |
597 | Standard_Boolean TopOpeBRepBuild_Builder::GtraceSPS(const Standard_Integer iS) const |
598 | #else |
599 | Standard_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 |
615 | Standard_Boolean TopOpeBRepBuild_Builder::GtraceSPS(const Standard_Integer i, |
616 | const Standard_Integer j) const |
617 | #else |
618 | Standard_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 |
634 | Standard_Boolean TopOpeBRepBuild_Builder::GtraceSPS(const TopoDS_Shape& S) const |
635 | #else |
636 | Standard_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 |
652 | Standard_Boolean TopOpeBRepBuild_Builder::GtraceSPS(const TopoDS_Shape& S, |
653 | Standard_Integer& IS) const |
654 | #else |
655 | Standard_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 |
677 | Standard_Boolean TopOpeBRepBuild_Builder::GcheckNBOUNDS(const TopoDS_Shape& E) |
678 | #else |
679 | Standard_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 | } |