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>
16 #include <Prs3d_ArrowAspect.hxx>
17 #include <Prs3d_DatumAspect.hxx>
18 #include <Prs3d_DimensionAspect.hxx>
19 #include <Prs3d_IsoAspect.hxx>
20 #include <Prs3d_LineAspect.hxx>
21 #include <Prs3d_PlaneAspect.hxx>
22 #include <Prs3d_PointAspect.hxx>
23 #include <Prs3d_ShadingAspect.hxx>
24 #include <Prs3d_TextAspect.hxx>
27 // =======================================================================
28 // function : Prs3d_Drawer
30 // =======================================================================
31 Prs3d_Drawer::Prs3d_Drawer()
33 myHasOwnNbPoints (Standard_False),
34 myMaximalParameterValue (500000.),
35 myHasOwnMaximalParameterValue (Standard_False),
36 myChordialDeviation (0.0001),
37 myHasOwnChordialDeviation (Standard_False),
38 myTypeOfDeflection (Aspect_TOD_RELATIVE),
39 myHasOwnTypeOfDeflection (Standard_False),
40 myTypeOfHLR (Prs3d_TOH_NotSet),
41 myDeviationCoefficient (0.001),
42 myHasOwnDeviationCoefficient (Standard_False),
43 myHLRDeviationCoefficient (0.02),
44 myHasOwnHLRDeviationCoefficient (Standard_False),
45 myDeviationAngle (12.0 * M_PI / 180.0),
46 myHasOwnDeviationAngle (Standard_False),
47 myHLRAngle (20.0 * M_PI / 180.0),
48 myHasOwnHLRDeviationAngle (Standard_False),
49 myIsoOnPlane (Standard_False),
50 myHasOwnIsoOnPlane (Standard_False),
51 myIsAutoTriangulated (Standard_True),
52 myHasOwnIsAutoTriangulated (Standard_False),
54 myHasOwnUIsoAspect (Standard_False),
55 myHasOwnVIsoAspect (Standard_False),
56 myHasOwnWireAspect (Standard_False),
57 myWireDraw (Standard_True),
58 myHasOwnWireDraw (Standard_False),
59 myHasOwnPointAspect (Standard_False),
60 myHasOwnLineAspect (Standard_False),
61 myHasOwnTextAspect (Standard_False),
62 myHasOwnShadingAspect (Standard_False),
63 myShadingAspectGlobal (Standard_True),
64 myHasOwnShadingAspectGlobal (Standard_False),
65 myHasOwnPlaneAspect (Standard_False),
66 myHasOwnSeenLineAspect (Standard_False),
67 myHasOwnArrowAspect (Standard_False),
68 myLineArrowDraw (Standard_False),
69 myHasOwnLineArrowDraw (Standard_False),
70 myHasOwnHiddenLineAspect (Standard_False),
71 myDrawHiddenLine (Standard_False),
72 myHasOwnDrawHiddenLine (Standard_False),
73 myHasOwnVectorAspect (Standard_False),
74 myVertexDrawMode (Prs3d_VDM_Inherited),
75 myHasOwnDatumAspect (Standard_False),
76 myHasOwnSectionAspect (Standard_False),
78 myHasOwnFreeBoundaryAspect (Standard_False),
79 myFreeBoundaryDraw (Standard_True),
80 myHasOwnFreeBoundaryDraw (Standard_False),
81 myHasOwnUnFreeBoundaryAspect (Standard_False),
82 myUnFreeBoundaryDraw (Standard_True),
83 myHasOwnUnFreeBoundaryDraw (Standard_False),
84 myHasOwnFaceBoundaryAspect (Standard_False),
85 myFaceBoundaryDraw (Standard_False),
86 myHasOwnFaceBoundaryDraw (Standard_False),
88 myHasOwnDimensionAspect (Standard_False),
89 myHasOwnDimLengthModelUnits (Standard_False),
90 myHasOwnDimAngleModelUnits (Standard_False),
91 myHasOwnDimLengthDisplayUnits (Standard_False),
92 myHasOwnDimAngleDisplayUnits (Standard_False)
94 myDimensionModelUnits.SetLengthUnits ("m");
95 myDimensionModelUnits.SetAngleUnits ("rad");
96 myDimensionDisplayUnits.SetLengthUnits ("m");
97 myDimensionDisplayUnits.SetAngleUnits ("deg");
100 // =======================================================================
101 // function : SetTypeOfDeflection
103 // =======================================================================
105 void Prs3d_Drawer::SetTypeOfDeflection (const Aspect_TypeOfDeflection theTypeOfDeflection)
107 myHasOwnTypeOfDeflection = Standard_True;
108 myTypeOfDeflection = theTypeOfDeflection;
111 // =======================================================================
112 // function : SetMaximalChordialDeviation
114 // =======================================================================
116 void Prs3d_Drawer::SetMaximalChordialDeviation (const Quantity_Length theChordialDeviation)
118 myHasOwnChordialDeviation = Standard_True;
119 myChordialDeviation = theChordialDeviation;
122 // =======================================================================
123 // function : SetTypeOfHLR
124 // purpose : set type of HLR algorithm
125 // =======================================================================
127 void Prs3d_Drawer::SetTypeOfHLR (const Prs3d_TypeOfHLR theTypeOfHLR)
129 myTypeOfHLR = theTypeOfHLR;
132 // =======================================================================
133 // function : TypeOfHLR
134 // purpose : gets type of HLR algorithm
135 // =======================================================================
137 Prs3d_TypeOfHLR Prs3d_Drawer::TypeOfHLR()
139 if (!HasOwnTypeOfHLR())
141 if (!myLink.IsNull())
143 return myLink->TypeOfHLR();
145 // Prs3d_TOH_PolyAlgo is default value for this setting.
146 myTypeOfHLR = Prs3d_TOH_PolyAlgo;
151 // =======================================================================
152 // function : SetMaximalParameterValue
154 // =======================================================================
156 void Prs3d_Drawer::SetMaximalParameterValue (const Standard_Real theValue)
158 myHasOwnMaximalParameterValue = Standard_True;
159 myMaximalParameterValue = theValue;
162 // =======================================================================
163 // function : SetIsoOnPlane
165 // =======================================================================
167 void Prs3d_Drawer::SetIsoOnPlane (const Standard_Boolean theIsEnabled)
169 myHasOwnIsoOnPlane = Standard_True;
170 myIsoOnPlane = theIsEnabled;
173 // =======================================================================
174 // function : SetDiscretisation
176 // =======================================================================
178 void Prs3d_Drawer::SetDiscretisation (const Standard_Integer theValue)
180 myHasOwnNbPoints = Standard_True;
181 myNbPoints = theValue;
184 //=======================================================================
185 //function : SetDeviationCoefficient
187 //=======================================================================
189 void Prs3d_Drawer::SetDeviationCoefficient (const Standard_Real theCoefficient)
191 myPreviousDeviationCoefficient = DeviationCoefficient();
192 myDeviationCoefficient = theCoefficient;
193 myHasOwnDeviationCoefficient = Standard_True;
196 //=======================================================================
197 //function : SetHLRDeviationCoefficient
199 //=======================================================================
201 void Prs3d_Drawer::SetHLRDeviationCoefficient (const Standard_Real theCoefficient)
203 myPreviousHLRDeviationCoefficient = HLRDeviationCoefficient();
204 myHLRDeviationCoefficient = theCoefficient;
205 myHasOwnHLRDeviationCoefficient = Standard_True;
208 //=======================================================================
209 //function : SetDeviationAngle
211 //=======================================================================
213 void Prs3d_Drawer::SetDeviationAngle (const Standard_Real theAngle)
215 myPreviousDeviationAngle = DeviationAngle();
216 myDeviationAngle = theAngle;
217 myHasOwnDeviationAngle = Standard_True;
220 //=======================================================================
221 //function : SetHLRAngle
223 //=======================================================================
225 void Prs3d_Drawer::SetHLRAngle (const Standard_Real theAngle)
227 myPreviousHLRDeviationAngle = HLRAngle();
228 myHLRAngle = theAngle;
229 myHasOwnHLRDeviationAngle = Standard_True;
232 // =======================================================================
233 // function : SetAutoTriangulation
235 // =======================================================================
237 void Prs3d_Drawer::SetAutoTriangulation (const Standard_Boolean theIsEnabled)
239 myHasOwnIsAutoTriangulated = Standard_True;
240 myIsAutoTriangulated = theIsEnabled;
243 // =======================================================================
244 // function : FreeBoundaryAspect
246 // =======================================================================
248 const Handle(Prs3d_LineAspect)& Prs3d_Drawer::FreeBoundaryAspect()
250 if (!HasOwnFreeBoundaryAspect())
252 if (!myLink.IsNull())
254 return myLink->FreeBoundaryAspect();
256 if (myFreeBoundaryAspect.IsNull())
258 myFreeBoundaryAspect = new Prs3d_LineAspect (Quantity_NOC_GREEN, Aspect_TOL_SOLID, 1.0);
261 return myFreeBoundaryAspect;
264 // =======================================================================
265 // function : FreeBoundaryAspect
267 // =======================================================================
269 void Prs3d_Drawer::SetFreeBoundaryAspect (const Handle(Prs3d_LineAspect)& theAspect)
271 myFreeBoundaryAspect = theAspect;
272 myHasOwnFreeBoundaryAspect = !myFreeBoundaryAspect.IsNull();
275 // =======================================================================
276 // function : SetFreeBoundaryDraw
278 // =======================================================================
280 void Prs3d_Drawer::SetFreeBoundaryDraw (const Standard_Boolean theIsEnabled)
282 myHasOwnFreeBoundaryDraw = Standard_True;
283 myFreeBoundaryDraw = theIsEnabled;
286 // =======================================================================
287 // function : UnFreeBoundaryAspect
289 // =======================================================================
291 const Handle(Prs3d_LineAspect)& Prs3d_Drawer::UnFreeBoundaryAspect()
293 if (!HasOwnUnFreeBoundaryAspect())
295 if (!myLink.IsNull())
297 return myLink->UnFreeBoundaryAspect();
299 if (myUnFreeBoundaryAspect.IsNull())
301 myUnFreeBoundaryAspect = new Prs3d_LineAspect (Quantity_NOC_YELLOW, Aspect_TOL_SOLID, 1.0);
304 return myUnFreeBoundaryAspect;
307 // =======================================================================
308 // function : SetUnFreeBoundaryAspect
310 // =======================================================================
312 void Prs3d_Drawer::SetUnFreeBoundaryAspect (const Handle(Prs3d_LineAspect)& theAspect)
314 myUnFreeBoundaryAspect = theAspect;
315 myHasOwnUnFreeBoundaryAspect = !myUnFreeBoundaryAspect.IsNull();
318 // =======================================================================
319 // function : SetUnFreeBoundaryDraw
321 // =======================================================================
323 void Prs3d_Drawer::SetUnFreeBoundaryDraw (const Standard_Boolean theIsEnabled)
325 myHasOwnUnFreeBoundaryDraw = Standard_True;
326 myUnFreeBoundaryDraw = theIsEnabled;
329 // =======================================================================
330 // function : FaceBoundaryAspect
332 // =======================================================================
334 const Handle(Prs3d_LineAspect)& Prs3d_Drawer::FaceBoundaryAspect()
336 if (!HasOwnFaceBoundaryAspect())
338 if (!myLink.IsNull())
340 return myLink->FaceBoundaryAspect();
342 if (myFaceBoundaryAspect.IsNull())
344 myFaceBoundaryAspect = new Prs3d_LineAspect (Quantity_NOC_BLACK, Aspect_TOL_SOLID, 1.0);
347 return myFaceBoundaryAspect;
350 // =======================================================================
351 // function : SetFaceBoundaryAspect
353 // =======================================================================
355 void Prs3d_Drawer::SetFaceBoundaryAspect (const Handle(Prs3d_LineAspect)& theAspect)
357 myFaceBoundaryAspect = theAspect;
358 myHasOwnFaceBoundaryAspect = !myFaceBoundaryAspect.IsNull();
361 // =======================================================================
362 // function : SetFaceBoundaryDraw
364 // =======================================================================
366 void Prs3d_Drawer::SetFaceBoundaryDraw (const Standard_Boolean theIsEnabled)
368 myHasOwnFaceBoundaryDraw = Standard_True;
369 myFaceBoundaryDraw = theIsEnabled;
372 // =======================================================================
373 // function : DimensionAspect
375 // =======================================================================
377 const Handle(Prs3d_DimensionAspect)& Prs3d_Drawer::DimensionAspect()
379 if (!HasOwnDimensionAspect())
381 if (!myLink.IsNull())
383 return myLink->DimensionAspect();
385 if (myDimensionAspect.IsNull())
387 myDimensionAspect = new Prs3d_DimensionAspect;
390 return myDimensionAspect;
393 // =======================================================================
394 // function : SetDimensionAspect
396 // =======================================================================
398 void Prs3d_Drawer::SetDimensionAspect (const Handle(Prs3d_DimensionAspect)& theAspect)
400 myDimensionAspect = theAspect;
401 myHasOwnDimensionAspect = !myDimensionAspect.IsNull();
404 // =======================================================================
405 // function : SetDimLengthModelUnits
407 // =======================================================================
409 void Prs3d_Drawer::SetDimLengthModelUnits (const TCollection_AsciiString& theUnits)
411 myHasOwnDimLengthModelUnits = Standard_True;
412 myDimensionModelUnits.SetLengthUnits (theUnits);
415 // =======================================================================
416 // function : SetDimAngleModelUnits
418 // =======================================================================
420 void Prs3d_Drawer::SetDimAngleModelUnits (const TCollection_AsciiString& theUnits)
422 myHasOwnDimAngleModelUnits = Standard_True;
423 myDimensionModelUnits.SetAngleUnits (theUnits);
426 // =======================================================================
427 // function : SetDimLengthDisplayUnits
429 // =======================================================================
431 void Prs3d_Drawer::SetDimLengthDisplayUnits (const TCollection_AsciiString& theUnits)
433 myHasOwnDimLengthDisplayUnits = Standard_True;
434 myDimensionDisplayUnits.SetLengthUnits (theUnits);
437 // =======================================================================
438 // function : SetDimAngleDisplayUnits
440 // =======================================================================
442 void Prs3d_Drawer::SetDimAngleDisplayUnits (const TCollection_AsciiString& theUnits)
444 myHasOwnDimAngleDisplayUnits = Standard_True;
445 myDimensionDisplayUnits.SetAngleUnits (theUnits);
448 // =======================================================================
449 // function : UIsoAspect
451 // =======================================================================
453 const Handle(Prs3d_IsoAspect)& Prs3d_Drawer::UIsoAspect()
455 if (!HasOwnUIsoAspect())
457 if (!myLink.IsNull())
459 return myLink->UIsoAspect();
461 if (myUIsoAspect.IsNull())
463 myUIsoAspect = new Prs3d_IsoAspect (Quantity_NOC_GRAY75, Aspect_TOL_SOLID, 0.5, 1);
469 // =======================================================================
470 // function : SetUIsoAspect
472 // =======================================================================
474 void Prs3d_Drawer::SetUIsoAspect (const Handle(Prs3d_IsoAspect)& theAspect)
476 myUIsoAspect = theAspect;
477 myHasOwnUIsoAspect = !myUIsoAspect.IsNull();
480 // =======================================================================
481 // function : VIsoAspect
483 // =======================================================================
485 const Handle(Prs3d_IsoAspect)& Prs3d_Drawer::VIsoAspect()
487 if (!HasOwnVIsoAspect())
489 if (!myLink.IsNull())
491 return myLink->VIsoAspect();
493 if (myVIsoAspect.IsNull())
495 myVIsoAspect = new Prs3d_IsoAspect (Quantity_NOC_GRAY75, Aspect_TOL_SOLID, 0.5, 1);
501 // =======================================================================
502 // function : SetVIsoAspect
504 // =======================================================================
506 void Prs3d_Drawer::SetVIsoAspect (const Handle(Prs3d_IsoAspect)& theAspect)
508 myVIsoAspect = theAspect;
509 myHasOwnVIsoAspect= !myVIsoAspect.IsNull();
512 // =======================================================================
513 // function : WireAspect
515 // =======================================================================
517 const Handle(Prs3d_LineAspect)& Prs3d_Drawer::WireAspect()
519 if (!HasOwnWireAspect())
521 if (!myLink.IsNull())
523 return myLink->WireAspect();
525 if (myWireAspect.IsNull())
527 myWireAspect = new Prs3d_LineAspect (Quantity_NOC_RED, Aspect_TOL_SOLID, 1.0);
533 // =======================================================================
534 // function : SetWireAspect
536 // =======================================================================
538 void Prs3d_Drawer::SetWireAspect (const Handle(Prs3d_LineAspect)& theAspect)
540 myWireAspect = theAspect;
541 myHasOwnWireAspect = !myWireAspect.IsNull();
544 // =======================================================================
545 // function : SetWireDraw
547 // =======================================================================
549 void Prs3d_Drawer::SetWireDraw (const Standard_Boolean theIsEnabled)
551 myHasOwnWireDraw = Standard_True;
552 myWireDraw = theIsEnabled;
555 // =======================================================================
556 // function : PointAspect
558 // =======================================================================
560 const Handle(Prs3d_PointAspect)& Prs3d_Drawer::PointAspect()
562 if (!HasOwnPointAspect())
564 if (!myLink.IsNull())
566 return myLink->PointAspect();
568 if (myPointAspect.IsNull())
570 myPointAspect = new Prs3d_PointAspect (Aspect_TOM_PLUS, Quantity_NOC_YELLOW, 1.0);
573 return myPointAspect;
576 // =======================================================================
577 // function : SetPointAspect
579 // =======================================================================
581 void Prs3d_Drawer::SetPointAspect (const Handle(Prs3d_PointAspect)& theAspect)
583 myPointAspect = theAspect;
584 myHasOwnPointAspect = !myPointAspect.IsNull();
587 // =======================================================================
588 // function : LineAspect
590 // =======================================================================
592 const Handle(Prs3d_LineAspect)& Prs3d_Drawer::LineAspect()
594 if (!HasOwnLineAspect())
596 if (!myLink.IsNull())
598 return myLink->LineAspect();
600 if (myLineAspect.IsNull())
602 myLineAspect = new Prs3d_LineAspect (Quantity_NOC_YELLOW, Aspect_TOL_SOLID, 1.0);
608 // =======================================================================
609 // function : SetLineAspect
611 // =======================================================================
613 void Prs3d_Drawer::SetLineAspect (const Handle(Prs3d_LineAspect)& theAspect)
615 myLineAspect = theAspect;
616 myHasOwnLineAspect = !myLineAspect.IsNull();
619 // =======================================================================
620 // function : TextAspect
622 // =======================================================================
624 const Handle(Prs3d_TextAspect)& Prs3d_Drawer::TextAspect()
626 if (!HasOwnTextAspect())
628 if (!myLink.IsNull())
630 return myLink->TextAspect();
632 if (myTextAspect.IsNull())
634 myTextAspect = new Prs3d_TextAspect();
640 // =======================================================================
641 // function : SetTextAspect
643 // =======================================================================
645 void Prs3d_Drawer::SetTextAspect (const Handle(Prs3d_TextAspect)& theAspect)
647 myTextAspect = theAspect;
648 myHasOwnTextAspect = !myTextAspect.IsNull();
651 // =======================================================================
652 // function : ShadingAspect
654 // =======================================================================
656 const Handle(Prs3d_ShadingAspect)& Prs3d_Drawer::ShadingAspect()
658 if (!HasOwnShadingAspect())
660 if (!myLink.IsNull())
662 return myLink->ShadingAspect();
664 if (myShadingAspect.IsNull())
666 myShadingAspect = new Prs3d_ShadingAspect();
669 return myShadingAspect;
672 // =======================================================================
673 // function : SetShadingAspect
675 // =======================================================================
677 void Prs3d_Drawer::SetShadingAspect (const Handle(Prs3d_ShadingAspect)& theAspect)
679 myShadingAspect = theAspect;
680 myHasOwnShadingAspect = !myShadingAspect.IsNull();
683 // =======================================================================
684 // function : SetShadingAspectGlobal
686 // =======================================================================
688 void Prs3d_Drawer::SetShadingAspectGlobal (const Standard_Boolean theValue)
690 myHasOwnShadingAspectGlobal = Standard_True;
691 myShadingAspectGlobal = theValue;
694 // =======================================================================
695 // function : PlaneAspect
697 // =======================================================================
699 const Handle(Prs3d_PlaneAspect)& Prs3d_Drawer::PlaneAspect()
701 if (!HasOwnPlaneAspect())
703 if (!myLink.IsNull())
705 return myLink->PlaneAspect();
707 if (myPlaneAspect.IsNull())
709 myPlaneAspect = new Prs3d_PlaneAspect();
712 return myPlaneAspect;
715 // =======================================================================
716 // function : SetPlaneAspect
718 // =======================================================================
720 void Prs3d_Drawer::SetPlaneAspect (const Handle(Prs3d_PlaneAspect)& theAspect)
722 myPlaneAspect = theAspect;
723 myHasOwnPlaneAspect = !myPlaneAspect.IsNull();
726 // =======================================================================
727 // function : SeenLineAspect
729 // =======================================================================
731 const Handle(Prs3d_LineAspect)& Prs3d_Drawer::SeenLineAspect()
733 if (!HasOwnSeenLineAspect())
735 if (!myLink.IsNull())
737 return myLink->SeenLineAspect();
739 if (mySeenLineAspect.IsNull())
741 mySeenLineAspect = new Prs3d_LineAspect (Quantity_NOC_YELLOW, Aspect_TOL_SOLID, 1.0);
744 return mySeenLineAspect;
747 // =======================================================================
748 // function : SetSeenLineAspect
750 // =======================================================================
752 void Prs3d_Drawer::SetSeenLineAspect (const Handle(Prs3d_LineAspect)& theAspect)
754 mySeenLineAspect = theAspect;
755 myHasOwnSeenLineAspect = !mySeenLineAspect.IsNull();
758 // =======================================================================
759 // function : ArrowAspect
761 // =======================================================================
763 const Handle(Prs3d_ArrowAspect)& Prs3d_Drawer::ArrowAspect()
765 if (!HasOwnArrowAspect())
767 if (!myLink.IsNull())
769 return myLink->ArrowAspect();
771 if (myArrowAspect.IsNull())
773 myArrowAspect = new Prs3d_ArrowAspect();
776 return myArrowAspect;
779 // =======================================================================
780 // function : SetArrowAspect
782 // =======================================================================
784 void Prs3d_Drawer::SetArrowAspect (const Handle(Prs3d_ArrowAspect)& theAspect)
786 myArrowAspect = theAspect;
787 myHasOwnArrowAspect = !myArrowAspect.IsNull();
790 // =======================================================================
791 // function : SetLineArrowDraw
793 // =======================================================================
795 void Prs3d_Drawer::SetLineArrowDraw (const Standard_Boolean theIsEnabled)
797 myHasOwnLineArrowDraw = Standard_True;
798 myLineArrowDraw = theIsEnabled;
801 // =======================================================================
802 // function : HiddenLineAspect
804 // =======================================================================
806 const Handle(Prs3d_LineAspect)& Prs3d_Drawer::HiddenLineAspect()
808 if (!HasOwnHiddenLineAspect())
810 if (!myLink.IsNull())
812 return myLink->HiddenLineAspect();
814 if (myHiddenLineAspect.IsNull())
816 myHiddenLineAspect = new Prs3d_LineAspect (Quantity_NOC_YELLOW, Aspect_TOL_DASH, 0.5);
819 return myHiddenLineAspect;
822 // =======================================================================
823 // function : SetHiddenLineAspect
825 // =======================================================================
827 void Prs3d_Drawer::SetHiddenLineAspect (const Handle(Prs3d_LineAspect)& theAspect)
829 myHiddenLineAspect = theAspect;
830 myHasOwnHiddenLineAspect = !myHiddenLineAspect.IsNull();
833 // =======================================================================
834 // function : EnableDrawHiddenLineDraw
836 // =======================================================================
838 void Prs3d_Drawer::EnableDrawHiddenLine()
840 myHasOwnDrawHiddenLine = Standard_True;
841 myDrawHiddenLine = Standard_True;
844 // =======================================================================
845 // function : DisableDrawHiddenLine
847 // =======================================================================
849 void Prs3d_Drawer::DisableDrawHiddenLine()
851 myHasOwnDrawHiddenLine = Standard_True;
852 myDrawHiddenLine = Standard_False;
855 // =======================================================================
856 // function : VectorAspect
858 // =======================================================================
860 const Handle(Prs3d_LineAspect)& Prs3d_Drawer::VectorAspect()
862 if (!HasOwnVectorAspect())
864 if (!myLink.IsNull())
866 return myLink->VectorAspect();
868 if (myVectorAspect.IsNull())
870 myVectorAspect = new Prs3d_LineAspect (Quantity_NOC_SKYBLUE, Aspect_TOL_SOLID, 1.0);
873 return myVectorAspect;
876 // =======================================================================
877 // function : SetVectorAspect
879 // =======================================================================
881 void Prs3d_Drawer::SetVectorAspect (const Handle(Prs3d_LineAspect)& theAspect)
883 myVectorAspect = theAspect;
884 myHasOwnVectorAspect = !myVectorAspect.IsNull();
887 // =======================================================================
888 // function : SetVertexDrawMode
890 // =======================================================================
892 void Prs3d_Drawer::SetVertexDrawMode (const Prs3d_VertexDrawMode theMode)
894 // Prs3d_VDM_Inherited is default value and means
895 // that correct value should be taken from the Link if it exists.
896 myVertexDrawMode = theMode;
899 // =======================================================================
900 // function : VertexDrawMode
902 // =======================================================================
904 Prs3d_VertexDrawMode Prs3d_Drawer::VertexDrawMode()
906 if (!HasOwnVertexDrawMode())
908 if (!myLink.IsNull())
910 return myLink->VertexDrawMode();
912 // Prs3d_VDM_Isolated is default value for this setting.
913 myVertexDrawMode = Prs3d_VDM_Isolated;
915 return myVertexDrawMode;
918 // =======================================================================
919 // function : DatumAspect
921 // =======================================================================
923 const Handle(Prs3d_DatumAspect)& Prs3d_Drawer::DatumAspect()
925 if (!HasOwnDatumAspect())
927 if (!myLink.IsNull())
929 return myLink->DatumAspect();
931 if (myDatumAspect.IsNull())
933 myDatumAspect = new Prs3d_DatumAspect();
936 return myDatumAspect;
939 // =======================================================================
940 // function : SetDatumAspect
942 // =======================================================================
944 void Prs3d_Drawer::SetDatumAspect (const Handle(Prs3d_DatumAspect)& theAspect)
946 myDatumAspect = theAspect;
947 myHasOwnDatumAspect = !myDatumAspect.IsNull();
950 // =======================================================================
951 // function : SectionAspect
953 // =======================================================================
955 const Handle(Prs3d_LineAspect)& Prs3d_Drawer::SectionAspect()
957 if (!HasOwnSectionAspect())
959 if (!myLink.IsNull())
961 return myLink->SectionAspect();
963 if (mySectionAspect.IsNull())
965 mySectionAspect = new Prs3d_LineAspect (Quantity_NOC_ORANGE, Aspect_TOL_SOLID, 1.0);
968 return mySectionAspect;
971 // =======================================================================
972 // function : SetSectionAspect
974 // =======================================================================
976 void Prs3d_Drawer::SetSectionAspect (const Handle(Prs3d_LineAspect)& theAspect)
978 mySectionAspect = theAspect;
979 myHasOwnSectionAspect = !mySectionAspect.IsNull();
982 // =======================================================================
983 // function : SetSectionAspect
985 // =======================================================================
987 void Prs3d_Drawer::ClearLocalAttributes()
994 myUIsoAspect.Nullify();
995 myVIsoAspect.Nullify();
996 myFreeBoundaryAspect.Nullify();
997 myUnFreeBoundaryAspect.Nullify();
998 myFaceBoundaryAspect.Nullify();
999 myWireAspect.Nullify();
1000 myLineAspect.Nullify();
1001 myTextAspect.Nullify();
1002 myShadingAspect.Nullify();
1003 myPointAspect.Nullify();
1004 myPlaneAspect.Nullify();
1005 myArrowAspect.Nullify();
1006 myHiddenLineAspect.Nullify();
1007 mySeenLineAspect.Nullify();
1008 myVectorAspect .Nullify();
1009 myDatumAspect.Nullify();
1010 myDimensionAspect.Nullify();
1011 mySectionAspect.Nullify();
1013 myHasOwnUIsoAspect = Standard_False;
1014 myHasOwnVIsoAspect = Standard_False;
1015 myHasOwnWireAspect = Standard_False;
1016 myHasOwnPointAspect = Standard_False;
1017 myHasOwnLineAspect = Standard_False;
1018 myHasOwnTextAspect = Standard_False;
1019 myHasOwnShadingAspect = Standard_False;
1020 myHasOwnPlaneAspect = Standard_False;
1021 myHasOwnSeenLineAspect = Standard_False;
1022 myHasOwnArrowAspect = Standard_False;
1023 myHasOwnHiddenLineAspect = Standard_False;
1024 myHasOwnVectorAspect = Standard_False;
1025 myHasOwnDatumAspect = Standard_False;
1026 myHasOwnSectionAspect = Standard_False;
1027 myHasOwnFreeBoundaryAspect = Standard_False;
1028 myHasOwnUnFreeBoundaryAspect = Standard_False;
1029 myHasOwnFaceBoundaryAspect = Standard_False;
1030 myHasOwnDimensionAspect = Standard_False;
1032 myHasOwnNbPoints = Standard_False;
1033 myHasOwnMaximalParameterValue = Standard_False;
1034 myHasOwnTypeOfDeflection = Standard_False;
1035 myHasOwnChordialDeviation = Standard_False;
1036 myHasOwnDeviationCoefficient = Standard_False;
1037 myHasOwnHLRDeviationCoefficient = Standard_False;
1038 myHasOwnDeviationAngle = Standard_False;
1039 myHasOwnHLRDeviationAngle = Standard_False;
1040 myHasOwnIsoOnPlane = Standard_False;
1041 myHasOwnIsAutoTriangulated = Standard_False;
1042 myHasOwnWireDraw = Standard_False;
1043 myHasOwnShadingAspectGlobal = Standard_False;
1044 myHasOwnLineArrowDraw = Standard_False;
1045 myHasOwnDrawHiddenLine = Standard_False;
1046 myHasOwnFreeBoundaryDraw = Standard_False;
1047 myHasOwnUnFreeBoundaryDraw = Standard_False;
1048 myHasOwnFaceBoundaryDraw = Standard_False;
1049 myHasOwnDimLengthModelUnits = Standard_False;
1050 myHasOwnDimLengthDisplayUnits = Standard_False;
1051 myHasOwnDimAngleModelUnits = Standard_False;
1052 myHasOwnDimAngleDisplayUnits = Standard_False;
1054 myVertexDrawMode = Prs3d_VDM_Inherited;
1055 myTypeOfHLR = Prs3d_TOH_NotSet;