1 // Created on: 1998-09-30
2 // Created by: Sergey RUIN
3 // Copyright (c) 1998-1999 Matra Datavision
4 // Copyright (c) 1999-2014 OPEN CASCADE SAS
6 // This file is part of Open CASCADE Technology software library.
8 // This library is free software; you can redistribute it and/or modify it under
9 // the terms of the GNU Lesser General Public License version 2.1 as published
10 // by the Free Software Foundation, with special exception defined in the file
11 // OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
12 // distribution for complete text of the license and disclaimer of any warranty.
14 // Alternatively, this file may be used under the terms of Open CASCADE
15 // commercial license or contractual agreement.
18 #include <AIS_InteractiveContext.hxx>
19 #include <AIS_InteractiveObject.hxx>
20 #include <Standard_GUID.hxx>
21 #include <Standard_NullObject.hxx>
22 #include <Standard_NoMoreObject.hxx>
23 #include <TCollection_ExtendedString.hxx>
24 #include <TDF_Attribute.hxx>
25 #include <TDF_AttributeDelta.hxx>
26 #include <TDF_DefaultDeltaOnModification.hxx>
27 #include <TDF_DefaultDeltaOnRemoval.hxx>
28 #include <TDF_DeltaOnAddition.hxx>
29 #include <TDF_Label.hxx>
30 #include <TDF_RelocationTable.hxx>
31 #include <TDF_Tool.hxx>
32 #include <TPrsStd_AISPresentation.hxx>
33 #include <TColStd_ListOfInteger.hxx>
34 #include <TColStd_ListIteratorOfListOfInteger.hxx>
35 #include <TDataXtd_Presentation.hxx>
36 #include <TPrsStd_AISViewer.hxx>
37 #include <TPrsStd_Driver.hxx>
38 #include <TPrsStd_DriverTable.hxx>
40 IMPLEMENT_STANDARD_RTTIEXT(TPrsStd_AISPresentation,TDF_Attribute)
42 #define NO_MORE_OBJECT "TPrsStd_AISPresentation has no associated TDataXtd_PresentationData"
44 //=======================================================================
45 //function : TPrsStd_AISPresentation
46 //purpose : Constructor
47 //=======================================================================
48 TPrsStd_AISPresentation::TPrsStd_AISPresentation ()
53 //=======================================================================
56 //=======================================================================
57 Handle(TPrsStd_AISPresentation) TPrsStd_AISPresentation::Set
58 ( const TDF_Label& theLabel, const Standard_GUID& theDriver )
60 Handle(TPrsStd_AISPresentation) aPresentation;
61 // create associated data (unless already there)
62 Handle(TDataXtd_Presentation) aData = TDataXtd_Presentation::Set (theLabel, theDriver);
64 throw Standard_NoMoreObject(NO_MORE_OBJECT);
65 if ( !theLabel.FindAttribute(TPrsStd_AISPresentation::GetID(), aPresentation) )
67 aPresentation = new TPrsStd_AISPresentation();
68 theLabel.AddAttribute(aPresentation);
74 //=======================================================================
77 //=======================================================================
78 Handle(TPrsStd_AISPresentation) TPrsStd_AISPresentation::Set(const Handle(TDF_Attribute)& theMaster)
80 return TPrsStd_AISPresentation::Set(theMaster->Label(), theMaster->ID());
83 //=======================================================================
86 //=======================================================================
87 void TPrsStd_AISPresentation::Unset (const TDF_Label& theLabel)
89 Handle(TPrsStd_AISPresentation) aPresentation;
90 if ( theLabel.FindAttribute(TPrsStd_AISPresentation::GetID(), aPresentation) )
91 theLabel.ForgetAttribute(aPresentation);
93 // remove associated data
94 TDataXtd_Presentation::Unset (theLabel);
97 //=======================================================================
100 //=======================================================================
101 Handle(TDataXtd_Presentation) TPrsStd_AISPresentation::getData () const
103 Handle(TDataXtd_Presentation) aData;
104 if (!Label().FindAttribute(TDataXtd_Presentation::GetID(), aData))
105 throw Standard_NoMoreObject(NO_MORE_OBJECT);
109 //=======================================================================
112 //=======================================================================
113 const Standard_GUID& TPrsStd_AISPresentation::GetID()
115 static Standard_GUID TPrsStd_AISPresentationID("3680ac6c-47ae-4366-bb94-26abb6e07341");
116 return TPrsStd_AISPresentationID;
119 //=======================================================================
122 //=======================================================================
123 void TPrsStd_AISPresentation::Display(const Standard_Boolean theIsUpdate)
125 if ( theIsUpdate || myAIS.IsNull() )
131 //=======================================================================
134 //=======================================================================
135 void TPrsStd_AISPresentation::Erase(const Standard_Boolean theIsRemove)
139 AISErase(theIsRemove);
143 //=======================================================================
146 //=======================================================================
147 void TPrsStd_AISPresentation::Update()
152 //=======================================================================
153 //function : IsDisplayed
155 //=======================================================================
156 Standard_Boolean TPrsStd_AISPresentation::IsDisplayed() const
158 return getData()->IsDisplayed();
161 //=======================================================================
162 //function : SetDisplayed
164 //=======================================================================
165 void TPrsStd_AISPresentation::SetDisplayed(const Standard_Boolean theIsDisplayed)
167 // this method can be called by AISUpdate() in the process of removal,
168 // while data attribute may be already removed
170 getData()->SetDisplayed(theIsDisplayed);
173 //=======================================================================
174 //function :SetDriverGUID
176 //=======================================================================
177 void TPrsStd_AISPresentation::SetDriverGUID(const Standard_GUID& theGUID)
180 getData()->SetDriverGUID (theGUID);
183 //=======================================================================
184 //function :GetDriverGUID
186 //=======================================================================
187 Standard_GUID TPrsStd_AISPresentation::GetDriverGUID() const
189 return getData()->GetDriverGUID();
192 //=======================================================================
195 //=======================================================================
196 Graphic3d_NameOfMaterial TPrsStd_AISPresentation::Material() const
198 return (Graphic3d_NameOfMaterial)getData()->MaterialIndex();
201 //=======================================================================
202 //function :HasMaterial
204 //=======================================================================
205 Standard_Boolean TPrsStd_AISPresentation::HasOwnMaterial() const
207 return getData()->HasOwnMaterial();
210 //=======================================================================
211 //function : UnsetMaterial
213 //=======================================================================
214 void TPrsStd_AISPresentation::UnsetMaterial()
216 if ( !getData()->HasOwnMaterial() && !myAIS.IsNull() && !myAIS->HasMaterial() )
219 getData()->UnsetMaterial();
221 if ( myAIS.IsNull() )
224 if ( !myAIS.IsNull() && myAIS->HasMaterial() )
226 Handle(AIS_InteractiveContext) aContext = getAISContext();
228 if ( !aContext.IsNull() )
229 aContext->UnsetMaterial(myAIS, Standard_False);
231 myAIS->UnsetMaterial();
236 //=======================================================================
237 //function : SetMaterial
239 //=======================================================================
240 void TPrsStd_AISPresentation::SetMaterial(const Graphic3d_NameOfMaterial theName)
243 if ( getData()->HasOwnMode() && getData()->MaterialIndex() == theName )
244 if ( !myAIS.IsNull() && myAIS->HasMaterial() && myAIS->Material() == theName )
247 getData()->SetMaterialIndex(theName);
249 if ( myAIS.IsNull() )
252 if ( !myAIS.IsNull() )
254 if ( myAIS->HasMaterial() && myAIS->Material() == theName )
255 return; // AIS has already had that material
257 Handle(AIS_InteractiveContext) aContext = getAISContext();
259 if ( !aContext.IsNull() )
260 aContext->SetMaterial(myAIS, theName, Standard_False);
262 myAIS->SetMaterial(theName);
266 //=======================================================================
267 //function :Transparency
269 //=======================================================================
270 Standard_Real TPrsStd_AISPresentation::Transparency() const
272 return getData()->Transparency();
275 //=======================================================================
276 //function :SetTransparency
278 //=======================================================================
279 void TPrsStd_AISPresentation::SetTransparency(const Standard_Real theValue)
282 if (getData()->HasOwnTransparency() && getData()->Transparency() == theValue)
283 if ( !myAIS.IsNull() && myAIS->Transparency() == theValue )
286 getData()->SetTransparency(theValue);
288 if ( myAIS.IsNull() )
291 if ( !myAIS.IsNull() )
293 if ( myAIS->Transparency() == theValue )
294 return; // AIS has already had that transparency
296 Handle(AIS_InteractiveContext) aContext = getAISContext();
298 if ( !aContext.IsNull() )
299 aContext->SetTransparency(myAIS, theValue, Standard_False);
301 myAIS->SetTransparency(theValue);
305 //=======================================================================
306 //function :UnsetTransparency
308 //=======================================================================
309 void TPrsStd_AISPresentation::UnsetTransparency()
311 if (!getData()->HasOwnTransparency())
314 getData()->UnsetTransparency();
316 if ( myAIS.IsNull() )
319 if ( !myAIS.IsNull() )
321 Handle(AIS_InteractiveContext) aContext = getAISContext();
323 if( !aContext.IsNull() )
324 aContext->UnsetTransparency(myAIS, Standard_False);
326 myAIS->UnsetTransparency();
330 //=======================================================================
331 //function : HasTransparency
333 //=======================================================================
334 Standard_Boolean TPrsStd_AISPresentation::HasOwnTransparency() const
336 return getData()->HasOwnTransparency();
339 //=======================================================================
342 //=======================================================================
343 Quantity_NameOfColor TPrsStd_AISPresentation::Color() const
345 return getData()->Color();
348 //=======================================================================
349 //function : HasOwnColor
351 //=======================================================================
352 Standard_Boolean TPrsStd_AISPresentation::HasOwnColor() const
354 return getData()->HasOwnColor();
357 //=======================================================================
358 //function : UnsetColor
360 //=======================================================================
361 void TPrsStd_AISPresentation::UnsetColor()
363 if (!getData()->HasOwnColor() && ! myAIS.IsNull() && !myAIS->HasColor())
365 getData()->UnsetColor();
367 if ( myAIS.IsNull() )
370 if ( !myAIS.IsNull() && myAIS->HasColor() )
372 Handle(AIS_InteractiveContext) aContext = getAISContext();
374 if ( !aContext.IsNull() )
375 aContext->UnsetColor(myAIS, Standard_False);
381 //=======================================================================
382 //function : SetColor
384 //=======================================================================
385 void TPrsStd_AISPresentation::SetColor(const Quantity_NameOfColor theColor)
388 if ( getData()->HasOwnColor() && getData()->Color() == theColor )
390 if (!myAIS.IsNull() && myAIS->HasColor())
392 Quantity_Color aColor;
393 myAIS->Color (aColor);
394 if (aColor.Name() == theColor)
401 getData()->SetColor(theColor);
403 if ( myAIS.IsNull() )
406 if ( !myAIS.IsNull() )
408 if (myAIS->HasColor())
410 Quantity_Color aColor;
411 myAIS->Color (aColor);
412 if (aColor.Name() == theColor)
414 return; // AIS has already had that color
418 Handle(AIS_InteractiveContext) aContext = getAISContext();
420 if( !aContext.IsNull() )
421 aContext->SetColor(myAIS, theColor, Standard_False);
423 myAIS->SetColor(theColor);
427 //=======================================================================
430 //=======================================================================
431 Standard_Real TPrsStd_AISPresentation::Width() const
433 return getData()->Width();
436 //=======================================================================
437 //function : HasWidth
439 //=======================================================================
440 Standard_Boolean TPrsStd_AISPresentation::HasOwnWidth() const
442 return getData()->HasOwnWidth();
445 //=======================================================================
446 //function : SetWidth
448 //=======================================================================
449 void TPrsStd_AISPresentation::SetWidth(const Standard_Real theWidth)
452 if ( getData()->HasOwnWidth() && getData()->Width() == theWidth )
453 if ( !myAIS.IsNull() && myAIS->HasWidth() && myAIS->Width() == theWidth )
456 getData()->SetWidth(theWidth);
458 if( !myAIS.IsNull() )
460 if ( myAIS->HasWidth() && myAIS->Width() == theWidth )
461 return; // AIS has already had that width
463 Handle(AIS_InteractiveContext) aContext = getAISContext();
465 if( !aContext.IsNull() )
466 aContext->SetWidth(myAIS, theWidth, Standard_False);
468 myAIS->SetWidth(theWidth);
472 //=======================================================================
473 //function : UnsetWidth
475 //=======================================================================
476 void TPrsStd_AISPresentation::UnsetWidth()
478 if ( !getData()->HasOwnWidth() )
479 if ( !myAIS.IsNull() && !myAIS->HasWidth() )
482 getData()->UnsetWidth();
487 if ( !myAIS.IsNull() && myAIS->HasWidth() )
489 Handle(AIS_InteractiveContext) aContext = getAISContext();
491 if ( !aContext.IsNull() )
492 aContext->UnsetWidth(myAIS, Standard_False);
498 //=======================================================================
501 //=======================================================================
502 Standard_Integer TPrsStd_AISPresentation::Mode() const
504 return getData()->Mode();
507 //=======================================================================
508 //function : HasOwnMode
510 //=======================================================================
511 Standard_Boolean TPrsStd_AISPresentation::HasOwnMode() const
513 return getData()->HasOwnMode();
516 //=======================================================================
519 //=======================================================================
520 void TPrsStd_AISPresentation::SetMode(const Standard_Integer theMode)
523 if ( getData()->HasOwnMode() && getData()->Mode() == theMode )
524 if ( !myAIS.IsNull() && myAIS->DisplayMode() == theMode )
527 getData()->SetMode(theMode);
529 if ( myAIS.IsNull() )
532 if ( !myAIS.IsNull() )
534 if ( myAIS->DisplayMode() == theMode )
535 return; // AIS has already had that mode
537 Handle(AIS_InteractiveContext) aContext = getAISContext();
539 if( !aContext.IsNull() )
540 aContext->SetDisplayMode(myAIS, theMode, Standard_False);
542 myAIS->SetDisplayMode(theMode);
546 //=======================================================================
547 //function : UnsetMode
549 //=======================================================================
550 void TPrsStd_AISPresentation::UnsetMode()
552 if ( !getData()->HasOwnMode() )
553 if ( !myAIS.IsNull() && !myAIS->HasDisplayMode() )
556 getData()->UnsetMode();
558 if ( myAIS.IsNull() )
561 if( !myAIS.IsNull() && myAIS->HasDisplayMode() )
563 Handle(AIS_InteractiveContext) aContext = getAISContext();
565 if ( !aContext.IsNull() )
566 aContext->UnsetDisplayMode(myAIS, Standard_False);
568 myAIS->UnsetDisplayMode();
572 //=======================================================================
573 //function : SelectionMode
575 //=======================================================================
576 Standard_Integer TPrsStd_AISPresentation::SelectionMode() const
578 return getData()->SelectionMode();
581 //=======================================================================
582 //function : HasOwnSelectionMode
584 //=======================================================================
585 Standard_Boolean TPrsStd_AISPresentation::HasOwnSelectionMode() const
587 return getData()->HasOwnSelectionMode();
590 //=======================================================================
591 //function : SetSelectionMode
593 //=======================================================================
594 void TPrsStd_AISPresentation::SetSelectionMode(const Standard_Integer theSelectionMode)
597 getData()->SetSelectionMode (theSelectionMode);
601 //=======================================================================
602 //function : UnsetSelectionMode
604 //=======================================================================
605 void TPrsStd_AISPresentation::UnsetSelectionMode()
607 getData()->UnsetSelectionMode ();
611 //=======================================================================
614 //=======================================================================
615 const Standard_GUID& TPrsStd_AISPresentation::ID() const
620 //=======================================================================
621 //function : BackupCopy
623 //=======================================================================
624 Handle(TDF_Attribute) TPrsStd_AISPresentation::BackupCopy() const
626 return new TPrsStd_AISPresentation;
630 //=======================================================================
631 //function : NewEmpty
633 //=======================================================================
634 Handle(TDF_Attribute) TPrsStd_AISPresentation::NewEmpty() const
636 return new TPrsStd_AISPresentation();
639 //=======================================================================
642 //=======================================================================
643 void TPrsStd_AISPresentation::Restore(const Handle(TDF_Attribute)& /*theWith*/)
648 //=======================================================================
651 //=======================================================================
652 void TPrsStd_AISPresentation::Paste (const Handle(TDF_Attribute)& theInto,
653 const Handle(TDF_RelocationTable)& ) const
655 Handle(TPrsStd_AISPresentation) anInto =
656 Handle(TPrsStd_AISPresentation)::DownCast(theInto);
659 if (!anInto->myAIS.IsNull())
661 // Save displayed flag.
662 Standard_Boolean displayed = anInto->IsDisplayed();
663 // Erase the interactive object.
664 anInto->AISErase(Standard_True);
665 // Restore the displayed flag.
667 anInto->SetDisplayed(displayed);
669 // Nullify the interactive object.
670 // It will be restored on the next call to AISUpdate().
671 anInto->myAIS.Nullify();
674 //=======================================================================
675 //function : AfterAddition
676 //purpose : erase if displayed
677 //=======================================================================
678 void TPrsStd_AISPresentation::AfterAddition()
683 //=======================================================================
684 //function : BeforeRemoval
685 //purpose : erase if displayed
686 //=======================================================================
687 void TPrsStd_AISPresentation::BeforeRemoval()
692 //=======================================================================
693 //function : BeforeForget
694 //purpose : erase if displayed
695 //=======================================================================
696 void TPrsStd_AISPresentation::BeforeForget()
698 if ( !myAIS.IsNull() )
699 { // Remove AISObject from context.
700 AISErase(Standard_True);
705 //=======================================================================
706 //function : AfterResume
707 //purpose : display if displayed
708 //=======================================================================
709 void TPrsStd_AISPresentation::AfterResume()
718 //=======================================================================
719 //function : BeforeUndo
720 //purpose : le NamedShape associe doit etre present
721 //=======================================================================
722 Standard_Boolean TPrsStd_AISPresentation::BeforeUndo (const Handle(TDF_AttributeDelta)& AD,
723 const Standard_Boolean )
725 Handle(TPrsStd_AISPresentation) P;
726 AD->Label().FindAttribute(TPrsStd_AISPresentation::GetID(), P);
728 if (AD->IsKind(STANDARD_TYPE(TDF_DeltaOnAddition)))
733 else if (AD->IsKind(STANDARD_TYPE(TDF_DefaultDeltaOnRemoval))) {
735 else if (AD->IsKind(STANDARD_TYPE(TDF_DefaultDeltaOnModification)))
741 return Standard_True;
744 //=======================================================================
745 //function : AfterUndo
746 //purpose : le NamedShape associe doit etre present
747 //=======================================================================
748 Standard_Boolean TPrsStd_AISPresentation::AfterUndo (const Handle(TDF_AttributeDelta)& AD,
749 const Standard_Boolean )
751 Handle(TPrsStd_AISPresentation) P;
752 AD->Label().FindAttribute(TPrsStd_AISPresentation::GetID(), P);
754 if (AD->IsKind(STANDARD_TYPE(TDF_DeltaOnAddition)))
756 else if (AD->IsKind(STANDARD_TYPE(TDF_DefaultDeltaOnRemoval)))
761 else if (AD->IsKind(STANDARD_TYPE(TDF_DefaultDeltaOnModification)))
767 return Standard_True;
770 //=======================================================================
771 //function : AISUpdate
773 //=======================================================================
774 void TPrsStd_AISPresentation::AISUpdate()
778 Handle(AIS_InteractiveContext) aContext;
779 if ( !Label().IsNull() )
781 aContext = getAISContext();
783 Handle(TPrsStd_Driver) aDriver;
784 if ( TPrsStd_DriverTable::Get()->FindDriver(GetDriverGUID(), aDriver) )
787 if ( myAIS.IsNull() )
789 Handle(AIS_InteractiveObject) aNewObj;
790 if ( aDriver->Update(Label(), aNewObj) )
793 aNewObj->SetOwner(this);
798 Handle(AIS_InteractiveObject) anObj = myAIS;
799 if ( aDriver->Update(Label(), anObj) )
800 if ( !(anObj == myAIS) )
802 if ( !aContext.IsNull() )
803 aContext->Remove (myAIS, Standard_True);
805 // Driver has built new AIS.
807 anObj->SetOwner(this);
814 // Apply the visualization settings.
815 if ( !myAIS.IsNull() )
819 Quantity_NameOfColor aColor = Color();
820 Quantity_Color aPrsColor;
821 myAIS->Color (aPrsColor);
822 if ( !(myAIS->HasColor()) || (myAIS->HasColor() && aPrsColor.Name() != aColor) )
824 if ( !aContext.IsNull() )
825 aContext->SetColor(myAIS, aColor, Standard_False);
827 myAIS->SetColor(aColor);
831 if ( HasOwnMaterial() )
833 Graphic3d_NameOfMaterial aMaterial = Material();
834 if ( !(myAIS->HasMaterial()) || (myAIS->HasMaterial() && myAIS->Material() != aMaterial) )
836 if ( !aContext.IsNull() )
837 aContext->SetMaterial(myAIS, aMaterial, Standard_False );
839 myAIS->SetMaterial(aMaterial);
843 if ( HasOwnTransparency() )
845 const Standard_Real aTransparency = Transparency();
846 if ( myAIS->Transparency() != aTransparency )
848 if( !aContext.IsNull() )
849 aContext->SetTransparency(myAIS, aTransparency, Standard_False);
851 myAIS->SetTransparency(aTransparency);
857 const Standard_Real aWidth = Width();
858 if ( !(myAIS->HasWidth()) || (myAIS->HasWidth() && myAIS->Width() != aWidth) )
860 if ( !aContext.IsNull() )
861 aContext->SetWidth(myAIS, aWidth, Standard_False);
863 myAIS->SetWidth(aWidth);
869 const Standard_Integer aMode = Mode();
870 if ( myAIS->DisplayMode() != aMode )
871 myAIS->SetDisplayMode(aMode);
874 if ( !aContext.IsNull() && IsDisplayed() )
875 aContext->Redisplay(myAIS, Standard_False);
877 if (HasOwnSelectionMode()) {
878 if (!aContext.IsNull())
880 TColStd_ListOfInteger anActivatedModes;
881 aContext->ActivatedModes (myAIS, anActivatedModes);
882 Standard_Boolean isActivated = Standard_False;
883 Standard_Integer aSelectionMode = SelectionMode();
884 if (aSelectionMode == -1)
886 aContext->Deactivate(myAIS);
890 for (TColStd_ListIteratorOfListOfInteger aModeIter (anActivatedModes); aModeIter.More(); aModeIter.Next())
892 if (aModeIter.Value() == aSelectionMode)
894 isActivated = Standard_True;
899 aContext->Activate (myAIS, aSelectionMode, Standard_False);
906 if (IsDisplayed() && !aContext.IsNull())
907 aContext->Redisplay(myAIS, Standard_False);
910 //=======================================================================
911 //function : AISDisplay
913 //=======================================================================
914 void TPrsStd_AISPresentation::AISDisplay()
916 if ( !Label().IsNull() )
918 Handle(AIS_InteractiveContext) aContext = getAISContext();
920 if ( aContext.IsNull() )
923 if ( !myAIS.IsNull() )
925 if ( !(myAIS->GetContext()).IsNull() && (myAIS->GetContext()) != aContext )
926 myAIS->GetContext()->Remove (myAIS, Standard_False);
928 if ( IsDisplayed() && aContext->IsDisplayed(myAIS) )
931 aContext->Display(myAIS, Standard_False);
933 if ( aContext->IsDisplayed(myAIS) )
934 SetDisplayed(Standard_True);
939 //=======================================================================
940 //function : AISErase
942 //=======================================================================
943 void TPrsStd_AISPresentation::AISErase(const Standard_Boolean theIsRemove)
945 Handle(AIS_InteractiveContext) aContext, anOwnContext;
947 if ( !myAIS.IsNull() )
950 if ( !Label().IsNull() )
952 if (IsAttribute(TDataXtd_Presentation::GetID()))
953 SetDisplayed(Standard_False);
955 Handle(TPrsStd_AISViewer) viewer;
956 if( !TPrsStd_AISViewer::Find(Label(), viewer) )
958 anOwnContext = myAIS->GetContext();
959 aContext = viewer->GetInteractiveContext();
963 if ( !aContext.IsNull() )
964 aContext->Remove(myAIS, Standard_False);
965 if ( !anOwnContext.IsNull() && anOwnContext != aContext )
966 anOwnContext->Remove(myAIS, Standard_False);
968 myAIS->SetToUpdate();
972 if ( !aContext.IsNull() )
973 aContext->Erase(myAIS, Standard_False);
974 if ( !anOwnContext.IsNull() && anOwnContext != aContext )
975 anOwnContext->Erase(myAIS, Standard_False);
982 if ( !anOwnContext.IsNull() )
984 anOwnContext->Remove(myAIS, Standard_False);
985 myAIS->SetToUpdate();
989 if( !anOwnContext.IsNull() )
990 anOwnContext->Erase(myAIS, Standard_False);
995 //=======================================================================
998 //=======================================================================
999 Handle(AIS_InteractiveObject) TPrsStd_AISPresentation::GetAIS() const
1004 //=======================================================================
1005 //function : getAISContext
1007 //=======================================================================
1008 Handle(AIS_InteractiveContext) TPrsStd_AISPresentation::getAISContext() const
1010 Handle(TPrsStd_AISViewer) aViewer;
1011 if ( TPrsStd_AISViewer::Find(Label(), aViewer) )
1012 return aViewer->GetInteractiveContext();
1014 return Handle_AIS_InteractiveContext();