File indexing completed on 2026-09-13 09:17:36
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015 #ifndef _Prs3d_Drawer_HeaderFile
0016 #define _Prs3d_Drawer_HeaderFile
0017
0018 #include <Standard.hxx>
0019
0020 #include <Standard_Integer.hxx>
0021 #include <Aspect_TypeOfDeflection.hxx>
0022 #include <Graphic3d_GroupAspect.hxx>
0023 #include <Graphic3d_PresentationAttributes.hxx>
0024 #include <Graphic3d_ShaderProgram.hxx>
0025 #include <Standard_Real.hxx>
0026 #include <Prs3d_VertexDrawMode.hxx>
0027 #include <Prs3d_DimensionUnits.hxx>
0028 #include <Prs3d_TypeOfHLR.hxx>
0029 #include <Standard_Transient.hxx>
0030 #include <GeomAbs_Shape.hxx>
0031
0032 class Prs3d_IsoAspect;
0033 class Prs3d_LineAspect;
0034 class Prs3d_TextAspect;
0035 class Prs3d_ShadingAspect;
0036 class Prs3d_PointAspect;
0037 class Prs3d_PlaneAspect;
0038 class Prs3d_ArrowAspect;
0039 class Prs3d_DatumAspect;
0040 class Prs3d_DimensionAspect;
0041 class TCollection_AsciiString;
0042
0043
0044
0045
0046 class Prs3d_Drawer : public Graphic3d_PresentationAttributes
0047 {
0048 DEFINE_STANDARD_RTTIEXT(Prs3d_Drawer, Graphic3d_PresentationAttributes)
0049 public:
0050
0051 Standard_EXPORT Prs3d_Drawer();
0052
0053
0054 Standard_EXPORT void SetupOwnDefaults();
0055
0056
0057
0058 Standard_EXPORT void SetTypeOfDeflection(const Aspect_TypeOfDeflection theTypeOfDeflection);
0059
0060
0061
0062 Aspect_TypeOfDeflection TypeOfDeflection() const
0063 {
0064 return myHasOwnTypeOfDeflection || myLink.IsNull() ? myTypeOfDeflection
0065 : myLink->TypeOfDeflection();
0066 }
0067
0068
0069 bool HasOwnTypeOfDeflection() const { return myHasOwnTypeOfDeflection; }
0070
0071
0072 void UnsetOwnTypeOfDeflection()
0073 {
0074 myHasOwnTypeOfDeflection = false;
0075 myTypeOfDeflection = Aspect_TOD_RELATIVE;
0076 }
0077
0078
0079
0080
0081
0082
0083 void SetMaximalChordialDeviation(const double theChordialDeviation)
0084 {
0085 myChordialDeviation = theChordialDeviation;
0086 }
0087
0088
0089
0090 double MaximalChordialDeviation() const
0091 {
0092 return myChordialDeviation > 0.0
0093 ? myChordialDeviation
0094 : (!myLink.IsNull() ? myLink->MaximalChordialDeviation() : 0.0001);
0095 }
0096
0097
0098 bool HasOwnMaximalChordialDeviation() const { return myChordialDeviation > 0.0; }
0099
0100
0101 void UnsetOwnMaximalChordialDeviation() { myChordialDeviation = -1.0; }
0102
0103
0104 Standard_EXPORT void SetTypeOfHLR(const Prs3d_TypeOfHLR theTypeOfHLR);
0105
0106
0107 Standard_EXPORT Prs3d_TypeOfHLR TypeOfHLR() const;
0108
0109
0110 bool HasOwnTypeOfHLR() const { return (myTypeOfHLR != Prs3d_TOH_NotSet); }
0111
0112
0113
0114 void SetMaximalParameterValue(const double theValue) { myMaximalParameterValue = theValue; }
0115
0116
0117
0118 double MaximalParameterValue() const
0119 {
0120 return myMaximalParameterValue > 0.0
0121 ? myMaximalParameterValue
0122 : (!myLink.IsNull() ? myLink->MaximalParameterValue() : 500000.0);
0123 }
0124
0125
0126
0127 bool HasOwnMaximalParameterValue() const { return myMaximalParameterValue > 0.0; }
0128
0129
0130 void UnsetOwnMaximalParameterValue() { myMaximalParameterValue = -1.0; }
0131
0132
0133 Standard_EXPORT void SetIsoOnPlane(const bool theIsEnabled);
0134
0135
0136 bool IsoOnPlane() const
0137 {
0138 return myHasOwnIsoOnPlane || myLink.IsNull() ? myIsoOnPlane : myLink->IsoOnPlane();
0139 }
0140
0141
0142 bool HasOwnIsoOnPlane() const { return myHasOwnIsoOnPlane; }
0143
0144
0145 void UnsetOwnIsoOnPlane()
0146 {
0147 myHasOwnIsoOnPlane = false;
0148 myIsoOnPlane = false;
0149 }
0150
0151
0152 bool IsoOnTriangulation() const
0153 {
0154 return myHasOwnIsoOnTriangulation || myLink.IsNull() ? myIsoOnTriangulation
0155 : myLink->IsoOnTriangulation();
0156 }
0157
0158
0159 bool HasOwnIsoOnTriangulation() const { return myHasOwnIsoOnTriangulation; }
0160
0161
0162 void UnsetOwnIsoOnTriangulation()
0163 {
0164 myHasOwnIsoOnTriangulation = false;
0165 myIsoOnTriangulation = false;
0166 }
0167
0168
0169
0170 Standard_EXPORT void SetIsoOnTriangulation(const bool theToEnable);
0171
0172
0173 void SetDiscretisation(const int theValue) { myNbPoints = theValue; }
0174
0175
0176 int Discretisation() const
0177 {
0178 return myNbPoints != -1 ? myNbPoints : (!myLink.IsNull() ? myLink->Discretisation() : 30);
0179 }
0180
0181
0182 bool HasOwnDiscretisation() const { return myNbPoints != -1; }
0183
0184
0185 void UnsetOwnDiscretisation() { myNbPoints = -1; }
0186
0187
0188
0189
0190 Standard_EXPORT void SetDeviationCoefficient(const double theCoefficient);
0191
0192
0193
0194
0195
0196
0197
0198
0199
0200
0201
0202
0203
0204
0205
0206
0207
0208 double DeviationCoefficient() const
0209 {
0210 return myDeviationCoefficient > 0.0
0211 ? myDeviationCoefficient
0212 : (!myLink.IsNull() ? myLink->DeviationCoefficient() : 0.001);
0213 }
0214
0215
0216 void SetDeviationCoefficient() { myDeviationCoefficient = -1.0; }
0217
0218
0219
0220 bool HasOwnDeviationCoefficient() const { return myDeviationCoefficient > 0.0; }
0221
0222
0223
0224 double PreviousDeviationCoefficient() const
0225 {
0226 return HasOwnDeviationCoefficient() ? myPreviousDeviationCoefficient : 0.0;
0227 }
0228
0229
0230 void UpdatePreviousDeviationCoefficient()
0231 {
0232 if (HasOwnDeviationCoefficient())
0233 {
0234 myPreviousDeviationCoefficient = DeviationCoefficient();
0235 }
0236 }
0237
0238
0239
0240 Standard_EXPORT void SetDeviationAngle(const double theAngle);
0241
0242
0243 double DeviationAngle() const
0244 {
0245 return myDeviationAngle > 0.0
0246 ? myDeviationAngle
0247 : (!myLink.IsNull() ? myLink->DeviationAngle() : 20.0 * M_PI / 180.0);
0248 }
0249
0250
0251 void SetDeviationAngle() { myDeviationAngle = -1.0; }
0252
0253
0254
0255 bool HasOwnDeviationAngle() const { return myDeviationAngle > 0.0; }
0256
0257
0258 double PreviousDeviationAngle() const
0259 {
0260 return HasOwnDeviationAngle() ? myPreviousDeviationAngle : 0.0;
0261 }
0262
0263
0264 void UpdatePreviousDeviationAngle()
0265 {
0266 if (HasOwnDeviationAngle())
0267 {
0268 myPreviousDeviationAngle = DeviationAngle();
0269 }
0270 }
0271
0272
0273
0274
0275
0276 Standard_EXPORT void SetAutoTriangulation(const bool theIsEnabled);
0277
0278
0279 bool IsAutoTriangulation() const
0280 {
0281 return myHasOwnIsAutoTriangulated || myLink.IsNull() ? myIsAutoTriangulated
0282 : myLink->IsAutoTriangulation();
0283 }
0284
0285
0286 bool HasOwnIsAutoTriangulation() const { return myHasOwnIsAutoTriangulated; }
0287
0288
0289 void UnsetOwnIsAutoTriangulation()
0290 {
0291 myHasOwnIsAutoTriangulated = false;
0292 myIsAutoTriangulated = true;
0293 }
0294
0295
0296
0297
0298
0299
0300
0301 Standard_EXPORT const occ::handle<Prs3d_IsoAspect>& UIsoAspect() const;
0302
0303 void SetUIsoAspect(const occ::handle<Prs3d_IsoAspect>& theAspect) { myUIsoAspect = theAspect; }
0304
0305
0306
0307 bool HasOwnUIsoAspect() const { return !myUIsoAspect.IsNull(); }
0308
0309
0310
0311
0312
0313
0314
0315 Standard_EXPORT const occ::handle<Prs3d_IsoAspect>& VIsoAspect() const;
0316
0317
0318 void SetVIsoAspect(const occ::handle<Prs3d_IsoAspect>& theAspect) { myVIsoAspect = theAspect; }
0319
0320
0321
0322 bool HasOwnVIsoAspect() const { return !myVIsoAspect.IsNull(); }
0323
0324
0325
0326 Standard_EXPORT const occ::handle<Prs3d_LineAspect>& WireAspect() const;
0327
0328
0329 void SetWireAspect(const occ::handle<Prs3d_LineAspect>& theAspect) { myWireAspect = theAspect; }
0330
0331
0332
0333 bool HasOwnWireAspect() const { return !myWireAspect.IsNull(); }
0334
0335
0336 Standard_EXPORT void SetWireDraw(const bool theIsEnabled);
0337
0338
0339 bool WireDraw() const
0340 {
0341 return myHasOwnWireDraw || myLink.IsNull() ? myWireDraw : myLink->WireDraw();
0342 }
0343
0344
0345
0346 bool HasOwnWireDraw() const { return myHasOwnWireDraw; }
0347
0348
0349 void UnsetOwnWireDraw()
0350 {
0351 myHasOwnWireDraw = false;
0352 myWireDraw = true;
0353 }
0354
0355
0356
0357 Standard_EXPORT const occ::handle<Prs3d_PointAspect>& PointAspect() const;
0358
0359
0360 void SetPointAspect(const occ::handle<Prs3d_PointAspect>& theAspect)
0361 {
0362 myPointAspect = theAspect;
0363 }
0364
0365
0366
0367 bool HasOwnPointAspect() const { return !myPointAspect.IsNull(); }
0368
0369
0370
0371 Standard_EXPORT bool SetupOwnPointAspect(
0372 const occ::handle<Prs3d_Drawer>& theDefaults = occ::handle<Prs3d_Drawer>());
0373
0374
0375
0376
0377
0378
0379 Standard_EXPORT const occ::handle<Prs3d_LineAspect>& LineAspect() const;
0380
0381
0382 void SetLineAspect(const occ::handle<Prs3d_LineAspect>& theAspect) { myLineAspect = theAspect; }
0383
0384
0385
0386 bool HasOwnLineAspect() const { return !myLineAspect.IsNull(); }
0387
0388
0389
0390
0391
0392
0393
0394 Standard_EXPORT bool SetOwnLineAspects(
0395 const occ::handle<Prs3d_Drawer>& theDefaults = occ::handle<Prs3d_Drawer>());
0396
0397
0398
0399 Standard_EXPORT bool SetOwnDatumAspects(
0400 const occ::handle<Prs3d_Drawer>& theDefaults = occ::handle<Prs3d_Drawer>());
0401
0402
0403 Standard_EXPORT const occ::handle<Prs3d_TextAspect>& TextAspect() const;
0404
0405
0406 void SetTextAspect(const occ::handle<Prs3d_TextAspect>& theAspect) { myTextAspect = theAspect; }
0407
0408
0409
0410 bool HasOwnTextAspect() const { return !myTextAspect.IsNull(); }
0411
0412
0413
0414 Standard_EXPORT const occ::handle<Prs3d_ShadingAspect>& ShadingAspect() const;
0415
0416
0417 void SetShadingAspect(const occ::handle<Prs3d_ShadingAspect>& theAspect)
0418 {
0419 myShadingAspect = theAspect;
0420 }
0421
0422
0423
0424 bool HasOwnShadingAspect() const { return !myShadingAspect.IsNull(); }
0425
0426
0427
0428 Standard_EXPORT bool SetupOwnShadingAspect(
0429 const occ::handle<Prs3d_Drawer>& theDefaults = occ::handle<Prs3d_Drawer>());
0430
0431
0432
0433 Standard_EXPORT const occ::handle<Prs3d_LineAspect>& SeenLineAspect() const;
0434
0435
0436 void SetSeenLineAspect(const occ::handle<Prs3d_LineAspect>& theAspect)
0437 {
0438 mySeenLineAspect = theAspect;
0439 }
0440
0441
0442
0443 bool HasOwnSeenLineAspect() const { return !mySeenLineAspect.IsNull(); }
0444
0445
0446
0447 Standard_EXPORT const occ::handle<Prs3d_PlaneAspect>& PlaneAspect() const;
0448
0449
0450 void SetPlaneAspect(const occ::handle<Prs3d_PlaneAspect>& theAspect)
0451 {
0452 myPlaneAspect = theAspect;
0453 }
0454
0455
0456
0457 bool HasOwnPlaneAspect() const { return !myPlaneAspect.IsNull(); }
0458
0459
0460
0461 Standard_EXPORT const occ::handle<Prs3d_ArrowAspect>& ArrowAspect() const;
0462
0463
0464 void SetArrowAspect(const occ::handle<Prs3d_ArrowAspect>& theAspect)
0465 {
0466 myArrowAspect = theAspect;
0467 }
0468
0469
0470
0471 bool HasOwnArrowAspect() const { return !myArrowAspect.IsNull(); }
0472
0473
0474
0475 Standard_EXPORT void SetLineArrowDraw(const bool theIsEnabled);
0476
0477
0478
0479 bool LineArrowDraw() const
0480 {
0481 return myHasOwnLineArrowDraw || myLink.IsNull() ? myLineArrowDraw : myLink->LineArrowDraw();
0482 }
0483
0484
0485
0486 bool HasOwnLineArrowDraw() const { return myHasOwnLineArrowDraw; }
0487
0488
0489 void UnsetOwnLineArrowDraw()
0490 {
0491 myHasOwnLineArrowDraw = false;
0492 myLineArrowDraw = false;
0493 }
0494
0495
0496
0497 Standard_EXPORT const occ::handle<Prs3d_LineAspect>& HiddenLineAspect() const;
0498
0499
0500 void SetHiddenLineAspect(const occ::handle<Prs3d_LineAspect>& theAspect)
0501 {
0502 myHiddenLineAspect = theAspect;
0503 }
0504
0505
0506
0507 bool HasOwnHiddenLineAspect() const { return !myHiddenLineAspect.IsNull(); }
0508
0509
0510
0511 bool DrawHiddenLine() const
0512 {
0513 return myHasOwnDrawHiddenLine || myLink.IsNull() ? myDrawHiddenLine : myLink->DrawHiddenLine();
0514 }
0515
0516
0517 Standard_EXPORT void EnableDrawHiddenLine();
0518
0519
0520 Standard_EXPORT void DisableDrawHiddenLine();
0521
0522
0523
0524 bool HasOwnDrawHiddenLine() const { return myHasOwnDrawHiddenLine; }
0525
0526
0527
0528 void UnsetOwnDrawHiddenLine()
0529 {
0530 myHasOwnDrawHiddenLine = false;
0531 myDrawHiddenLine = false;
0532 }
0533
0534
0535
0536 Standard_EXPORT const occ::handle<Prs3d_LineAspect>& VectorAspect() const;
0537
0538
0539 void SetVectorAspect(const occ::handle<Prs3d_LineAspect>& theAspect)
0540 {
0541 myVectorAspect = theAspect;
0542 }
0543
0544
0545
0546 bool HasOwnVectorAspect() const { return !myVectorAspect.IsNull(); }
0547
0548
0549
0550
0551
0552
0553
0554 Standard_EXPORT void SetVertexDrawMode(const Prs3d_VertexDrawMode theMode);
0555
0556
0557 Standard_EXPORT Prs3d_VertexDrawMode VertexDrawMode() const;
0558
0559
0560
0561
0562 bool HasOwnVertexDrawMode() const { return (myVertexDrawMode != Prs3d_VDM_Inherited); }
0563
0564
0565
0566 Standard_EXPORT const occ::handle<Prs3d_DatumAspect>& DatumAspect() const;
0567
0568
0569 void SetDatumAspect(const occ::handle<Prs3d_DatumAspect>& theAspect)
0570 {
0571 myDatumAspect = theAspect;
0572 }
0573
0574
0575
0576 bool HasOwnDatumAspect() const { return !myDatumAspect.IsNull(); }
0577
0578
0579
0580 Standard_EXPORT const occ::handle<Prs3d_LineAspect>& SectionAspect() const;
0581
0582
0583 void SetSectionAspect(const occ::handle<Prs3d_LineAspect>& theAspect)
0584 {
0585 mySectionAspect = theAspect;
0586 }
0587
0588
0589
0590 bool HasOwnSectionAspect() const { return !mySectionAspect.IsNull(); }
0591
0592
0593
0594
0595 void SetFreeBoundaryAspect(const occ::handle<Prs3d_LineAspect>& theAspect)
0596 {
0597 myFreeBoundaryAspect = theAspect;
0598 }
0599
0600
0601
0602
0603 Standard_EXPORT const occ::handle<Prs3d_LineAspect>& FreeBoundaryAspect() const;
0604
0605
0606
0607 bool HasOwnFreeBoundaryAspect() const { return !myFreeBoundaryAspect.IsNull(); }
0608
0609
0610
0611
0612
0613
0614 Standard_EXPORT void SetFreeBoundaryDraw(const bool theIsEnabled);
0615
0616
0617
0618 bool FreeBoundaryDraw() const
0619 {
0620 return myHasOwnFreeBoundaryDraw || myLink.IsNull() ? myFreeBoundaryDraw
0621 : myLink->FreeBoundaryDraw();
0622 }
0623
0624
0625
0626 bool HasOwnFreeBoundaryDraw() const { return myHasOwnFreeBoundaryDraw; }
0627
0628
0629 void UnsetOwnFreeBoundaryDraw()
0630 {
0631 myHasOwnFreeBoundaryDraw = false;
0632 myFreeBoundaryDraw = true;
0633 }
0634
0635
0636
0637
0638 void SetUnFreeBoundaryAspect(const occ::handle<Prs3d_LineAspect>& theAspect)
0639 {
0640 myUnFreeBoundaryAspect = theAspect;
0641 }
0642
0643
0644
0645 Standard_EXPORT const occ::handle<Prs3d_LineAspect>& UnFreeBoundaryAspect() const;
0646
0647
0648
0649 bool HasOwnUnFreeBoundaryAspect() const { return !myUnFreeBoundaryAspect.IsNull(); }
0650
0651
0652
0653
0654
0655
0656 Standard_EXPORT void SetUnFreeBoundaryDraw(const bool theIsEnabled);
0657
0658
0659
0660 bool UnFreeBoundaryDraw() const
0661 {
0662 return myHasOwnUnFreeBoundaryDraw || myLink.IsNull() ? myUnFreeBoundaryDraw
0663 : myLink->UnFreeBoundaryDraw();
0664 }
0665
0666
0667
0668 bool HasOwnUnFreeBoundaryDraw() const { return myHasOwnUnFreeBoundaryDraw; }
0669
0670
0671 void UnsetOwnUnFreeBoundaryDraw()
0672 {
0673 myHasOwnUnFreeBoundaryDraw = false;
0674 myUnFreeBoundaryDraw = true;
0675 }
0676
0677
0678
0679
0680
0681 void SetFaceBoundaryAspect(const occ::handle<Prs3d_LineAspect>& theAspect)
0682 {
0683 myFaceBoundaryAspect = theAspect;
0684 }
0685
0686
0687
0688 Standard_EXPORT const occ::handle<Prs3d_LineAspect>& FaceBoundaryAspect() const;
0689
0690
0691
0692 bool HasOwnFaceBoundaryAspect() const { return !myFaceBoundaryAspect.IsNull(); }
0693
0694
0695
0696 Standard_EXPORT bool SetupOwnFaceBoundaryAspect(
0697 const occ::handle<Prs3d_Drawer>& theDefaults = occ::handle<Prs3d_Drawer>());
0698
0699
0700
0701
0702
0703 Standard_EXPORT void SetFaceBoundaryDraw(const bool theIsEnabled);
0704
0705
0706 bool FaceBoundaryDraw() const
0707 {
0708 return myHasOwnFaceBoundaryDraw || myLink.IsNull() ? myFaceBoundaryDraw
0709 : myLink->FaceBoundaryDraw();
0710 }
0711
0712
0713
0714 bool HasOwnFaceBoundaryDraw() const { return myHasOwnFaceBoundaryDraw; }
0715
0716
0717 void UnsetOwnFaceBoundaryDraw()
0718 {
0719 myHasOwnFaceBoundaryDraw = false;
0720 myFaceBoundaryDraw = false;
0721 }
0722
0723
0724
0725 bool HasOwnFaceBoundaryUpperContinuity() const { return myFaceBoundaryUpperContinuity != -1; }
0726
0727
0728 GeomAbs_Shape FaceBoundaryUpperContinuity() const
0729 {
0730 return HasOwnFaceBoundaryUpperContinuity()
0731 ? (GeomAbs_Shape)myFaceBoundaryUpperContinuity
0732 : (!myLink.IsNull() ? myLink->FaceBoundaryUpperContinuity() : GeomAbs_CN);
0733 }
0734
0735
0736 void SetFaceBoundaryUpperContinuity(GeomAbs_Shape theMostAllowedEdgeClass)
0737 {
0738 myFaceBoundaryUpperContinuity = theMostAllowedEdgeClass;
0739 }
0740
0741
0742 void UnsetFaceBoundaryUpperContinuity() { myFaceBoundaryUpperContinuity = -1; }
0743
0744
0745
0746 Standard_EXPORT const occ::handle<Prs3d_DimensionAspect>& DimensionAspect() const;
0747
0748
0749
0750
0751 void SetDimensionAspect(const occ::handle<Prs3d_DimensionAspect>& theAspect)
0752 {
0753 myDimensionAspect = theAspect;
0754 }
0755
0756
0757
0758 bool HasOwnDimensionAspect() const { return !myDimensionAspect.IsNull(); }
0759
0760
0761
0762
0763 Standard_EXPORT void SetDimLengthModelUnits(const TCollection_AsciiString& theUnits);
0764
0765
0766
0767
0768 Standard_EXPORT void SetDimAngleModelUnits(const TCollection_AsciiString& theUnits);
0769
0770
0771 const TCollection_AsciiString& DimLengthModelUnits() const
0772 {
0773 return myHasOwnDimLengthModelUnits || myLink.IsNull() ? myDimensionModelUnits.GetLengthUnits()
0774 : myLink->DimLengthModelUnits();
0775 }
0776
0777
0778 const TCollection_AsciiString& DimAngleModelUnits() const
0779 {
0780 return myHasOwnDimAngleModelUnits || myLink.IsNull() ? myDimensionModelUnits.GetAngleUnits()
0781 : myLink->DimAngleModelUnits();
0782 }
0783
0784
0785
0786 bool HasOwnDimLengthModelUnits() const { return myHasOwnDimLengthModelUnits; }
0787
0788
0789 void UnsetOwnDimLengthModelUnits()
0790 {
0791 myHasOwnDimLengthModelUnits = false;
0792 myDimensionModelUnits.SetLengthUnits("m");
0793 }
0794
0795
0796
0797 bool HasOwnDimAngleModelUnits() const { return myHasOwnDimAngleModelUnits; }
0798
0799
0800 void UnsetOwnDimAngleModelUnits()
0801 {
0802 myHasOwnDimAngleModelUnits = false;
0803 myDimensionModelUnits.SetAngleUnits("rad");
0804 }
0805
0806
0807
0808
0809 Standard_EXPORT void SetDimLengthDisplayUnits(const TCollection_AsciiString& theUnits);
0810
0811
0812
0813
0814 Standard_EXPORT void SetDimAngleDisplayUnits(const TCollection_AsciiString& theUnits);
0815
0816
0817 const TCollection_AsciiString& DimLengthDisplayUnits() const
0818 {
0819 return myHasOwnDimLengthDisplayUnits || myLink.IsNull()
0820 ? myDimensionDisplayUnits.GetLengthUnits()
0821 : myLink->DimLengthDisplayUnits();
0822 }
0823
0824
0825 const TCollection_AsciiString& DimAngleDisplayUnits() const
0826 {
0827 return myHasOwnDimAngleDisplayUnits || myLink.IsNull() ? myDimensionDisplayUnits.GetAngleUnits()
0828 : myLink->DimAngleDisplayUnits();
0829 }
0830
0831
0832
0833
0834 bool HasOwnDimLengthDisplayUnits() const { return myHasOwnDimLengthDisplayUnits; }
0835
0836
0837 void UnsetOwnDimLengthDisplayUnits()
0838 {
0839 myHasOwnDimLengthDisplayUnits = false;
0840 myDimensionDisplayUnits.SetLengthUnits("m");
0841 }
0842
0843
0844
0845
0846 bool HasOwnDimAngleDisplayUnits() const { return myHasOwnDimAngleDisplayUnits; }
0847
0848
0849 void UnsetOwnDimAngleDisplayUnits()
0850 {
0851 myHasOwnDimAngleDisplayUnits = false;
0852 myDimensionDisplayUnits.SetAngleUnits("deg");
0853 }
0854
0855 public:
0856
0857 const occ::handle<Prs3d_Drawer>& Link() const { return myLink; }
0858
0859
0860 bool HasLink() const { return !myLink.IsNull(); }
0861
0862
0863 void Link(const occ::handle<Prs3d_Drawer>& theDrawer) { SetLink(theDrawer); }
0864
0865
0866 void SetLink(const occ::handle<Prs3d_Drawer>& theDrawer) { myLink = theDrawer; }
0867
0868
0869 Standard_EXPORT void ClearLocalAttributes();
0870
0871
0872
0873
0874
0875
0876
0877
0878
0879 Standard_EXPORT bool SetShaderProgram(const occ::handle<Graphic3d_ShaderProgram>& theProgram,
0880 const Graphic3d_GroupAspect theAspect,
0881 const bool theToOverrideDefaults = false);
0882
0883
0884 Standard_EXPORT bool SetShadingModel(Graphic3d_TypeOfShadingModel theModel,
0885 bool theToOverrideDefaults = false);
0886
0887
0888 Standard_EXPORT void DumpJson(Standard_OStream& theOStream, int theDepth = -1) const override;
0889
0890 public:
0891 Standard_DEPRECATED("SetDeviationAngle() should be used instead")
0892 void SetHLRAngle(const double theAngle) { SetDeviationAngle(theAngle); }
0893
0894 Standard_DEPRECATED("DeviationAngle() should be used instead")
0895 double HLRAngle() const { return DeviationAngle(); }
0896
0897 Standard_DEPRECATED("SetDeviationAngle() should be used instead")
0898 void SetHLRAngle() { SetDeviationAngle(); }
0899
0900 Standard_DEPRECATED("HasOwnDeviationAngle() should be used instead")
0901 bool HasOwnHLRDeviationAngle() const { return HasOwnDeviationAngle(); }
0902
0903 Standard_DEPRECATED("PreviousDeviationAngle() should be used instead")
0904 double PreviousHLRDeviationAngle() const { return PreviousDeviationAngle(); }
0905
0906 protected:
0907 occ::handle<Prs3d_Drawer> myLink;
0908
0909 int myNbPoints;
0910 double myMaximalParameterValue;
0911 double myChordialDeviation;
0912 Aspect_TypeOfDeflection myTypeOfDeflection;
0913 bool myHasOwnTypeOfDeflection;
0914 Prs3d_TypeOfHLR myTypeOfHLR;
0915 double myDeviationCoefficient;
0916 double myPreviousDeviationCoefficient;
0917 double myDeviationAngle;
0918 double myPreviousDeviationAngle;
0919 bool myIsoOnPlane;
0920 bool myHasOwnIsoOnPlane;
0921 bool myIsoOnTriangulation;
0922 bool myHasOwnIsoOnTriangulation;
0923 bool myIsAutoTriangulated;
0924 bool myHasOwnIsAutoTriangulated;
0925
0926 occ::handle<Prs3d_IsoAspect> myUIsoAspect;
0927 occ::handle<Prs3d_IsoAspect> myVIsoAspect;
0928 occ::handle<Prs3d_LineAspect> myWireAspect;
0929 bool myWireDraw;
0930 bool myHasOwnWireDraw;
0931 occ::handle<Prs3d_PointAspect> myPointAspect;
0932 occ::handle<Prs3d_LineAspect> myLineAspect;
0933 occ::handle<Prs3d_TextAspect> myTextAspect;
0934 occ::handle<Prs3d_ShadingAspect> myShadingAspect;
0935 occ::handle<Prs3d_PlaneAspect> myPlaneAspect;
0936 occ::handle<Prs3d_LineAspect> mySeenLineAspect;
0937 occ::handle<Prs3d_ArrowAspect> myArrowAspect;
0938 bool myLineArrowDraw;
0939 bool myHasOwnLineArrowDraw;
0940 occ::handle<Prs3d_LineAspect> myHiddenLineAspect;
0941 bool myDrawHiddenLine;
0942 bool myHasOwnDrawHiddenLine;
0943 occ::handle<Prs3d_LineAspect> myVectorAspect;
0944 Prs3d_VertexDrawMode myVertexDrawMode;
0945 occ::handle<Prs3d_DatumAspect> myDatumAspect;
0946 occ::handle<Prs3d_LineAspect> mySectionAspect;
0947
0948 occ::handle<Prs3d_LineAspect> myFreeBoundaryAspect;
0949 bool myFreeBoundaryDraw;
0950 bool myHasOwnFreeBoundaryDraw;
0951 occ::handle<Prs3d_LineAspect> myUnFreeBoundaryAspect;
0952 bool myUnFreeBoundaryDraw;
0953 bool myHasOwnUnFreeBoundaryDraw;
0954 occ::handle<Prs3d_LineAspect> myFaceBoundaryAspect;
0955
0956 int myFaceBoundaryUpperContinuity;
0957
0958 bool myFaceBoundaryDraw;
0959 bool myHasOwnFaceBoundaryDraw;
0960
0961 occ::handle<Prs3d_DimensionAspect> myDimensionAspect;
0962 Prs3d_DimensionUnits myDimensionModelUnits;
0963 bool myHasOwnDimLengthModelUnits;
0964 bool myHasOwnDimAngleModelUnits;
0965 Prs3d_DimensionUnits myDimensionDisplayUnits;
0966 bool myHasOwnDimLengthDisplayUnits;
0967 bool myHasOwnDimAngleDisplayUnits;
0968 };
0969
0970 #endif