1 // Copyright (c) 1995-1999 Matra Datavision
2 // Copyright (c) 1999-2014 OPEN CASCADE SAS
4 // This file is part of Open CASCADE Technology software library.
6 // This library is free software; you can redistribute it and/or modify it under
7 // the terms of the GNU Lesser General Public License version 2.1 as published
8 // by the Free Software Foundation, with special exception defined in the file
9 // OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
10 // distribution for complete text of the license and disclaimer of any warranty.
12 // Alternatively, this file may be used under the terms of Open CASCADE
13 // commercial license or contractual agreement.
15 #include <Prs3d_Drawer.hxx>
17 #include <Graphic3d_AspectFillArea3d.hxx>
18 #include <Graphic3d_AspectMarker3d.hxx>
19 #include <Graphic3d_AspectText3d.hxx>
20 #include <Prs3d_ArrowAspect.hxx>
21 #include <Prs3d_DatumAspect.hxx>
22 #include <Prs3d_DimensionAspect.hxx>
23 #include <Prs3d_IsoAspect.hxx>
24 #include <Prs3d_LineAspect.hxx>
25 #include <Prs3d_PlaneAspect.hxx>
26 #include <Prs3d_PointAspect.hxx>
27 #include <Prs3d_ShadingAspect.hxx>
28 #include <Prs3d_TextAspect.hxx>
29 #include <Standard_Dump.hxx>
31 IMPLEMENT_STANDARD_RTTIEXT(Prs3d_Drawer, Graphic3d_PresentationAttributes)
35 static const Quantity_NameOfColor THE_DEF_COLOR_FreeBoundary = Quantity_NOC_GREEN;
36 static const Quantity_NameOfColor THE_DEF_COLOR_UnFreeBoundary = Quantity_NOC_YELLOW;
37 static const Quantity_NameOfColor THE_DEF_COLOR_FaceBoundary = Quantity_NOC_BLACK;
38 static const Quantity_NameOfColor THE_DEF_COLOR_Wire = Quantity_NOC_RED;
39 static const Quantity_NameOfColor THE_DEF_COLOR_Line = Quantity_NOC_YELLOW;
40 static const Quantity_NameOfColor THE_DEF_COLOR_SeenLine = Quantity_NOC_YELLOW;
41 static const Quantity_NameOfColor THE_DEF_COLOR_HiddenLine = Quantity_NOC_YELLOW;
42 static const Quantity_NameOfColor THE_DEF_COLOR_Vector = Quantity_NOC_SKYBLUE;
43 static const Quantity_NameOfColor THE_DEF_COLOR_Section = Quantity_NOC_ORANGE;
46 // =======================================================================
47 // function : Prs3d_Drawer
49 // =======================================================================
50 Prs3d_Drawer::Prs3d_Drawer()
52 myHasOwnNbPoints (Standard_False),
53 myMaximalParameterValue (500000.),
54 myHasOwnMaximalParameterValue (Standard_False),
55 myChordialDeviation (0.0001),
56 myHasOwnChordialDeviation (Standard_False),
57 myTypeOfDeflection (Aspect_TOD_RELATIVE),
58 myHasOwnTypeOfDeflection (Standard_False),
59 myTypeOfHLR (Prs3d_TOH_NotSet),
60 myDeviationCoefficient (0.001),
61 myHasOwnDeviationCoefficient (Standard_False),
62 myDeviationAngle (20.0 * M_PI / 180.0),
63 myHasOwnDeviationAngle (Standard_False),
64 myIsoOnPlane (Standard_False),
65 myHasOwnIsoOnPlane (Standard_False),
66 myIsoOnTriangulation (Standard_False),
67 myHasOwnIsoOnTriangulation (Standard_False),
68 myIsAutoTriangulated (Standard_True),
69 myHasOwnIsAutoTriangulated (Standard_False),
71 myHasOwnUIsoAspect (Standard_False),
72 myHasOwnVIsoAspect (Standard_False),
73 myHasOwnWireAspect (Standard_False),
74 myWireDraw (Standard_True),
75 myHasOwnWireDraw (Standard_False),
76 myHasOwnPointAspect (Standard_False),
77 myHasOwnLineAspect (Standard_False),
78 myHasOwnTextAspect (Standard_False),
79 myHasOwnShadingAspect (Standard_False),
80 myHasOwnPlaneAspect (Standard_False),
81 myHasOwnSeenLineAspect (Standard_False),
82 myHasOwnArrowAspect (Standard_False),
83 myLineArrowDraw (Standard_False),
84 myHasOwnLineArrowDraw (Standard_False),
85 myHasOwnHiddenLineAspect (Standard_False),
86 myDrawHiddenLine (Standard_False),
87 myHasOwnDrawHiddenLine (Standard_False),
88 myHasOwnVectorAspect (Standard_False),
89 myVertexDrawMode (Prs3d_VDM_Inherited),
90 myHasOwnDatumAspect (Standard_False),
91 myHasOwnSectionAspect (Standard_False),
93 myHasOwnFreeBoundaryAspect (Standard_False),
94 myFreeBoundaryDraw (Standard_True),
95 myHasOwnFreeBoundaryDraw (Standard_False),
96 myHasOwnUnFreeBoundaryAspect (Standard_False),
97 myUnFreeBoundaryDraw (Standard_True),
98 myHasOwnUnFreeBoundaryDraw (Standard_False),
99 myFaceBoundaryUpperContinuity(-1),
100 myHasOwnFaceBoundaryAspect (Standard_False),
101 myFaceBoundaryDraw (Standard_False),
102 myHasOwnFaceBoundaryDraw (Standard_False),
104 myHasOwnDimensionAspect (Standard_False),
105 myHasOwnDimLengthModelUnits (Standard_False),
106 myHasOwnDimAngleModelUnits (Standard_False),
107 myHasOwnDimLengthDisplayUnits (Standard_False),
108 myHasOwnDimAngleDisplayUnits (Standard_False)
110 myDimensionModelUnits.SetLengthUnits ("m");
111 myDimensionModelUnits.SetAngleUnits ("rad");
112 myDimensionDisplayUnits.SetLengthUnits ("m");
113 myDimensionDisplayUnits.SetAngleUnits ("deg");
116 // =======================================================================
117 // function : SetTypeOfDeflection
119 // =======================================================================
121 void Prs3d_Drawer::SetTypeOfDeflection (const Aspect_TypeOfDeflection theTypeOfDeflection)
123 myHasOwnTypeOfDeflection = Standard_True;
124 myTypeOfDeflection = theTypeOfDeflection;
127 // =======================================================================
128 // function : SetMaximalChordialDeviation
130 // =======================================================================
132 void Prs3d_Drawer::SetMaximalChordialDeviation (const Standard_Real theChordialDeviation)
134 myHasOwnChordialDeviation = Standard_True;
135 myChordialDeviation = theChordialDeviation;
138 // =======================================================================
139 // function : SetTypeOfHLR
140 // purpose : set type of HLR algorithm
141 // =======================================================================
143 void Prs3d_Drawer::SetTypeOfHLR (const Prs3d_TypeOfHLR theTypeOfHLR)
145 myTypeOfHLR = theTypeOfHLR;
148 // =======================================================================
149 // function : TypeOfHLR
150 // purpose : gets type of HLR algorithm
151 // =======================================================================
153 Prs3d_TypeOfHLR Prs3d_Drawer::TypeOfHLR()
155 if (!HasOwnTypeOfHLR())
157 if (!myLink.IsNull())
159 return myLink->TypeOfHLR();
161 // Prs3d_TOH_PolyAlgo is default value for this setting.
162 myTypeOfHLR = Prs3d_TOH_PolyAlgo;
167 // =======================================================================
168 // function : SetIsoOnTriangulation
170 // =======================================================================
171 void Prs3d_Drawer::SetIsoOnTriangulation (const Standard_Boolean theToEnable)
173 myHasOwnIsoOnTriangulation = Standard_True;
174 myIsoOnTriangulation = theToEnable;
177 // =======================================================================
178 // function : SetMaximalParameterValue
180 // =======================================================================
182 void Prs3d_Drawer::SetMaximalParameterValue (const Standard_Real theValue)
184 myHasOwnMaximalParameterValue = Standard_True;
185 myMaximalParameterValue = theValue;
188 // =======================================================================
189 // function : SetIsoOnPlane
191 // =======================================================================
193 void Prs3d_Drawer::SetIsoOnPlane (const Standard_Boolean theIsEnabled)
195 myHasOwnIsoOnPlane = Standard_True;
196 myIsoOnPlane = theIsEnabled;
199 // =======================================================================
200 // function : SetDiscretisation
202 // =======================================================================
204 void Prs3d_Drawer::SetDiscretisation (const Standard_Integer theValue)
206 myHasOwnNbPoints = Standard_True;
207 myNbPoints = theValue;
210 //=======================================================================
211 //function : SetDeviationCoefficient
213 //=======================================================================
215 void Prs3d_Drawer::SetDeviationCoefficient (const Standard_Real theCoefficient)
217 myPreviousDeviationCoefficient = DeviationCoefficient();
218 myDeviationCoefficient = theCoefficient;
219 myHasOwnDeviationCoefficient = Standard_True;
222 //=======================================================================
223 //function : SetDeviationAngle
225 //=======================================================================
227 void Prs3d_Drawer::SetDeviationAngle (const Standard_Real theAngle)
229 myPreviousDeviationAngle = DeviationAngle();
230 myDeviationAngle = theAngle;
231 myHasOwnDeviationAngle = Standard_True;
234 // =======================================================================
235 // function : SetAutoTriangulation
237 // =======================================================================
239 void Prs3d_Drawer::SetAutoTriangulation (const Standard_Boolean theIsEnabled)
241 myHasOwnIsAutoTriangulated = Standard_True;
242 myIsAutoTriangulated = theIsEnabled;
245 // =======================================================================
246 // function : FreeBoundaryAspect
248 // =======================================================================
250 const Handle(Prs3d_LineAspect)& Prs3d_Drawer::FreeBoundaryAspect()
252 if (!HasOwnFreeBoundaryAspect())
254 if (!myLink.IsNull())
256 return myLink->FreeBoundaryAspect();
258 if (myFreeBoundaryAspect.IsNull())
260 myFreeBoundaryAspect = new Prs3d_LineAspect (THE_DEF_COLOR_FreeBoundary, Aspect_TOL_SOLID, 1.0);
263 return myFreeBoundaryAspect;
266 // =======================================================================
267 // function : FreeBoundaryAspect
269 // =======================================================================
271 void Prs3d_Drawer::SetFreeBoundaryAspect (const Handle(Prs3d_LineAspect)& theAspect)
273 myFreeBoundaryAspect = theAspect;
274 myHasOwnFreeBoundaryAspect = !myFreeBoundaryAspect.IsNull();
277 // =======================================================================
278 // function : SetFreeBoundaryDraw
280 // =======================================================================
282 void Prs3d_Drawer::SetFreeBoundaryDraw (const Standard_Boolean theIsEnabled)
284 myHasOwnFreeBoundaryDraw = Standard_True;
285 myFreeBoundaryDraw = theIsEnabled;
288 // =======================================================================
289 // function : UnFreeBoundaryAspect
291 // =======================================================================
293 const Handle(Prs3d_LineAspect)& Prs3d_Drawer::UnFreeBoundaryAspect()
295 if (!HasOwnUnFreeBoundaryAspect())
297 if (!myLink.IsNull())
299 return myLink->UnFreeBoundaryAspect();
301 if (myUnFreeBoundaryAspect.IsNull())
303 myUnFreeBoundaryAspect = new Prs3d_LineAspect (THE_DEF_COLOR_UnFreeBoundary, Aspect_TOL_SOLID, 1.0);
306 return myUnFreeBoundaryAspect;
309 // =======================================================================
310 // function : SetUnFreeBoundaryAspect
312 // =======================================================================
314 void Prs3d_Drawer::SetUnFreeBoundaryAspect (const Handle(Prs3d_LineAspect)& theAspect)
316 myUnFreeBoundaryAspect = theAspect;
317 myHasOwnUnFreeBoundaryAspect = !myUnFreeBoundaryAspect.IsNull();
320 // =======================================================================
321 // function : SetUnFreeBoundaryDraw
323 // =======================================================================
325 void Prs3d_Drawer::SetUnFreeBoundaryDraw (const Standard_Boolean theIsEnabled)
327 myHasOwnUnFreeBoundaryDraw = Standard_True;
328 myUnFreeBoundaryDraw = theIsEnabled;
331 // =======================================================================
332 // function : FaceBoundaryAspect
334 // =======================================================================
336 const Handle(Prs3d_LineAspect)& Prs3d_Drawer::FaceBoundaryAspect()
338 if (!HasOwnFaceBoundaryAspect())
340 if (!myLink.IsNull())
342 return myLink->FaceBoundaryAspect();
344 if (myFaceBoundaryAspect.IsNull())
346 myFaceBoundaryAspect = new Prs3d_LineAspect (THE_DEF_COLOR_FaceBoundary, Aspect_TOL_SOLID, 1.0);
349 return myFaceBoundaryAspect;
352 // =======================================================================
353 // function : SetFaceBoundaryAspect
355 // =======================================================================
357 void Prs3d_Drawer::SetFaceBoundaryAspect (const Handle(Prs3d_LineAspect)& theAspect)
359 myFaceBoundaryAspect = theAspect;
360 myHasOwnFaceBoundaryAspect = !myFaceBoundaryAspect.IsNull();
363 // =======================================================================
364 // function : SetFaceBoundaryDraw
366 // =======================================================================
368 void Prs3d_Drawer::SetFaceBoundaryDraw (const Standard_Boolean theIsEnabled)
370 myHasOwnFaceBoundaryDraw = Standard_True;
371 myFaceBoundaryDraw = theIsEnabled;
374 // =======================================================================
375 // function : DimensionAspect
377 // =======================================================================
379 const Handle(Prs3d_DimensionAspect)& Prs3d_Drawer::DimensionAspect()
381 if (!HasOwnDimensionAspect())
383 if (!myLink.IsNull())
385 return myLink->DimensionAspect();
387 if (myDimensionAspect.IsNull())
389 myDimensionAspect = new Prs3d_DimensionAspect;
392 return myDimensionAspect;
395 // =======================================================================
396 // function : SetDimensionAspect
398 // =======================================================================
400 void Prs3d_Drawer::SetDimensionAspect (const Handle(Prs3d_DimensionAspect)& theAspect)
402 myDimensionAspect = theAspect;
403 myHasOwnDimensionAspect = !myDimensionAspect.IsNull();
406 // =======================================================================
407 // function : SetDimLengthModelUnits
409 // =======================================================================
411 void Prs3d_Drawer::SetDimLengthModelUnits (const TCollection_AsciiString& theUnits)
413 myHasOwnDimLengthModelUnits = Standard_True;
414 myDimensionModelUnits.SetLengthUnits (theUnits);
417 // =======================================================================
418 // function : SetDimAngleModelUnits
420 // =======================================================================
422 void Prs3d_Drawer::SetDimAngleModelUnits (const TCollection_AsciiString& theUnits)
424 myHasOwnDimAngleModelUnits = Standard_True;
425 myDimensionModelUnits.SetAngleUnits (theUnits);
428 // =======================================================================
429 // function : SetDimLengthDisplayUnits
431 // =======================================================================
433 void Prs3d_Drawer::SetDimLengthDisplayUnits (const TCollection_AsciiString& theUnits)
435 myHasOwnDimLengthDisplayUnits = Standard_True;
436 myDimensionDisplayUnits.SetLengthUnits (theUnits);
439 // =======================================================================
440 // function : SetDimAngleDisplayUnits
442 // =======================================================================
444 void Prs3d_Drawer::SetDimAngleDisplayUnits (const TCollection_AsciiString& theUnits)
446 myHasOwnDimAngleDisplayUnits = Standard_True;
447 myDimensionDisplayUnits.SetAngleUnits (theUnits);
450 // =======================================================================
451 // function : UIsoAspect
453 // =======================================================================
455 const Handle(Prs3d_IsoAspect)& Prs3d_Drawer::UIsoAspect()
457 if (!HasOwnUIsoAspect())
459 if (!myLink.IsNull())
461 return myLink->UIsoAspect();
463 if (myUIsoAspect.IsNull())
465 myUIsoAspect = new Prs3d_IsoAspect (Quantity_NOC_GRAY75, Aspect_TOL_SOLID, 1.0, 1);
471 // =======================================================================
472 // function : SetUIsoAspect
474 // =======================================================================
476 void Prs3d_Drawer::SetUIsoAspect (const Handle(Prs3d_IsoAspect)& theAspect)
478 myUIsoAspect = theAspect;
479 myHasOwnUIsoAspect = !myUIsoAspect.IsNull();
482 // =======================================================================
483 // function : VIsoAspect
485 // =======================================================================
487 const Handle(Prs3d_IsoAspect)& Prs3d_Drawer::VIsoAspect()
489 if (!HasOwnVIsoAspect())
491 if (!myLink.IsNull())
493 return myLink->VIsoAspect();
495 if (myVIsoAspect.IsNull())
497 myVIsoAspect = new Prs3d_IsoAspect (Quantity_NOC_GRAY75, Aspect_TOL_SOLID, 1.0, 1);
503 // =======================================================================
504 // function : SetVIsoAspect
506 // =======================================================================
508 void Prs3d_Drawer::SetVIsoAspect (const Handle(Prs3d_IsoAspect)& theAspect)
510 myVIsoAspect = theAspect;
511 myHasOwnVIsoAspect= !myVIsoAspect.IsNull();
514 // =======================================================================
515 // function : WireAspect
517 // =======================================================================
519 const Handle(Prs3d_LineAspect)& Prs3d_Drawer::WireAspect()
521 if (!HasOwnWireAspect())
523 if (!myLink.IsNull())
525 return myLink->WireAspect();
527 if (myWireAspect.IsNull())
529 myWireAspect = new Prs3d_LineAspect (THE_DEF_COLOR_Wire, Aspect_TOL_SOLID, 1.0);
535 // =======================================================================
536 // function : SetWireAspect
538 // =======================================================================
540 void Prs3d_Drawer::SetWireAspect (const Handle(Prs3d_LineAspect)& theAspect)
542 myWireAspect = theAspect;
543 myHasOwnWireAspect = !myWireAspect.IsNull();
546 // =======================================================================
547 // function : SetWireDraw
549 // =======================================================================
551 void Prs3d_Drawer::SetWireDraw (const Standard_Boolean theIsEnabled)
553 myHasOwnWireDraw = Standard_True;
554 myWireDraw = theIsEnabled;
557 // =======================================================================
558 // function : PointAspect
560 // =======================================================================
562 const Handle(Prs3d_PointAspect)& Prs3d_Drawer::PointAspect()
564 if (!HasOwnPointAspect())
566 if (!myLink.IsNull())
568 return myLink->PointAspect();
570 if (myPointAspect.IsNull())
572 myPointAspect = new Prs3d_PointAspect (Aspect_TOM_PLUS, Quantity_NOC_YELLOW, 1.0);
575 return myPointAspect;
578 // =======================================================================
579 // function : SetupOwnPointAspect
581 // =======================================================================
582 Standard_Boolean Prs3d_Drawer::SetupOwnPointAspect (const Handle(Prs3d_Drawer)& theDefaults)
584 if (myHasOwnPointAspect)
586 return Standard_False;
589 myPointAspect = new Prs3d_PointAspect (Aspect_TOM_PLUS, Quantity_NOC_YELLOW, 1.0);
590 if (!theDefaults.IsNull() && theDefaults != this)
592 *myPointAspect->Aspect() = *theDefaults->PointAspect()->Aspect();
594 else if (!myLink.IsNull())
596 *myPointAspect->Aspect() = *myLink->PointAspect()->Aspect();
598 myHasOwnPointAspect = Standard_True;
599 return Standard_True;
602 // =======================================================================
603 // function : SetPointAspect
605 // =======================================================================
607 void Prs3d_Drawer::SetPointAspect (const Handle(Prs3d_PointAspect)& theAspect)
609 myPointAspect = theAspect;
610 myHasOwnPointAspect = !myPointAspect.IsNull();
613 // =======================================================================
614 // function : LineAspect
616 // =======================================================================
618 const Handle(Prs3d_LineAspect)& Prs3d_Drawer::LineAspect()
620 if (!HasOwnLineAspect())
622 if (!myLink.IsNull())
624 return myLink->LineAspect();
626 if (myLineAspect.IsNull())
628 myLineAspect = new Prs3d_LineAspect (THE_DEF_COLOR_Line, Aspect_TOL_SOLID, 1.0);
634 // =======================================================================
635 // function : SetLineAspect
637 // =======================================================================
639 void Prs3d_Drawer::SetLineAspect (const Handle(Prs3d_LineAspect)& theAspect)
641 myLineAspect = theAspect;
642 myHasOwnLineAspect = !myLineAspect.IsNull();
645 // =======================================================================
646 // function : TextAspect
648 // =======================================================================
650 const Handle(Prs3d_TextAspect)& Prs3d_Drawer::TextAspect()
652 if (!HasOwnTextAspect())
654 if (!myLink.IsNull())
656 return myLink->TextAspect();
658 if (myTextAspect.IsNull())
660 myTextAspect = new Prs3d_TextAspect();
666 // =======================================================================
667 // function : SetTextAspect
669 // =======================================================================
671 void Prs3d_Drawer::SetTextAspect (const Handle(Prs3d_TextAspect)& theAspect)
673 myTextAspect = theAspect;
674 myHasOwnTextAspect = !myTextAspect.IsNull();
677 // =======================================================================
678 // function : ShadingAspect
680 // =======================================================================
682 const Handle(Prs3d_ShadingAspect)& Prs3d_Drawer::ShadingAspect()
684 if (!HasOwnShadingAspect())
686 if (!myLink.IsNull())
688 return myLink->ShadingAspect();
690 if (myShadingAspect.IsNull())
692 myShadingAspect = new Prs3d_ShadingAspect();
695 return myShadingAspect;
698 // =======================================================================
699 // function : SetupOwnShadingAspect
701 // =======================================================================
702 Standard_Boolean Prs3d_Drawer::SetupOwnShadingAspect (const Handle(Prs3d_Drawer)& theDefaults)
704 if (myHasOwnShadingAspect)
706 return Standard_False;
709 myShadingAspect = new Prs3d_ShadingAspect();
710 if (!theDefaults.IsNull() && theDefaults != this)
712 *myShadingAspect->Aspect() = *theDefaults->ShadingAspect()->Aspect();
714 else if (!myLink.IsNull())
716 *myShadingAspect->Aspect() = *myLink->ShadingAspect()->Aspect();
718 myHasOwnShadingAspect = Standard_True;
719 return Standard_True;
722 // =======================================================================
723 // function : SetShadingAspect
725 // =======================================================================
727 void Prs3d_Drawer::SetShadingAspect (const Handle(Prs3d_ShadingAspect)& theAspect)
729 myShadingAspect = theAspect;
730 myHasOwnShadingAspect = !myShadingAspect.IsNull();
733 // =======================================================================
734 // function : PlaneAspect
736 // =======================================================================
738 const Handle(Prs3d_PlaneAspect)& Prs3d_Drawer::PlaneAspect()
740 if (!HasOwnPlaneAspect())
742 if (!myLink.IsNull())
744 return myLink->PlaneAspect();
746 if (myPlaneAspect.IsNull())
748 myPlaneAspect = new Prs3d_PlaneAspect();
751 return myPlaneAspect;
754 // =======================================================================
755 // function : SetPlaneAspect
757 // =======================================================================
759 void Prs3d_Drawer::SetPlaneAspect (const Handle(Prs3d_PlaneAspect)& theAspect)
761 myPlaneAspect = theAspect;
762 myHasOwnPlaneAspect = !myPlaneAspect.IsNull();
765 // =======================================================================
766 // function : SeenLineAspect
768 // =======================================================================
770 const Handle(Prs3d_LineAspect)& Prs3d_Drawer::SeenLineAspect()
772 if (!HasOwnSeenLineAspect())
774 if (!myLink.IsNull())
776 return myLink->SeenLineAspect();
778 if (mySeenLineAspect.IsNull())
780 mySeenLineAspect = new Prs3d_LineAspect (THE_DEF_COLOR_SeenLine, Aspect_TOL_SOLID, 1.0);
783 return mySeenLineAspect;
786 // =======================================================================
787 // function : SetSeenLineAspect
789 // =======================================================================
791 void Prs3d_Drawer::SetSeenLineAspect (const Handle(Prs3d_LineAspect)& theAspect)
793 mySeenLineAspect = theAspect;
794 myHasOwnSeenLineAspect = !mySeenLineAspect.IsNull();
797 // =======================================================================
798 // function : ArrowAspect
800 // =======================================================================
802 const Handle(Prs3d_ArrowAspect)& Prs3d_Drawer::ArrowAspect()
804 if (!HasOwnArrowAspect())
806 if (!myLink.IsNull())
808 return myLink->ArrowAspect();
810 if (myArrowAspect.IsNull())
812 myArrowAspect = new Prs3d_ArrowAspect();
815 return myArrowAspect;
818 // =======================================================================
819 // function : SetArrowAspect
821 // =======================================================================
823 void Prs3d_Drawer::SetArrowAspect (const Handle(Prs3d_ArrowAspect)& theAspect)
825 myArrowAspect = theAspect;
826 myHasOwnArrowAspect = !myArrowAspect.IsNull();
829 // =======================================================================
830 // function : SetLineArrowDraw
832 // =======================================================================
834 void Prs3d_Drawer::SetLineArrowDraw (const Standard_Boolean theIsEnabled)
836 myHasOwnLineArrowDraw = Standard_True;
837 myLineArrowDraw = theIsEnabled;
840 // =======================================================================
841 // function : HiddenLineAspect
843 // =======================================================================
845 const Handle(Prs3d_LineAspect)& Prs3d_Drawer::HiddenLineAspect()
847 if (!HasOwnHiddenLineAspect())
849 if (!myLink.IsNull())
851 return myLink->HiddenLineAspect();
853 if (myHiddenLineAspect.IsNull())
855 myHiddenLineAspect = new Prs3d_LineAspect (THE_DEF_COLOR_HiddenLine, Aspect_TOL_DASH, 1.0);
858 return myHiddenLineAspect;
861 // =======================================================================
862 // function : SetHiddenLineAspect
864 // =======================================================================
866 void Prs3d_Drawer::SetHiddenLineAspect (const Handle(Prs3d_LineAspect)& theAspect)
868 myHiddenLineAspect = theAspect;
869 myHasOwnHiddenLineAspect = !myHiddenLineAspect.IsNull();
872 // =======================================================================
873 // function : EnableDrawHiddenLineDraw
875 // =======================================================================
877 void Prs3d_Drawer::EnableDrawHiddenLine()
879 myHasOwnDrawHiddenLine = Standard_True;
880 myDrawHiddenLine = Standard_True;
883 // =======================================================================
884 // function : DisableDrawHiddenLine
886 // =======================================================================
888 void Prs3d_Drawer::DisableDrawHiddenLine()
890 myHasOwnDrawHiddenLine = Standard_True;
891 myDrawHiddenLine = Standard_False;
894 // =======================================================================
895 // function : VectorAspect
897 // =======================================================================
899 const Handle(Prs3d_LineAspect)& Prs3d_Drawer::VectorAspect()
901 if (!HasOwnVectorAspect())
903 if (!myLink.IsNull())
905 return myLink->VectorAspect();
907 if (myVectorAspect.IsNull())
909 myVectorAspect = new Prs3d_LineAspect (THE_DEF_COLOR_Vector, Aspect_TOL_SOLID, 1.0);
912 return myVectorAspect;
915 // =======================================================================
916 // function : SetVectorAspect
918 // =======================================================================
920 void Prs3d_Drawer::SetVectorAspect (const Handle(Prs3d_LineAspect)& theAspect)
922 myVectorAspect = theAspect;
923 myHasOwnVectorAspect = !myVectorAspect.IsNull();
926 // =======================================================================
927 // function : SetVertexDrawMode
929 // =======================================================================
931 void Prs3d_Drawer::SetVertexDrawMode (const Prs3d_VertexDrawMode theMode)
933 // Prs3d_VDM_Inherited is default value and means
934 // that correct value should be taken from the Link if it exists.
935 myVertexDrawMode = theMode;
938 // =======================================================================
939 // function : VertexDrawMode
941 // =======================================================================
943 Prs3d_VertexDrawMode Prs3d_Drawer::VertexDrawMode()
945 if (!HasOwnVertexDrawMode())
947 if (!myLink.IsNull())
949 return myLink->VertexDrawMode();
951 // Prs3d_VDM_Isolated is default value for this setting.
952 myVertexDrawMode = Prs3d_VDM_Isolated;
954 return myVertexDrawMode;
957 // =======================================================================
958 // function : DatumAspect
960 // =======================================================================
962 const Handle(Prs3d_DatumAspect)& Prs3d_Drawer::DatumAspect()
964 if (!HasOwnDatumAspect())
966 if (!myLink.IsNull())
968 return myLink->DatumAspect();
970 if (myDatumAspect.IsNull())
972 myDatumAspect = new Prs3d_DatumAspect();
975 return myDatumAspect;
978 // =======================================================================
979 // function : SetDatumAspect
981 // =======================================================================
983 void Prs3d_Drawer::SetDatumAspect (const Handle(Prs3d_DatumAspect)& theAspect)
985 myDatumAspect = theAspect;
986 myHasOwnDatumAspect = !myDatumAspect.IsNull();
989 // =======================================================================
990 // function : SectionAspect
992 // =======================================================================
994 const Handle(Prs3d_LineAspect)& Prs3d_Drawer::SectionAspect()
996 if (!HasOwnSectionAspect())
998 if (!myLink.IsNull())
1000 return myLink->SectionAspect();
1002 if (mySectionAspect.IsNull())
1004 mySectionAspect = new Prs3d_LineAspect (THE_DEF_COLOR_Section, Aspect_TOL_SOLID, 1.0);
1007 return mySectionAspect;
1010 // =======================================================================
1011 // function : SetSectionAspect
1013 // =======================================================================
1015 void Prs3d_Drawer::SetSectionAspect (const Handle(Prs3d_LineAspect)& theAspect)
1017 mySectionAspect = theAspect;
1018 myHasOwnSectionAspect = !mySectionAspect.IsNull();
1021 // =======================================================================
1022 // function : SetSectionAspect
1024 // =======================================================================
1026 void Prs3d_Drawer::ClearLocalAttributes()
1028 if (myLink.IsNull())
1033 myUIsoAspect.Nullify();
1034 myVIsoAspect.Nullify();
1035 myFreeBoundaryAspect.Nullify();
1036 myUnFreeBoundaryAspect.Nullify();
1037 myFaceBoundaryAspect.Nullify();
1038 myWireAspect.Nullify();
1039 myLineAspect.Nullify();
1040 myTextAspect.Nullify();
1041 myShadingAspect.Nullify();
1042 myPointAspect.Nullify();
1043 myPlaneAspect.Nullify();
1044 myArrowAspect.Nullify();
1045 myHiddenLineAspect.Nullify();
1046 mySeenLineAspect.Nullify();
1047 myVectorAspect .Nullify();
1048 myDatumAspect.Nullify();
1049 myDimensionAspect.Nullify();
1050 mySectionAspect.Nullify();
1052 myHasOwnUIsoAspect = Standard_False;
1053 myHasOwnVIsoAspect = Standard_False;
1054 myHasOwnWireAspect = Standard_False;
1055 myHasOwnPointAspect = Standard_False;
1056 myHasOwnLineAspect = Standard_False;
1057 myHasOwnTextAspect = Standard_False;
1058 myHasOwnShadingAspect = Standard_False;
1059 myHasOwnPlaneAspect = Standard_False;
1060 myHasOwnSeenLineAspect = Standard_False;
1061 myHasOwnArrowAspect = Standard_False;
1062 myHasOwnHiddenLineAspect = Standard_False;
1063 myHasOwnVectorAspect = Standard_False;
1064 myHasOwnDatumAspect = Standard_False;
1065 myHasOwnSectionAspect = Standard_False;
1066 myHasOwnFreeBoundaryAspect = Standard_False;
1067 myHasOwnUnFreeBoundaryAspect = Standard_False;
1068 myHasOwnFaceBoundaryAspect = Standard_False;
1069 myHasOwnDimensionAspect = Standard_False;
1071 myHasOwnNbPoints = Standard_False;
1072 myHasOwnMaximalParameterValue = Standard_False;
1073 myHasOwnTypeOfDeflection = Standard_False;
1074 myHasOwnChordialDeviation = Standard_False;
1075 myHasOwnDeviationCoefficient = Standard_False;
1076 myHasOwnDeviationAngle = Standard_False;
1077 myHasOwnIsoOnPlane = Standard_False;
1078 myHasOwnIsoOnTriangulation = Standard_False;
1079 myHasOwnIsAutoTriangulated = Standard_False;
1080 myHasOwnWireDraw = Standard_False;
1081 myHasOwnLineArrowDraw = Standard_False;
1082 myHasOwnDrawHiddenLine = Standard_False;
1083 myHasOwnFreeBoundaryDraw = Standard_False;
1084 myHasOwnUnFreeBoundaryDraw = Standard_False;
1085 myHasOwnFaceBoundaryDraw = Standard_False;
1086 myHasOwnDimLengthModelUnits = Standard_False;
1087 myHasOwnDimLengthDisplayUnits = Standard_False;
1088 myHasOwnDimAngleModelUnits = Standard_False;
1089 myHasOwnDimAngleDisplayUnits = Standard_False;
1091 myVertexDrawMode = Prs3d_VDM_Inherited;
1092 myTypeOfHLR = Prs3d_TOH_NotSet;
1095 // =======================================================================
1096 // function : SetupOwnFaceBoundaryAspect
1098 // =======================================================================
1099 Standard_Boolean Prs3d_Drawer::SetupOwnFaceBoundaryAspect (const Handle(Prs3d_Drawer)& theDefaults)
1101 if (myHasOwnFaceBoundaryAspect)
1106 myFaceBoundaryAspect = new Prs3d_LineAspect (THE_DEF_COLOR_FaceBoundary, Aspect_TOL_SOLID, 1.0);
1107 myHasOwnFaceBoundaryAspect = true;
1109 const Handle(Prs3d_Drawer)& aLink = (!theDefaults.IsNull() && theDefaults != this) ? theDefaults : myLink;
1110 if (!aLink.IsNull())
1112 *myFaceBoundaryAspect->Aspect() = *aLink->FaceBoundaryAspect()->Aspect();
1117 // =======================================================================
1118 // function : SetOwnLineAspects
1120 // =======================================================================
1121 Standard_Boolean Prs3d_Drawer::SetOwnLineAspects (const Handle(Prs3d_Drawer)& theDefaults)
1123 bool isUpdateNeeded = false;
1124 const Handle(Prs3d_Drawer)& aLink = (!theDefaults.IsNull() && theDefaults != this) ? theDefaults : myLink;
1125 if (!myHasOwnUIsoAspect)
1127 isUpdateNeeded = true;
1128 myUIsoAspect = new Prs3d_IsoAspect (Quantity_NOC_GRAY75, Aspect_TOL_SOLID, 1.0, 1);
1129 if (!aLink.IsNull())
1131 *myUIsoAspect->Aspect() = *aLink->UIsoAspect()->Aspect();
1132 myUIsoAspect->SetNumber (aLink->UIsoAspect()->Number());
1134 myHasOwnUIsoAspect = true;
1136 if (!myHasOwnVIsoAspect)
1138 isUpdateNeeded = true;
1139 myVIsoAspect = new Prs3d_IsoAspect (Quantity_NOC_GRAY75, Aspect_TOL_SOLID, 1.0, 1);
1140 if (!aLink.IsNull())
1142 *myVIsoAspect->Aspect() = *aLink->VIsoAspect()->Aspect();
1143 myUIsoAspect->SetNumber (aLink->VIsoAspect()->Number());
1145 myHasOwnVIsoAspect = true;
1147 if (!myHasOwnWireAspect)
1149 isUpdateNeeded = true;
1150 myWireAspect = new Prs3d_LineAspect (THE_DEF_COLOR_Wire, Aspect_TOL_SOLID, 1.0);
1151 myHasOwnWireAspect = true;
1152 if (!aLink.IsNull())
1154 *myWireAspect->Aspect() = *aLink->WireAspect()->Aspect();
1157 if (!myHasOwnLineAspect)
1159 isUpdateNeeded = true;
1160 myLineAspect = new Prs3d_LineAspect (THE_DEF_COLOR_Line, Aspect_TOL_SOLID, 1.0);
1161 myHasOwnLineAspect = true;
1162 if (!aLink.IsNull())
1164 *myLineAspect->Aspect() = *aLink->LineAspect()->Aspect();
1167 if (!myHasOwnSeenLineAspect)
1169 isUpdateNeeded = true;
1170 mySeenLineAspect = new Prs3d_LineAspect (THE_DEF_COLOR_SeenLine, Aspect_TOL_SOLID, 1.0);
1171 myHasOwnSeenLineAspect = true;
1172 if (!aLink.IsNull())
1174 *mySeenLineAspect->Aspect() = *aLink->SeenLineAspect()->Aspect();
1177 if (!myHasOwnHiddenLineAspect)
1179 isUpdateNeeded = true;
1180 myHiddenLineAspect = new Prs3d_LineAspect (THE_DEF_COLOR_HiddenLine, Aspect_TOL_DASH, 1.0);
1181 myHasOwnHiddenLineAspect = true;
1182 if (!aLink.IsNull())
1184 *myHiddenLineAspect->Aspect() = *aLink->HiddenLineAspect()->Aspect();
1187 if (!myHasOwnFreeBoundaryAspect)
1189 isUpdateNeeded = true;
1190 myFreeBoundaryAspect = new Prs3d_LineAspect (THE_DEF_COLOR_FreeBoundary, Aspect_TOL_SOLID, 1.0);
1191 myHasOwnFreeBoundaryAspect = true;
1192 if (!aLink.IsNull())
1194 *myFreeBoundaryAspect->Aspect() = *aLink->FreeBoundaryAspect()->Aspect();
1197 if (!myHasOwnUnFreeBoundaryAspect)
1199 isUpdateNeeded = true;
1200 myUnFreeBoundaryAspect = new Prs3d_LineAspect (THE_DEF_COLOR_UnFreeBoundary, Aspect_TOL_SOLID, 1.0);
1201 myHasOwnUnFreeBoundaryAspect = true;
1202 if (!aLink.IsNull())
1204 *myUnFreeBoundaryAspect->Aspect() = *aLink->UnFreeBoundaryAspect()->Aspect();
1207 isUpdateNeeded = SetupOwnFaceBoundaryAspect (theDefaults) || isUpdateNeeded;
1208 return isUpdateNeeded;
1211 // =======================================================================
1212 // function : SetOwnDatumAspects
1214 // =======================================================================
1215 Standard_Boolean Prs3d_Drawer::SetOwnDatumAspects (const Handle(Prs3d_Drawer)& theDefaults)
1217 bool isUpdateNeeded = false;
1218 const Handle(Prs3d_Drawer)& aLink = (!theDefaults.IsNull() && theDefaults != this) ? theDefaults : myLink;
1219 if (!myHasOwnVectorAspect)
1221 isUpdateNeeded = true;
1222 myVectorAspect = new Prs3d_LineAspect (THE_DEF_COLOR_Vector, Aspect_TOL_SOLID, 1.0);
1223 myHasOwnVectorAspect = true;
1224 if (!aLink.IsNull())
1226 *myVectorAspect->Aspect() = *aLink->VectorAspect()->Aspect();
1229 if (!myHasOwnSectionAspect)
1231 isUpdateNeeded = true;
1232 mySectionAspect = new Prs3d_LineAspect (THE_DEF_COLOR_Section, Aspect_TOL_SOLID, 1.0);
1233 myHasOwnSectionAspect = true;
1234 if (!aLink.IsNull())
1236 *mySectionAspect->Aspect() = *aLink->SectionAspect()->Aspect();
1239 if (!myHasOwnPlaneAspect)
1241 isUpdateNeeded = true;
1242 myPlaneAspect = new Prs3d_PlaneAspect();
1243 myHasOwnPlaneAspect = true;
1245 if (!myHasOwnArrowAspect)
1247 isUpdateNeeded = true;
1248 myArrowAspect = new Prs3d_ArrowAspect();
1249 myHasOwnArrowAspect = true;
1251 if (!myHasOwnDatumAspect)
1253 isUpdateNeeded = true;
1254 myDatumAspect = new Prs3d_DatumAspect();
1255 myHasOwnDatumAspect = true;
1257 return isUpdateNeeded;
1260 //! Assign the shader program.
1261 template <typename T>
1262 inline void setAspectProgram (const Handle(Graphic3d_ShaderProgram)& theProgram,
1266 if (!thePrsAspect.IsNull()
1269 thePrsAspect->Aspect()->SetShaderProgram (theProgram);
1273 // =======================================================================
1274 // function : SetShaderProgram
1276 // =======================================================================
1277 bool Prs3d_Drawer::SetShaderProgram (const Handle(Graphic3d_ShaderProgram)& theProgram,
1278 const Graphic3d_GroupAspect theAspect,
1279 const bool theToOverrideDefaults)
1281 bool isUpdateNeeded = false;
1284 case Graphic3d_ASPECT_LINE:
1286 if (theToOverrideDefaults)
1288 isUpdateNeeded = SetOwnLineAspects() || isUpdateNeeded;
1289 isUpdateNeeded = SetOwnDatumAspects() || isUpdateNeeded;
1292 setAspectProgram (theProgram, myHasOwnUIsoAspect, myUIsoAspect);
1293 setAspectProgram (theProgram, myHasOwnVIsoAspect, myVIsoAspect);
1294 setAspectProgram (theProgram, myHasOwnWireAspect, myWireAspect);
1295 setAspectProgram (theProgram, myHasOwnLineAspect, myLineAspect);
1296 setAspectProgram (theProgram, myHasOwnSeenLineAspect, mySeenLineAspect);
1297 setAspectProgram (theProgram, myHasOwnHiddenLineAspect, myHiddenLineAspect);
1298 setAspectProgram (theProgram, myHasOwnVectorAspect, myVectorAspect);
1299 setAspectProgram (theProgram, myHasOwnSectionAspect, mySectionAspect);
1300 setAspectProgram (theProgram, myHasOwnFreeBoundaryAspect, myFreeBoundaryAspect);
1301 setAspectProgram (theProgram, myHasOwnUnFreeBoundaryAspect, myUnFreeBoundaryAspect);
1302 setAspectProgram (theProgram, myHasOwnFaceBoundaryAspect, myFaceBoundaryAspect);
1303 if (myHasOwnPlaneAspect)
1305 setAspectProgram (theProgram, true, myPlaneAspect->EdgesAspect());
1306 setAspectProgram (theProgram, true, myPlaneAspect->IsoAspect());
1307 setAspectProgram (theProgram, true, myPlaneAspect->ArrowAspect());
1309 if (myHasOwnDatumAspect)
1311 setAspectProgram (theProgram, true, myDatumAspect->LineAspect(Prs3d_DP_XAxis));
1312 setAspectProgram (theProgram, true, myDatumAspect->LineAspect(Prs3d_DP_YAxis));
1313 setAspectProgram (theProgram, true, myDatumAspect->LineAspect(Prs3d_DP_ZAxis));
1315 setAspectProgram (theProgram, myHasOwnArrowAspect, myArrowAspect);
1316 return isUpdateNeeded;
1318 case Graphic3d_ASPECT_TEXT:
1320 if (theToOverrideDefaults
1321 && !myHasOwnTextAspect)
1323 isUpdateNeeded = true;
1324 myTextAspect = new Prs3d_TextAspect();
1325 myHasOwnTextAspect = true;
1326 if (!myLink.IsNull())
1328 *myTextAspect->Aspect() = *myLink->TextAspect()->Aspect();
1332 setAspectProgram (theProgram, myHasOwnTextAspect, myTextAspect);
1333 return isUpdateNeeded;
1335 case Graphic3d_ASPECT_MARKER:
1337 if (theToOverrideDefaults
1338 && SetupOwnPointAspect())
1340 isUpdateNeeded = true;
1343 setAspectProgram (theProgram, myHasOwnPointAspect, myPointAspect);
1344 return isUpdateNeeded;
1346 case Graphic3d_ASPECT_FILL_AREA:
1348 if (theToOverrideDefaults
1349 && SetupOwnShadingAspect())
1351 isUpdateNeeded = true;
1353 setAspectProgram (theProgram, myHasOwnShadingAspect, myShadingAspect);
1354 return isUpdateNeeded;
1360 // =======================================================================
1361 // function : SetShadingModel
1363 // =======================================================================
1364 bool Prs3d_Drawer::SetShadingModel (Graphic3d_TypeOfShadingModel theModel,
1365 bool theToOverrideDefaults)
1367 bool isUpdateNeeded = false;
1369 if (theToOverrideDefaults
1370 && SetupOwnShadingAspect())
1372 isUpdateNeeded = true;
1375 if (!myShadingAspect.IsNull()
1376 && myHasOwnShadingAspect)
1378 myShadingAspect->Aspect()->SetShadingModel (theModel);
1381 return isUpdateNeeded;
1384 // =======================================================================
1385 // function : DumpJson
1387 // =======================================================================
1388 void Prs3d_Drawer::DumpJson (Standard_OStream& theOStream, Standard_Integer theDepth) const
1390 OCCT_DUMP_TRANSIENT_CLASS_BEGIN (theOStream)
1392 OCCT_DUMP_FIELD_VALUE_POINTER (theOStream, myLink.get())
1394 OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myHasOwnNbPoints)
1395 OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myMaximalParameterValue)
1396 OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myHasOwnMaximalParameterValue)
1397 OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myChordialDeviation)
1398 OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myHasOwnChordialDeviation)
1399 OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myTypeOfDeflection)
1400 OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myHasOwnTypeOfDeflection)
1401 OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myTypeOfHLR)
1402 OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myDeviationCoefficient)
1403 OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myPreviousDeviationCoefficient)
1404 OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myHasOwnDeviationCoefficient)
1405 OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myDeviationAngle)
1406 OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myHasOwnDeviationAngle)
1407 OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myPreviousDeviationAngle)
1408 OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myIsoOnPlane)
1409 OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myHasOwnIsoOnPlane)
1410 OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myIsoOnTriangulation)
1411 OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myHasOwnIsoOnTriangulation)
1412 OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myIsAutoTriangulated)
1413 OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myHasOwnIsAutoTriangulated)
1415 OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myHasOwnUIsoAspect)
1417 OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myHasOwnVIsoAspect)
1419 OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myHasOwnWireAspect)
1420 OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myWireDraw)
1421 OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myHasOwnWireDraw)
1423 OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myHasOwnPointAspect)
1425 OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myHasOwnLineAspect)
1427 OCCT_DUMP_FIELD_VALUES_DUMPED (theOStream, theDepth, myTextAspect.get())
1429 OCCT_DUMP_FIELD_VALUES_DUMPED (theOStream, theDepth, myShadingAspect.get())
1430 OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myHasOwnShadingAspect)
1432 OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myHasOwnPlaneAspect)
1434 OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myHasOwnSeenLineAspect)
1436 OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myHasOwnArrowAspect)
1437 OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myLineArrowDraw)
1438 OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myHasOwnLineArrowDraw)
1440 OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myHasOwnHiddenLineAspect)
1441 OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myDrawHiddenLine)
1442 OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myHasOwnDrawHiddenLine)
1444 OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myHasOwnVectorAspect)
1445 OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myVertexDrawMode)
1447 OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myHasOwnDatumAspect)
1449 OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myHasOwnSectionAspect)
1451 OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myHasOwnFreeBoundaryAspect)
1452 OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myFreeBoundaryDraw)
1453 OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myHasOwnFreeBoundaryDraw)
1455 OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myHasOwnUnFreeBoundaryAspect)
1456 OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myUnFreeBoundaryDraw)
1457 OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myHasOwnUnFreeBoundaryDraw)
1459 OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myFaceBoundaryUpperContinuity)
1460 OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myHasOwnFaceBoundaryAspect)
1461 OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myFaceBoundaryDraw)
1462 OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myHasOwnFaceBoundaryDraw)
1464 OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myHasOwnDimensionAspect)
1465 OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myHasOwnDimLengthModelUnits)
1466 OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myHasOwnDimAngleModelUnits)
1467 OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myHasOwnDimLengthDisplayUnits)
1468 OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myHasOwnDimAngleDisplayUnits)