View Issue Details

IDProjectCategoryView StatusLast Update
0029254CommunityOCCT:Visualizationpublic2021-08-24 14:13
ReporterBenjaminBihler Assigned Tokgv  
PrioritynormalSeverityminor 
Status newResolutionopen 
PlatformWindowsOSVC++ 2015 
Product Version7.2.0 
Target Version7.7.0 
Summary0029254: [Regression to OCCT 7.1.0] Programmatically highlighting AIS_Trihedron is not possible anymore
DescriptionWhen an AIS_Trihedron is highlighted programmatically, its colour does not change to the chosen color. For other AIS objects highlighting works as expected.
Steps To ReproduceInsert the following lines into samples\qt\Tutorial\src\DocumentTut.cxx after
"emit selectionChanged();" and before "fitAll();":

Handle(AIS_Trihedron) trihedron = new AIS_Trihedron(new Geom_Axis2Placement(gp_Ax2()));
getContext()->Display(trihedron, Standard_False);
getContext()->HilightWithColor(trihedron, getContext()->HighlightStyle(), Standard_True);
getContext()->HilightWithColor(AISBottle, getContext()->HighlightStyle(), Standard_True);

The following includes have to be added:
#include <AIS_Trihedron.hxx>
#include <Geom_Axis2Placement.hxx>

When drawing the bottle, the bottle is correctly highlighted but not the trihedron. This behaviour has changed since OCCT 7.1.0.
TagsNo tags attached.
Test case number

Relationships

related to 0027958 closedbugmaster Open CASCADE Visualization, AIS_Trihedron - add shaded presentation option 
related to 0027818 closedkgv Open CASCADE Visualization - provide an interface to define highlight presentation properties 

Activities

kgv

2017-10-23 17:16

developer   ~0071719

Last edited: 2017-10-23 17:17

This is a limitation of custom highlighting API, existed long time before AIS_Trihedron modification (AIS_Trihedron::IsAutoHilight() and AIS_Trihedron::HilightSelected() are now overridden):
  //! Method which draws selected owners ( for fast presentation draw )
  virtual void HilightSelected (const Handle(PrsMgr_PresentationManager3d)& PM,
                                const SelectMgr_SequenceOfOwner& Seq);


To overcome this limitation, related API methods (e.g. SelectMgr_SelectableObject::HilightSelected()) should be modified to receive style Prs3d_Drawer as in case of Auto Hilight is turned on - see also current implementation of AIS_InteractiveContext::highlightGlobal() which just ignores passed style because HilightSelected() does not receive it:
  if (!aGlobOwner->IsAutoHilight())
  {
    SelectMgr_SequenceOfOwner aSeq;
    for (AIS_NListOfEntityOwner::Iterator aSelIter (mySelection->Objects());
         aSelIter.More(); aSelIter.Next())
    {
      if (aSelIter.Value()->IsSameSelectable (theObj))
      {
        aSeq.Append (aSelIter.Value());
      }
    }
    theObj->HilightSelected (myMainPM, aSeq); ///!<<
  }
  else
  {
    aGlobOwner->HilightWithColor (myMainPM, theStyle, aHiMode); ///!<<
  }


Issue History

Date Modified Username Field Change
2017-10-23 12:59 BenjaminBihler New Issue
2017-10-23 12:59 BenjaminBihler Assigned To => kgv
2017-10-23 13:01 kgv Relationship added related to 0027958
2017-10-23 17:08 kgv Relationship added related to 0027818
2017-10-23 17:16 kgv Note Added: 0071719
2017-10-23 17:17 kgv Note Edited: 0071719
2017-10-23 17:17 kgv Note Edited: 0071719
2019-09-04 17:50 kgv Target Version 7.4.0 => 7.5.0
2020-08-28 14:25 kgv Target Version 7.5.0 => 7.6.0
2021-08-24 14:13 kgv Target Version 7.6.0 => 7.7.0