X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FModuleBase%2FModuleBase_ResultPrs.cpp;h=2d08104de7177a6b9487db8085a198ce39d81ba4;hb=450d1bd65c11870d3942a30164518037b9a7503e;hp=f7f360422b244a5d9320c29295624c15bb5faee5;hpb=6745a491d370afafd5a741877e7931e0c60beef2;p=modules%2Fshaper.git diff --git a/src/ModuleBase/ModuleBase_ResultPrs.cpp b/src/ModuleBase/ModuleBase_ResultPrs.cpp index f7f360422..2d08104de 100755 --- a/src/ModuleBase/ModuleBase_ResultPrs.cpp +++ b/src/ModuleBase/ModuleBase_ResultPrs.cpp @@ -23,6 +23,7 @@ #include #include #include +#include #include @@ -134,8 +135,8 @@ void ModuleBase_ResultPrs::ComputeSelection(const Handle(SelectMgr_Selection)& a aDeflection, myDrawer->HLRAngle(), 9, 500); for (aSelection->Init(); aSelection->More(); aSelection->Next()) { - Handle(SelectMgr_EntityOwner) anOwner - = Handle(SelectMgr_EntityOwner)::DownCast (aSelection->Sensitive()->BaseSensitive()->OwnerId()); + Handle(SelectMgr_EntityOwner) anOwner = + Handle(SelectMgr_EntityOwner)::DownCast(aSelection->Sensitive()->BaseSensitive()->OwnerId()); anOwner->Set(this); } return; @@ -183,17 +184,25 @@ TopoDS_Shape ModuleBase_ResultPrs::getSelectionShape() const void ModuleBase_ResultPrs::HilightSelected(const Handle(PrsMgr_PresentationManager3d)& thePM, const SelectMgr_SequenceOfOwner& theOwners) { - TopoDS_Shape aShape = getSelectionShape(); - if (!aShape.IsNull()) { - Handle( Prs3d_Presentation ) aSelectionPrs = GetSelectPresentation( thePM ); - aSelectionPrs->Clear(); - - StdPrs_WFDeflectionShape::Add(aSelectionPrs, aShape, myDrawer); - - aSelectionPrs->SetDisplayPriority(9); - aSelectionPrs->Highlight(Aspect_TOHM_COLOR, aSelectionPrs->HighlightColor()); - aSelectionPrs->Display(); - thePM->Highlight(this); + Handle(SelectMgr_EntityOwner) anOwner; + Handle(ModuleBase_BRepOwner) aCompOwner; + for (int i = 1; i <= theOwners.Length(); i++) { + anOwner = theOwners.Value(i); + aCompOwner = Handle(ModuleBase_BRepOwner)::DownCast(anOwner); + if (aCompOwner.IsNull()) + anOwner->Hilight(thePM); + else { + TopoDS_Shape aShape = aCompOwner->Shape(); + Handle( Prs3d_Presentation ) aSelectionPrs = GetSelectPresentation( thePM ); + aSelectionPrs->Clear(); + + StdPrs_WFDeflectionShape::Add(aSelectionPrs, aShape, myDrawer); + + aSelectionPrs->SetDisplayPriority(9); + aSelectionPrs->Highlight(Aspect_TOHM_COLOR, aSelectionPrs->HighlightColor()); + aSelectionPrs->Display(); + thePM->Highlight(this); + } } } @@ -201,7 +210,11 @@ void ModuleBase_ResultPrs::HilightOwnerWithColor(const Handle(PrsMgr_Presentatio const Quantity_NameOfColor theColor, const Handle(SelectMgr_EntityOwner)& theOwner) { - TopoDS_Shape aShape = getSelectionShape(); + Handle(StdSelect_BRepOwner) aOwner = Handle(StdSelect_BRepOwner)::DownCast(theOwner); + if (aOwner.IsNull()) + return; + + TopoDS_Shape aShape = aOwner->Shape(); if (!aShape.IsNull()) { thePM->Color(this, theColor);