View Issue Details

IDProjectCategoryView StatusLast Update
0030737Open CASCADEOCCT:Visualizationpublic2021-12-17 18:41
Reporternds Assigned Tobugmaster  
PrioritynormalSeverityfeature 
Status closedResolutionfixed 
Target Version7.6.0Fixed in Version7.6.0 
Summary0030737: Visualization - implementing new selection schemes in context
DescriptionIt is proposed to be able to arrange selection behavior of context by additional parameters.

Some applications would like to have another result after using OCCT selection methods of AIS_InteractiveContext, for example:
Select - work as switcher (select not selected object, deselect object if it was selected),
ShifSelect - always have added picked objects in the current selection.

The current behavior:
Select - clears all selected objects and set selected all picked objects,
ShiftSelect - deselect selected objects and select objects that were not selected

Also, it would be great if it is possible to change current selection scheme of context in a custom application or, even, implement own scheme.
TagsNo tags attached.
Test case numberNot required

Attached Files

  • selection_schemes_user_guide.png (66,784 bytes)

Relationships

parent of 0031779 closedbugmaster Open CASCADE Visualization, AIS_ViewController - controller should handle selection schemes 
parent of 0032205 closedbugmaster Open CASCADE Visualization - implementing new selection scheme in context - replace extra 

Activities

git

2019-05-23 19:59

administrator   ~0084586

Branch CR30737 has been created by nds.

SHA-1: a39cf654dc6932266c7506742ec70bdbd4f5e5a4


Detailed log of new commits:

Author: nds
Date: Thu May 23 19:58:59 2019 +0300

    0030737: Visualization - implementing new selection schemes in context

git

2019-05-24 09:31

administrator   ~0084590

Branch CR30737 has been updated by nds.

SHA-1: ed1636ad760ab752801557d78ce9ae74e78dd05b


Detailed log of new commits:

Author: nds
Date: Fri May 24 09:31:04 2019 +0300

    0030737: Visualization - implementing new selection schemes in context

nds

2019-05-24 13:38

developer   ~0084603

Dear Kirill,

what is your opinion about proposed parameters in integration?

kgv

2019-05-24 14:32

developer   ~0084604

+  AIS_SelectionScheme SelectionScheme (const AIS_SelectionType theType) const
+  { return mySelectionSchemes.Find (theType); }
+

Is it really useful storing an active selection scheme within AIS_InteractiveContext?
I would expect it being a parameters of Select() method, so that ShiftSelect() will redirect to Select() with XOR scheme.

git

2019-05-27 11:35

administrator   ~0084656

Branch CR30737 has been updated by nds.

SHA-1: af73c57320c6775b87bcf5823a61eeff266ec40a


Detailed log of new commits:

Author: nds
Date: Mon May 27 11:35:02 2019 +0300

    0030737: Visualization - implementing new selection schemes in context
    
    #provide selection scheme by parameter

git

2019-06-04 22:43

administrator   ~0084832

Branch CR30737_1 has been created by nds.

SHA-1: f4b4cd1facd4d2449712df28fd3c2b5f37e0776b


Detailed log of new commits:

Author: nds
Date: Tue Jun 4 22:42:34 2019 +0300

    0030737: Visualization - implementing new selection schemes in context

git

2019-06-04 22:55

administrator   ~0084833

Branch CR30737_1 has been updated by nds.

SHA-1: 91f31b0a042c20e6db2cb038eeeeb7f3200dba52


Detailed log of new commits:

Author: nds
Date: Tue Jun 4 22:55:04 2019 +0300

    0030725: Visualization - remove Display calling from SetSelected methods of context
    
    #minor compilation correction

git

2019-06-04 23:32

administrator   ~0084836

Branch CR30737_2 has been created by nds.

SHA-1: 6202e5c34d996321cc424059a1e496c440437d1d


Detailed log of new commits:

Author: nds
Date: Tue Jun 4 23:32:19 2019 +0300

    0030725: Visualization - remove Display calling from SetSelected methods of context

git

2019-08-20 15:19

administrator   ~0086369

Branch CR30737_3 has been created by nds.

SHA-1: 951d93f193cdc00724586df1903ad39fc487cecd


Detailed log of new commits:

Author: nds
Date: Tue Aug 20 15:16:34 2019 +0300

    0030737: Visualization - implementing new selection schemes in context

git

2020-02-13 00:21

administrator   ~0090502

Branch CR30737_4 has been created by nds.

SHA-1: cab8402295d7849517132679b269e626b56b0932


Detailed log of new commits:

Author: nds
Date: Tue Aug 20 15:16:34 2019 +0300

    0030737: Visualization - implementing new selection schemes in context
    
    (cherry picked from commit 951d93f193cdc00724586df1903ad39fc487cecd)

git

2020-06-05 20:51

administrator   ~0092495

Branch CR30737_5 has been created by nds.

SHA-1: 246cdc4da230a68dd93b52e8d0ee2758a2645d20


Detailed log of new commits:

Author: nds
Date: Tue Aug 20 15:16:34 2019 +0300

    0030737: Visualization - implementing new selection schemes in context
    
    (cherry picked from commit 8ac88685123f50caef2b53010da626b4682d9bd4)
    (cherry picked from commit 86ba800ae833ecaa0f4e76a08b6b4821ca3d19cc)

git

2020-06-25 04:46

administrator   ~0092708

Branch CR30737_6 has been created by nds.

SHA-1: df71d84b0713df731c1582e8ec72d319fc40628d


Detailed log of new commits:

Author: nds
Date: Tue Aug 20 15:16:34 2019 +0300

    0030737: Visualization - implementing new selection schemes in context
    
    (cherry picked from commit 8ac88685123f50caef2b53010da626b4682d9bd4)
    (cherry picked from commit 86ba800ae833ecaa0f4e76a08b6b4821ca3d19cc)
    (cherry picked from commit ab4135ad2f3846c9d81706e84eae105329a97131)

git

2020-09-05 09:58

administrator   ~0094043

Branch CR30737_7 has been created by nds.

SHA-1: c440c19910ee972c3f3ab10eb7a2587d6753d8af


Detailed log of new commits:

Author: nds
Date: Sat Sep 5 10:01:10 2020 +0300

    using Select with defined selection scheme in needed places.

Author: nds
Date: Tue Aug 20 15:16:34 2019 +0300

    0030737: Visualization - implementing new selection schemes in context
    
    (cherry picked from commit 8ac88685123f50caef2b53010da626b4682d9bd4)

git

2020-09-05 10:06

administrator   ~0094044

Branch CR30737_8 has been created by nds.

SHA-1: 12d0eabea571958af16d1c19db258c0a644e040e


Detailed log of new commits:

Author: nds
Date: Sat Sep 5 10:08:53 2020 +0300

    0030737: Visualization - implementing new selection schemes in context
    
    AIS_SelectionScheme enumeration is defined to set which selection behaviour is used in Select of context
    AIS_InteractiveContext is corrected to use single Select method instead of combination of Select/ShiftSelect methods with a selection scheme parameter.

git

2020-09-08 13:13

administrator   ~0094245

Branch CR30737_8 has been updated forcibly by nds.

SHA-1: 5bc14e8d743a7421ecdf6465964de85853c8b5af

git

2020-09-08 13:17

administrator   ~0094246

Branch CR30737_9 has been created by nds.

SHA-1: ba2f1cbfe50c7835c9544a6ba579db7427f4bd81


Detailed log of new commits:

Author: nds
Date: Sat Sep 5 10:08:53 2020 +0300

    0030737: Visualization - implementing new selection schemes in context
    
    AIS_SelectionScheme enumeration is defined to set which selection behaviour is used in Select of context
    AIS_InteractiveContext is corrected to use single Select method instead of combination of Select/ShiftSelect methods with a selection scheme parameter.

nds

2020-09-08 18:05

developer   ~0094262

Last edited: 2020-09-08 18:06

Dear Kirill,

could you please give your remarks about this issue.
I have some doubts about:
- making the previous Selected/ShiftSelected as deprecated now;
- is it worth to perform UpdateCurrentViewer in new Select methods by additional parameter as did for previous Select methods.

(Please, note, that OCCT products also have patch due to declaring previous Select methods as deprecated)

Thank you in advance, Natalia

kgv

2020-09-09 21:35

developer   ~0094323

Last edited: 2020-09-09 21:35

Natailia,

+{
+  AIS_SelectionScheme_Empty         = 0x0000, // do nothing
+  AIS_SelectionScheme_Clear         = 0x0001, // clears current selection
+  AIS_SelectionScheme_Add           = 0x0002, // add detected object to current selection
+  AIS_SelectionScheme_Switch        = 0x0004, // switch selection state in values selected/deselected
+  AIS_SelectionScheme_PickedIfEmpty = 0x0008, // if after switch, result selection is empty, select picked objects
+  AIS_SelectionScheme_ClearAndSwitch = AIS_SelectionScheme_Clear | AIS_SelectionScheme_Switch,
+  AIS_SelectionScheme_ClearAndAdd = AIS_SelectionScheme_Clear | AIS_SelectionScheme_Add,
+  AIS_SelectionScheme_ClearAndSwitchAndPicked = AIS_SelectionScheme_ClearAndSwitch | AIS_SelectionScheme_PickedIfEmpty,
+  AIS_SelectionScheme_Custom // reserved item for custom selection scheme

New enumeration looks confusing. The following selection schemes are commonly used in applications that I've seen:
- Replace
  Clears previous selection and sets new one.
- Add
  Adds new picking result to the list of already selected entities.
- Remove
  Removes new picking result from the list of previously selected entities.
- XOR
  Previously selected entities within new picking results are unselected,
  while other added to selection.

Current OCCT methods:
- Select() implements "Replace" strategy.
- ShiftSelect() implements "XOR" strategy.

Add and Remove should be added.
The following synthetic strategies could be added to complete list,
although they have dubious usability (application may just disable selection events):
- Clear
  Always clears previously selected results.
- Locked
  Preserves selection results without change.

Although one may see that strategy "Replace" applies clearing in advance,
it doesn't look reasonable defining strategy as a bitmask,
as each selection strategy looks clearly distinguishable.

AIS_SelectionScheme_Custom (defined not as a bitmask, by the way) makes an impression,
that application might extend strategy list, but it is unclear how such strategy could be handled by OCCT.

I have some difficulties understanding the list of options within proposed enum and how it correlates/extends my list.
Maybe some animated images or [from]->[to] 2-states images illustrating each scheme added to this bug and to documentation would help understanding the behavior and usability.

kgv

2020-09-09 21:54

developer   ~0094324

+  Standard_EXPORT AIS_StatusOfPick Select (const Standard_Integer  theXPMin,
+                                           const Standard_Integer  theYPMin,
+                                           const Standard_Integer  theXPMax,
+                                           const Standard_Integer  theYPMax,
+                                           const Handle(V3d_View)& theView,
+                                           const AIS_SelectionScheme theSelScheme);

While introducing an API replacement for Select() methods, I propose the following additional changes:
- Get rid of confusing overloads - define unique names
  SelectRectangle(), SelectPolygon(), SelectDetected().
- Pass rectangle coordinates via Graphic3d_Vec2i min/max pair.

+  //! Sets list of owner selected/deselected using selection scheme
+  //! It is possible that selection of other objects is changed relatively selection scheme   .
+  //! \param theOwner owners to change selection state
+  //! \param theSelScheme selection scheme
+  Standard_EXPORT AIS_StatusOfPick Select (const AIS_NListOfEntityOwner& theOwners,
+                                           const AIS_SelectionScheme theSelScheme);

@param for consistency with other methods in class.
theOwner -> theOwners misprint.
Redundant spaces before dot.

+//function : SelectOwners
+//purpose  : .

Redundant trailing spaces.

kgv

2020-09-09 22:01

developer   ~0094325

+AIS_StatusOfPick AIS_InteractiveContext::Select (const Standard_Boolean)
+{
+  return Select (AIS_SelectionScheme_ClearAndAdd);

Ignoring theToUpdate flag will cause regressions in applications using deprecated methods. Please handle this flag.

git

2020-09-09 22:44

administrator   ~0094330

Branch CR30737_9 has been updated by nds.

SHA-1: 66c1bb1daeab5803f8b97e0288f36cdd28fec5df


Detailed log of new commits:

Author: nds
Date: Wed Sep 9 22:46:17 2020 +0300

    remarks correction

kgv

2020-09-09 22:50

developer   ~0094331

+  AIS_NListOfEntityOwner aPickedOwners;
+  for (Standard_Integer aPickIter = 1; aPickIter <= myMainSel->NbPicked(); ++aPickIter)
   {
-    HilightSelected (toUpdateViewer);
+    aPickedOwners.Append (myMainSel->Picked (aPickIter));

The size of picked owners is always known in advance.
It might be performance-wise to use structures like std::vector or NCollection_Array1 instead of AIS_NListOfEntityOwner.

+  AIS_NListOfEntityOwner aPrevSelected = Objects();
...
+    if (thePreviousSelected.Contains (theOwner)) // was selected, should not be now

Wouldn't it be simpler using existing myResultMap for handling such schemes?

-    if (!myLastPicked->IsSelected()
-      || myLastPicked->IsForcedHilight()
-      || NbSelected() > 1)
-    {
-      SetSelected (myLastPicked, Standard_False);

Could you please also verify that IsForcedHilight() behaves in the same way on selection after simplifying the code?

git

2020-09-10 18:14

administrator   ~0094402

Branch CR30737_9 has been updated forcibly by nds.

SHA-1: 20406c4164098c46751cfd549c194a35d79ba2e8

nds

2020-09-10 19:38

developer   ~0094414

Dear Kirill,
lots of remarks are corrected, please check CR30739_10.
Jenkins job is: http://jenkins-test-12.nnov.opencascade.com/view/CR30737-CR30737-nds/
Not corrected remarks:
1. AIS_NListOfEntityOwner stays due to AIS_Selection uses it inside own container/manipulating. Let's report a new issue to introduce AIS_NArrayOfEntityOwner or put it into SelectMgr package and porting AIS_Selection on it?
2. if (thePreviousSelected.Contains (theOwner)) - using myResultMap. The matter is that this container sometimes is cleared before using XOR. So we use cached container of objects.
3. The last remark about checking IsForcedHilight(). Could you please suggest how it might be checked?

Thank you for help, Natalia

git

2020-09-10 19:46

administrator   ~0094417

Branch CR30737_10 has been created by nds.

SHA-1: 58210fdc17864ed117b8b4f34cc6f2c0af15bce9


No new revisions were added by this update.

git

2020-09-11 06:29

administrator   ~0094430

Branch CR30737_10 has been updated by nds.

SHA-1: cf43d74d8f3011879946631e80f945f596ec749f


Detailed log of new commits:

Author: nds
Date: Fri Sep 11 06:32:28 2020 +0300

    remarks correction

git

2020-09-11 06:33

administrator   ~0094431

Branch CR30737_11 has been created by nds.

SHA-1: 3e67a8cfbf2789a1869068a001681d0957c06b43


Detailed log of new commits:

Author: nds
Date: Fri Sep 11 06:36:40 2020 +0300

    0030737: Visualization - implementing new selection schemes in context
    
    AIS_SelectionScheme enumeration is defined to set which selection behaviour is used in Select of context
    AIS_InteractiveContext is corrected to use single Select method instead of combination of Select/ShiftSelect methods with a selection scheme parameter.
    Upgrade: Select() -> SelectDetected/Rectangle/Polygon(AIS_SelectionScheme_Replace), ShiftSelect -> SelectDetected/Rectangle/Polygon(AIS_SelectionScheme_XOR)

kgv

2020-09-11 10:58

developer   ~0094442

--- a/dox/dev_guides/upgrade/upgrade.md
+++ b/dox/dev_guides/upgrade/upgrade.md
@@ -1241,7 +1241,7 @@ The following AIS_InteractiveContext methods have been changed:
-  SetHLRDeviationAngle, SetHLRAngleAndDeviation, SetSelectedAspect, MoveTo, Select, ShiftSelect, SetSelected,
+  SetHLRDeviationAngle, SetHLRAngleAndDeviation, SetSelectedAspect, MoveTo, Select, SetSelected,

This is unrelated, please revert.

+  //! XPMin, YPMin, XPMax, and YPMax in the view.
+  //! The objects detected are passed to the main viewer, which is then updated.
+  Standard_EXPORT AIS_StatusOfPick SelectRectangle (const Graphic3d_Vec2i& thePntMin,
+                                                    const Graphic3d_Vec2i& thePntMax,

Please update description.

+AIS_StatusOfPick AIS_InteractiveContext::SelectRectangle (const Graphic3d_Vec2i&    thePntMin,
...
+    if (myLastPicked->HandleMouseClick (aMousePos, Aspect_VKeyMouse_LeftButton, Aspect_VKeyFlags_NONE, false))

I don't think this should be added to SelectRectangle() method.

+  AIS_SelectionScheme_ReplaceExtra, //!< replace with one difference: if result of replace is an empty,
+                                    //!< and current selection contains detected element, it will be selected

"//!" for second line.

+                                                    const AIS_SelectionScheme theSelScheme);

I propose putting "theSelScheme = AIS_SelectionScheme_Replace" to new SelectX() methods.

My comment related to AIS_Selection::myResultMap for efficient presence / not presence checks instead of redundant copies and tests in slow List::Contains() remains the same.

nds

2020-09-11 17:04

developer  

selection_schemes_user_guide.png (66,784 bytes)

git

2020-09-11 17:10

administrator   ~0094484

Branch CR30737_12 has been created by nds.

SHA-1: a516227511f3452f9f55b79c961265b0bf210793


No new revisions were added by this update.

git

2020-09-11 17:12

administrator   ~0094486

Branch CR30737_12 has been updated by nds.

SHA-1: 408448b03db7d3bbe247b2cbb88b7a5d962a8ea8


Detailed log of new commits:

Author: nds
Date: Fri Sep 11 17:15:29 2020 +0300

    0030737: Visualization - implementing new selection schemes in context
    
    AIS_SelectionScheme enumeration is defined to set which selection behaviour is used in Select of context
    AIS_InteractiveContext is corrected to use single Select method instead of combination of Select/ShiftSelect methods with a selection scheme parameter.
    Upgrade: Select() -> SelectDetected/Rectangle/Polygon(AIS_SelectionScheme_Replace), ShiftSelect -> SelectDetected/Rectangle/Polygon(AIS_SelectionScheme_XOR)

git

2020-09-11 17:22

administrator   ~0094488

Branch CR30737_13 has been created by nds.

SHA-1: a98e8407c1a0c2983ec72cf2716ba6a988c39fab


Detailed log of new commits:

Author: nds
Date: Fri Sep 11 17:25:30 2020 +0300

    0030737: Visualization - implementing new selection schemes in context
    
    AIS_SelectionScheme enumeration is defined to set which selection behaviour is used in Select of context
    AIS_InteractiveContext is corrected to use single Select method instead of combination of Select/ShiftSelect methods with a selection scheme parameter.
    Upgrade: Select() -> SelectDetected/Rectangle/Polygon(AIS_SelectionScheme_Replace), ShiftSelect -> SelectDetected/Rectangle/Polygon(AIS_SelectionScheme_XOR)

nds

2020-09-11 17:54

developer   ~0094500

Dear Kirill,

remarks are corrected. Please, review.
Jenkins job: jenkins-test-12.nnov.opencascade.com/view/CR30737_13-CR30737_13-nds

OCCT: CR30737_13,
Products: CR30737_13

Best regards, Natalia

kgv

2020-09-14 12:16

developer   ~0094708

I propose propagating selection scheme to Owner object interface and replace AIS_Selection::Select() method to unify the logic.
This will allow implementing Selection Schemes by objects implementing single-owner for multiple elements logic like AIS_PointCloudOwner (points selection) and MeshVS_MeshOwner (nodes / mesh elements selection).

Please also try playing with these special objects as they implement tricky IsForcedHilight() conception and patch introducing selection schemes / unifying selection logic might easily break existing logic for them.

/// TODO handle mess with IsForcedHilight()
bool SelectMgr_EntityOwner::Select (const AIS_SelectionScheme theSelScheme,
                                    const Standard_Boolean theIsDetected)
{
  switch (theSelScheme)
  {
    case AIS_SelectionScheme_UNKNOWN:
    {
      return myIsSelected;
    }
    case AIS_SelectionScheme_Replace:
    {
      return theIsDetected;
    }
    case AIS_SelectionScheme_Add:
    {
      return myIsSelected || theIsDetected;
    }
    case AIS_SelectionScheme_Remove:
    {
      return myIsSelected && !theIsDetected;
    }
    case AIS_SelectionScheme_XOR:
    {
      if (theIsDetected)
      {
        return !myIsSelected;
      }
      return myIsSelected;
    }
    case AIS_SelectionScheme_Clear:
    {
      return false;
    }
  }
  return false;
}

...
AIS_SelectStatus AIS_Selection::Select (const Handle(SelectMgr_EntityOwner)& theOwner,
                                        const Handle(SelectMgr_Filter)& theFilter,
                                        const AIS_SelectionScheme theSelScheme,
                                        const Standard_Boolean theIsDetected)
{
  if (theOwner.IsNull()
  || !theOwner->HasSelectable())
  {
    return AIS_SS_NotDone;
  }

  const bool isDetected  = theIsDetected && (theFilter.IsNull() || theFilter->IsOk (theOwner));
  const bool wasSelected = theOwner->IsSelected();
  const bool toSelect    = theOwner->Select (theSelScheme, theIsDetected);
  if (toSelect && !wasSelected)
  {
    AIS_NListOfEntityOwner::Iterator aListIter;
    myresult.Append  (theOwner, aListIter);
    myResultMap.Bind (theOwner, aListIter);
    theOwner->SetSelected (true);
    return AIS_SS_Added;
  }

  if (!(!toSelect && wasSelected))
  {
    return AIS_SS_NotDone;
  }

  AIS_NListOfEntityOwner::Iterator aListIter = myResultMap.Find (theOwner);
  if (myIterator == aListIter)
  {
    if (myIterator.More())
    {
      myIterator.Next();
    }
    else
    {
      myIterator = AIS_NListOfEntityOwner::Iterator();
    }
  }

  //if (theOwner->IsForcedHilight()) {return AIS_SS_Added;} /// TODO handle IsForcedHilight somehow
  myresult.Remove (aListIter);
  myResultMap.UnBind (theObject);
  theOwner->SetSelected (false);

  // update list iterator for next object in myresult list if any
  if (aListIter.More())
  {
    const Handle(SelectMgr_EntityOwner)& aNextObject = aListIter.Value();
    if (myResultMap.IsBound (aNextObject))
    {
      myResultMap (aNextObject) = aListIter;
    }
    else
    {
      myResultMap.Bind (aNextObject, aListIter);
    }
  }
  return AIS_SS_Removed;
}

void AIS_Selection::SelectOwners (const AIS_NListOfEntityOwner& thePickedOwners,
                                  const AIS_SelectionScheme theSelScheme,
                                  const Handle(SelectMgr_Filter)& theFilter)
{
  if (theSelScheme == AIS_SelectionScheme_Replace || theSelScheme == AIS_SelectionScheme_Clear)
  {
    Clear();
  }
  for (AIS_NListOfEntityOwner::Iterator aPickedIter (thePickedOwners); aPickedIter.More(); aPickedIter.Next())
  {
    const Handle(SelectMgr_EntityOwner)& anOwner = aPickedIter.Value();
    Select (anOwner, theFilter, theSelScheme, true);
  }
}

git

2020-09-18 08:14

administrator   ~0095002

Branch CR30737_14 has been created by nds.

SHA-1: f689f9977e8af2d97b18798f4e9606119cd8efac


Detailed log of new commits:

Author: nds
Date: Fri Sep 11 17:25:30 2020 +0300

    0030737: Visualization - implementing new selection schemes in context
    
    AIS_SelectionScheme enumeration is defined to set which selection behaviour is used in Select of context
    AIS_InteractiveContext is corrected to use single Select method instead of combination of Select/ShiftSelect methods with a selection scheme parameter.
    Upgrade: Select() -> SelectDetected/Rectangle/Polygon(AIS_SelectionScheme_Replace), ShiftSelect -> SelectDetected/Rectangle/Polygon(AIS_SelectionScheme_XOR)

git

2020-09-18 11:24

administrator   ~0095018

Branch CR30737_14 has been updated forcibly by nds.

SHA-1: bbd9e2f9cd00ff5338972ce66f375a10e9f0159b

nds

2020-09-18 13:22

developer   ~0095022

Last edited: 2020-09-18 13:25

Dear Kirill,

remarks are corrected, excepting improvement for owner. The issue #31777 is reported for it.
ForcedUpdate is checked on tests/v3d/point_cloud/* cases. The highlight/selection behavior are the same as before this patch.

Jenkins job is: http://jenkins-test-12.nnov.opencascade.com/view/CR30737_14-CR30737_14-nds/

Could you please review the patch once again.
Thank you for your help

git

2020-09-18 14:21

administrator   ~0095027

Branch CR30737_14 has been updated by kgv.

SHA-1: bc72227a852a01d9abe2be9188f1801d4f29bff7


Detailed log of new commits:

Author: kgv
Date: Fri Sep 18 14:24:21 2020 +0300

    # remarks

kgv

2020-09-18 14:23

developer   ~0095028

Please replace JPEG images with SVG.
No other remarks.

kgv

2020-09-18 14:59

developer   ~0095033

Please also fix image-diff regressions:
- v3d/dimensions/offset - selection changed.
- pointcloud/reader/gen_land - dynamic highlighting cursor has lost from screenshots.

git

2020-09-18 21:28

administrator   ~0095052

Branch CR30737_14 has been updated by nds.

SHA-1: 78ec1fae563c7948a5e1a443e00f0db6337563b0


Detailed log of new commits:

Author: nds
Date: Fri Sep 18 21:29:49 2020 +0300

    test correction (pointcloud/reader/gen_land)

Author: nds
Date: Fri Sep 18 15:33:47 2020 +0300

    remarks correction

git

2020-09-18 21:33

administrator   ~0095053

Branch CR30737_15 has been created by nds.

SHA-1: 8b392af6ba0dd45465de2ac640db37095f99dc3c


Detailed log of new commits:

Author: nds
Date: Fri Sep 18 21:36:05 2020 +0300

    0030737: Visualization - implementing new selection schemes in context
    
    AIS_SelectionScheme enumeration is defined to set which selection behaviour is used in Select of context
    AIS_InteractiveContext is corrected to use single Select method instead of combination of Select/ShiftSelect methods with a selection scheme parameter.
    Upgrade: Select() -> SelectDetected/Rectangle/Polygon(AIS_SelectionScheme_Replace), ShiftSelect -> SelectDetected/Rectangle/Polygon(AIS_SelectionScheme_XOR)

git

2020-11-09 06:55

administrator   ~0096608

Branch CR30737_16 has been created by nds.

SHA-1: c79998d2ac08360340984e5d6d249855e2d27dcf


Detailed log of new commits:

Author: nds
Date: Fri Sep 18 21:36:05 2020 +0300

    0030737: Visualization - implementing new selection schemes in context
    
    AIS_SelectionScheme enumeration is defined to set which selection behaviour is used in Select of context
    AIS_InteractiveContext is corrected to use single Select method instead of combination of Select/ShiftSelect methods with a selection scheme parameter.
    Upgrade: Select() -> SelectDetected/Rectangle/Polygon(AIS_SelectionScheme_Replace), ShiftSelect -> SelectDetected/Rectangle/Polygon(AIS_SelectionScheme_XOR)
    
    (cherry picked from commit 8b392af6ba0dd45465de2ac640db37095f99dc3c)

git

2020-11-25 04:06

administrator   ~0097046

Branch CR30737_16 has been updated forcibly by nds.

SHA-1: 918e714f81844e725e061534a0f7adefe469d5f3

nds

2020-11-25 08:21

developer   ~0097050

Dear Kirill,

Already checked branch is cherry picked on the current origin/master.
Could you please once again.
Jenkins job is: http://jenkins-test-12.nnov.opencascade.com/view/CR30737_16-CR30737_16-nds/

Remark about auto highlight of the context.
The first idea of this patch was to move the code:
'if (myAutoHilight) {UnhilightSelected}' into 'Select' of interactive context.
But, some cases (see pointcloud/reader/gen_land) are failed,
so we need to avoid this general approach or give an additional parameter into common Select or other.
Now, the previous implementation of calling this method stays:
it's called in each 'Select*' according to its logic.

This difference might be found at '78ec1fae563c7948a5e1a443e00f0db6337563b0'
(the last commit of the CR30737_14 branch).

git

2020-11-25 11:43

administrator   ~0097057

Branch CR30737_16 has been updated forcibly by nds.

SHA-1: 1d7ea06477026f571d7f2035f5378a49762704c0

kgv

2020-11-25 11:45

developer   ~0097059

The latest version of the patch show tremendous number of uncommented image-deviations in v3d group testing selection.

git

2020-11-26 11:45

administrator   ~0097089

Branch CR30737_16 has been updated by osa.

SHA-1: b8bf491b99a8522a9ff3059d78165d15c16b6e83


Detailed log of new commits:

Author: osa
Date: Thu Nov 26 11:45:38 2020 +0300

    Add additional selection scheme modifier theToAllowSelOverlap flag to ::SelectOwners() method

git

2020-11-26 11:56

administrator   ~0097091

Branch CR30737_16 has been updated forcibly by osa.

SHA-1: 3cfaa37765d4daa9032d796abc9b45e3c480c5af

git

2020-12-01 16:03

administrator   ~0097215

Branch CR30737_16 has been updated forcibly by kgv.

SHA-1: 13f79ef445be51d8f0d21efc941bc587600109aa

git

2020-12-01 16:18

administrator   ~0097216

Branch CR30737_16 has been updated by kgv.

SHA-1: cc774e65e337105257e6ac7447ad95b12aea15dd


Detailed log of new commits:

Author: age
Date: Tue Dec 1 16:18:30 2020 +0300

    # Replaced AIS_NListOfEntityOwner with AIS_NArray1OfEntityOwner
    # Fixed bug with incorrect highlighting in xor mode (select several times the same objects)

git

2020-12-01 18:29

administrator   ~0097220

Branch CR30737_16 has been updated by kgv.

SHA-1: 3f6fdf7156b500e783a8b73f60b48f416331f9a8


Detailed log of new commits:

Author: kgv
Date: Tue Dec 1 18:29:34 2020 +0300

    # AIS_InteractiveContext::Select() now performs selective unhighlighting before new highlighting

git

2020-12-01 18:32

administrator   ~0097221

Branch CR30737_17 has been created by kgv.

SHA-1: 11487b88dd146357d81329e54e2e45c0edf83b60


Detailed log of new commits:

Author: nds
Date: Fri Sep 18 21:36:05 2020 +0300

    0030737: Visualization - implementing new selection schemes in context
    
    AIS_SelectionScheme enumeration is defined to set which selection behaviour is used in Select of context
    AIS_InteractiveContext is corrected to use single Select method instead of combination of Select/ShiftSelect methods with a selection scheme parameter.
    Upgrade: Select() -> SelectDetected/Rectangle/Polygon(AIS_SelectionScheme_Replace), ShiftSelect -> SelectDetected/Rectangle/Polygon(AIS_SelectionScheme_XOR)

git

2020-12-01 21:21

administrator   ~0097223

Branch CR30737_16 has been updated by kgv.

SHA-1: e5607421fdb4038f4d986e7fb195b5b9de33a33e


Detailed log of new commits:

Author: kgv
Date: Tue Dec 1 21:21:20 2020 +0300

    # AIS_InteractiveContext::Select() - fix unselection

git

2020-12-01 21:22

administrator   ~0097224

Branch CR30737_17 has been updated forcibly by kgv.

SHA-1: 6555c4c27972e9a7fbf6405b7c38fc3dfad5e9f4

git

2020-12-01 22:55

administrator   ~0097225

Branch CR30737_17 has been updated forcibly by kgv.

SHA-1: 7d3e7671313b48112c7633d519079a994f4b3b9b

kgv

2020-12-01 22:57

developer   ~0097226

Updated patch is ready for review
- OCCT: branch CR30737_17;
- OCC Products: branch CR30737_16.

http://jenkins-test-12.nnov.opencascade.com:8080/view/CR30737_17-CR30737_16-KGV/

git

2020-12-03 10:27

administrator   ~0097260

Branch CR30737_17 has been updated forcibly by kgv.

SHA-1: c88efca1bb6b9acf210ce8c4d8e7ea033262eaac

osa

2020-12-03 12:56

developer   ~0097269

The patch was reviewed

bugmaster

2020-12-05 11:57

administrator   ~0097349

Combination -
OCCT branch : IR-2020-12-04
master SHA - 1e08a76f1e872a1f38931a6c3e8cf71396fc1209
a206de37fbfa0bf71bd534ae47192bbec23b8522
Products branch : IR-2020-12-04 SHA - cb56638fb6b31df41b28133f69a1dc202dcb56aa
was compiled on Linux, MacOS and Windows platforms and tested in optimize mode.

Number of compiler warnings:
No new/fixed warnings

Regressions/Differences/Improvements:
No regressions/differences

CPU differences:
Debian80-64:
OCCT
Total CPU difference: 18090.67999999998 / 18052.040000000085 [+0.21%]
Products
Total CPU difference: 12342.950000000128 / 12326.850000000131 [+0.13%]
Windows-64-VC14:
OCCT
Total CPU difference: 19751.5 / 19705.828125 [+0.23%]
Products
Total CPU difference: 13772.515625 / 13793.796875 [-0.15%]


Image differences :
No differences that require special attention

Memory differences :
No differences that require special attention

git

2020-12-05 13:01

administrator   ~0097357

Branch CR30737_17 has been deleted by inv.

SHA-1: c88efca1bb6b9acf210ce8c4d8e7ea033262eaac

git

2020-12-05 13:01

administrator   ~0097360

Branch CR30737_16 has been deleted by inv.

SHA-1: e5607421fdb4038f4d986e7fb195b5b9de33a33e

git

2020-12-05 13:01

administrator   ~0097370

Branch CR30737_15 has been deleted by inv.

SHA-1: 8b392af6ba0dd45465de2ac640db37095f99dc3c

git

2020-12-05 13:02

administrator   ~0097371

Branch CR30737_14 has been deleted by inv.

SHA-1: 78ec1fae563c7948a5e1a443e00f0db6337563b0

git

2020-12-05 13:02

administrator   ~0097372

Branch CR30737_13 has been deleted by inv.

SHA-1: a98e8407c1a0c2983ec72cf2716ba6a988c39fab

git

2020-12-05 13:02

administrator   ~0097373

Branch CR30737_12 has been deleted by inv.

SHA-1: 408448b03db7d3bbe247b2cbb88b7a5d962a8ea8

git

2020-12-05 13:02

administrator   ~0097374

Branch CR30737_11 has been deleted by inv.

SHA-1: 3e67a8cfbf2789a1869068a001681d0957c06b43

git

2020-12-05 13:02

administrator   ~0097375

Branch CR30737_10 has been deleted by inv.

SHA-1: cf43d74d8f3011879946631e80f945f596ec749f

git

2020-12-05 13:02

administrator   ~0097376

Branch CR30737_9 has been deleted by inv.

SHA-1: 20406c4164098c46751cfd549c194a35d79ba2e8

git

2020-12-05 13:02

administrator   ~0097377

Branch CR30737_8 has been deleted by inv.

SHA-1: 5bc14e8d743a7421ecdf6465964de85853c8b5af

git

2020-12-05 13:02

administrator   ~0097378

Branch CR30737_7 has been deleted by inv.

SHA-1: c440c19910ee972c3f3ab10eb7a2587d6753d8af

git

2020-12-05 13:02

administrator   ~0097379

Branch CR30737_6 has been deleted by inv.

SHA-1: df71d84b0713df731c1582e8ec72d319fc40628d

git

2020-12-05 13:02

administrator   ~0097380

Branch CR30737_5 has been deleted by inv.

SHA-1: 246cdc4da230a68dd93b52e8d0ee2758a2645d20

git

2020-12-05 13:02

administrator   ~0097381

Branch CR30737_4 has been deleted by inv.

SHA-1: cab8402295d7849517132679b269e626b56b0932

git

2020-12-05 13:02

administrator   ~0097382

Branch CR30737_3 has been deleted by inv.

SHA-1: 951d93f193cdc00724586df1903ad39fc487cecd

git

2020-12-05 13:02

administrator   ~0097383

Branch CR30737_2 has been deleted by inv.

SHA-1: 6202e5c34d996321cc424059a1e496c440437d1d

git

2020-12-05 13:02

administrator   ~0097384

Branch CR30737_1 has been deleted by inv.

SHA-1: 91f31b0a042c20e6db2cb038eeeeb7f3200dba52

git

2020-12-05 13:02

administrator   ~0097385

Branch CR30737 has been deleted by inv.

SHA-1: af73c57320c6775b87bcf5823a61eeff266ec40a

Related Changesets

occt-products: master bd903bf8

2020-09-11 17:28:19

nds


Committer: bugmaster Details Diff
0030737: Visualization - implementing new selection schemes in context

AIS_SelectionScheme enumeration is defined to set which selection behaviour is used in Select of context
AIS_InteractiveContext is corrected to use single Select method instead of combination of Select/ShiftSelect methods with a selection scheme parameter.
Upgrade: Select() -> SelectDetected/Rectangle/Polygon(AIS_SelectionScheme_Replace), ShiftSelect -> SelectDetected/Rectangle/Polygon(AIS_SelectionScheme_XOR)
Affected Issues
0030737
mod - diff Diff File
mod - diff Diff File
mod - diff Diff File
mod - diff Diff File
mod - diff Diff File
mod - diff Diff File
mod - diff Diff File
mod - diff Diff File
mod - diff Diff File
mod - diff Diff File
mod - diff Diff File
mod - diff Diff File
mod - diff Diff File
mod - diff Diff File
mod - diff Diff File
mod - diff Diff File
mod - samples/mfc/ColDet/src/SampleCollisionDetectionDoc.cpp Diff File
mod - samples/mfc/CR/src/SampleCanonicalRecognitionView3D.cpp Diff File
mod - samples/mfc/modeler/src/MiniModelerDoc.cpp Diff File
mod - samples/mfc/ocaf/src/OCAFSampleView.cpp Diff File
mod - samples/mfc/OMF/src/MeshFWView3D.cpp Diff File
mod - samples/mfc/shapehealer/Kernel/Kernel_View3D.cxx Diff File
mod - samples/mfc/xde/src/XDESampleView3D.cpp Diff File
mod - samples/opencl/ray_tracing/src/View.cxx Diff File
mod - samples/qt/XDE/src/XDESampleView3D.cpp Diff File
mod - training/exercises/OCAF_Solution/qt/src/GUIFramework/GUIFramework_View.cxx Diff File
mod - training/exercises/ShapeHealing_Solution/mfc/ShapeHealingView3D.cpp Diff File
mod - training/exercises/Visualization/mfc/ExerciseDoc.cpp Diff File
mod - training/exercises/Visualization_Solution/qt/src/Exercise/Exercise_Steps.cxx Diff File
mod - training/exercises/Visualization_Solution/qt/src/GUIFramework/GUIFramework_View.cxx Diff File

occt: master 75cf8250

2020-09-18 18:36:05

nds


Committer: bugmaster Details Diff
0030737: Visualization - implementing new selection schemes in context

AIS_SelectionScheme enumeration is defined to set which selection behaviour is used in Select of context
AIS_InteractiveContext is corrected to use single Select method instead of combination of Select/ShiftSelect methods with a selection scheme parameter.
Upgrade: Select() -> SelectDetected/Rectangle/Polygon(AIS_SelectionScheme_Replace), ShiftSelect -> SelectDetected/Rectangle/Polygon(AIS_SelectionScheme_XOR)
Affected Issues
0030737
add - dox/user_guides/visualization/images/visualization_selection_scheme_add.svg Diff File
add - dox/user_guides/visualization/images/visualization_selection_scheme_clear.svg Diff File
add - dox/user_guides/visualization/images/visualization_selection_scheme_remove.svg Diff File
add - dox/user_guides/visualization/images/visualization_selection_scheme_replace.svg Diff File
add - dox/user_guides/visualization/images/visualization_selection_scheme_XOR.svg Diff File
mod - dox/user_guides/visualization/visualization.md Diff File
mod - samples/CSharp/OCCTProxy/OCCTProxy.cpp Diff File
mod - samples/CSharp/OCCTProxy_D3D/OCCTProxyD3D.cpp Diff File
mod - samples/mfc/standard/01_Geometry/src/GeometryDoc.cpp Diff File
mod - samples/mfc/standard/02_Modeling/src/ModelingDoc.cpp Diff File
mod - samples/mfc/standard/04_Viewer3d/src/Viewer3dDoc.cpp Diff File
mod - samples/mfc/standard/08_HLR/src/HLRView3D.cpp Diff File
mod - samples/mfc/standard/Common/OCC_3dBaseDoc.cpp Diff File
mod - src/AIS/AIS_InteractiveContext.hxx Diff File
mod - src/AIS/AIS_InteractiveContext_1.cxx Diff File
add - src/AIS/AIS_NArray1OfEntityOwner.hxx Diff File
mod - src/AIS/AIS_Selection.cxx Diff File
mod - src/AIS/AIS_Selection.hxx Diff File
add - src/AIS/AIS_SelectionScheme.hxx Diff File
mod - src/AIS/AIS_ViewController.cxx Diff File
mod - src/AIS/FILES Diff File
mod - src/QABugs/QABugs_16.cxx Diff File
mod - src/QABugs/QABugs_19.cxx Diff File
mod - src/ViewerTest/ViewerTest_EventManager.hxx Diff File
mod - src/ViewerTest/ViewerTest_ViewerCommands.cxx Diff File

Issue History

Date Modified Username Field Change
2019-05-23 19:53 nds New Issue
2019-05-23 19:53 nds Assigned To => kgv
2019-05-23 19:54 nds Assigned To kgv => nds
2019-05-23 19:59 git Note Added: 0084586
2019-05-24 09:31 git Note Added: 0084590
2019-05-24 13:38 nds Note Added: 0084603
2019-05-24 13:38 nds Assigned To nds => kgv
2019-05-24 14:32 kgv Note Added: 0084604
2019-05-27 11:35 git Note Added: 0084656
2019-06-04 22:43 git Note Added: 0084832
2019-06-04 22:55 git Note Added: 0084833
2019-06-04 23:32 git Note Added: 0084836
2019-07-17 07:10 nds Assigned To kgv => nds
2019-07-17 07:10 nds Target Version 7.4.0 => 7.5.0
2019-08-20 15:19 git Note Added: 0086369
2020-02-13 00:21 git Note Added: 0090502
2020-06-05 20:51 git Note Added: 0092495
2020-06-25 04:46 git Note Added: 0092708
2020-09-05 09:58 git Note Added: 0094043
2020-09-05 10:06 git Note Added: 0094044
2020-09-08 13:13 git Note Added: 0094245
2020-09-08 13:17 git Note Added: 0094246
2020-09-08 18:05 nds Note Added: 0094262
2020-09-08 18:05 nds Assigned To nds => kgv
2020-09-08 18:05 nds Status new => resolved
2020-09-08 18:06 nds Note Edited: 0094262
2020-09-09 21:35 kgv Note Added: 0094323
2020-09-09 21:35 kgv Note Edited: 0094323
2020-09-09 21:54 kgv Note Added: 0094324
2020-09-09 21:54 kgv Assigned To kgv => nds
2020-09-09 21:54 kgv Status resolved => assigned
2020-09-09 22:01 kgv Note Added: 0094325
2020-09-09 22:44 git Note Added: 0094330
2020-09-09 22:50 kgv Note Added: 0094331
2020-09-10 18:14 git Note Added: 0094402
2020-09-10 19:38 nds Note Added: 0094414
2020-09-10 19:38 nds Assigned To nds => kgv
2020-09-10 19:38 nds Status assigned => resolved
2020-09-10 19:46 git Note Added: 0094417
2020-09-11 06:29 git Note Added: 0094430
2020-09-11 06:33 git Note Added: 0094431
2020-09-11 06:36 nds File Added: selection_schemes_user_guides.png
2020-09-11 10:58 kgv Note Added: 0094442
2020-09-11 10:58 kgv Assigned To kgv => nds
2020-09-11 10:58 kgv Status resolved => assigned
2020-09-11 17:02 nds File Deleted: selection_schemes_user_guides.png
2020-09-11 17:02 nds File Added: selection_schemes_user_guide.png
2020-09-11 17:04 nds File Deleted: selection_schemes_user_guide.png
2020-09-11 17:04 nds File Added: selection_schemes_user_guide.png
2020-09-11 17:10 git Note Added: 0094484
2020-09-11 17:12 git Note Added: 0094486
2020-09-11 17:22 git Note Added: 0094488
2020-09-11 17:54 nds Note Added: 0094500
2020-09-11 17:54 nds Assigned To nds => kgv
2020-09-11 17:54 nds Status assigned => resolved
2020-09-14 12:16 kgv Note Added: 0094708
2020-09-14 12:17 kgv Assigned To kgv => nds
2020-09-14 12:17 kgv Status resolved => assigned
2020-09-18 08:14 git Note Added: 0095002
2020-09-18 11:24 git Note Added: 0095018
2020-09-18 13:22 nds Note Added: 0095022
2020-09-18 13:22 nds Assigned To nds => kgv
2020-09-18 13:22 nds Status assigned => resolved
2020-09-18 13:25 nds Note Edited: 0095022
2020-09-18 14:21 git Note Added: 0095027
2020-09-18 14:23 kgv Note Added: 0095028
2020-09-18 14:23 kgv Assigned To kgv => nds
2020-09-18 14:23 kgv Status resolved => assigned
2020-09-18 14:41 kgv Relationship added parent of 0031779
2020-09-18 14:59 kgv Note Added: 0095033
2020-09-18 21:28 git Note Added: 0095052
2020-09-18 21:33 git Note Added: 0095053
2020-09-21 10:04 nds Target Version 7.5.0 => 7.6.0
2020-11-09 06:55 git Note Added: 0096608
2020-11-25 04:06 git Note Added: 0097046
2020-11-25 08:21 nds Note Added: 0097050
2020-11-25 08:21 nds Assigned To nds => kgv
2020-11-25 08:21 nds Status assigned => resolved
2020-11-25 11:43 git Note Added: 0097057
2020-11-25 11:45 kgv Note Added: 0097059
2020-11-25 11:45 kgv Assigned To kgv => nds
2020-11-25 11:45 kgv Status resolved => assigned
2020-11-26 11:45 git Note Added: 0097089
2020-11-26 11:56 git Note Added: 0097091
2020-12-01 09:14 nds Assigned To nds => age
2020-12-01 16:03 git Note Added: 0097215
2020-12-01 16:18 git Note Added: 0097216
2020-12-01 18:29 git Note Added: 0097220
2020-12-01 18:32 git Note Added: 0097221
2020-12-01 21:21 git Note Added: 0097223
2020-12-01 21:22 git Note Added: 0097224
2020-12-01 22:55 git Note Added: 0097225
2020-12-01 22:57 kgv Note Added: 0097226
2020-12-01 22:57 kgv Assigned To age => osa
2020-12-01 22:57 kgv Status assigned => resolved
2020-12-03 10:27 git Note Added: 0097260
2020-12-03 12:56 osa Note Added: 0097269
2020-12-03 12:56 osa Assigned To osa => bugmaster
2020-12-03 12:56 osa Status resolved => reviewed
2020-12-05 11:57 bugmaster Note Added: 0097349
2020-12-05 11:57 bugmaster Status reviewed => tested
2020-12-05 12:10 bugmaster Test case number => Not required
2020-12-05 12:15 bugmaster Changeset attached => occt master 75cf8250
2020-12-05 12:15 bugmaster Status tested => verified
2020-12-05 12:15 bugmaster Resolution open => fixed
2020-12-05 13:01 git Note Added: 0097357
2020-12-05 13:01 git Note Added: 0097360
2020-12-05 13:01 git Note Added: 0097370
2020-12-05 13:02 git Note Added: 0097371
2020-12-05 13:02 git Note Added: 0097372
2020-12-05 13:02 git Note Added: 0097373
2020-12-05 13:02 git Note Added: 0097374
2020-12-05 13:02 git Note Added: 0097375
2020-12-05 13:02 git Note Added: 0097376
2020-12-05 13:02 git Note Added: 0097377
2020-12-05 13:02 git Note Added: 0097378
2020-12-05 13:02 git Note Added: 0097379
2020-12-05 13:02 git Note Added: 0097380
2020-12-05 13:02 git Note Added: 0097381
2020-12-05 13:02 git Note Added: 0097382
2020-12-05 13:02 git Note Added: 0097383
2020-12-05 13:02 git Note Added: 0097384
2020-12-05 13:02 git Note Added: 0097385
2021-03-12 18:56 nds Relationship added parent of 0032205
2021-12-17 18:41 bugmaster Changeset attached => occt-products master bd903bf8