# Pick invisible point

**URL:** <https://forum.techsoft3d.com/t/pick-invisible-point/4617>\
**Category:** HOOPS Visualize Web\
**Created:** [May 7, 2025, 5:24am UTC](https://forum.techsoft3d.com/t/pick-invisible-point/4617 "2025-05-07T05:24:02Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![lblblb19940522](https://avatars.discourse-cdn.com/v4/letter/l/bb73d2/32.png) [@lblblb19940522](https://forum.techsoft3d.com/u/lblblb19940522)\
**Post date:** [May 7, 2025, 5:24am UTC](https://forum.techsoft3d.com/t/pick-invisible-point/4617/1 "2025-05-07T05:24:02Z")

</div>

How can I pick points with visible set to false through setNodePointVisibility, but not other lines or faces with visible set to false

---

<div class="post-metadata">

**Author:** ![tino](https://avatars.discourse-cdn.com/v4/letter/t/9dc877/32.png) [@tino](https://forum.techsoft3d.com/u/tino)\
**Post date:** [May 7, 2025, 3:25pm UTC](https://forum.techsoft3d.com/t/pick-invisible-point/4617/2 "2025-05-07T15:25:56Z")

</div>

This should be possible although admittedly, my response is nuanced.

You can use different parameters for the [PickConfig](https://docs.techsoft3d.com/communicator/latest/api_ref/viewing/classes/PickConfig.html#pickconfig) object to allow for only points to be selected while not visible:

```auto
var om = hwv.operatorManager;
var operatorPoint = om.getOperator(Communicator.OperatorId.Select);

var pickConfig = operatorPoint.getPickConfig();
pickConfig.allowPoints=true;
pickConfig.allowLines=false;
pickConfig.allowFaces=false;
pickConfig.respectVisibility=false;

operatorPoint.setPickConfig(pickConfig);

```

**However** , there is a confimed bug with the option `pickConfig.allowFaces=false` still allowing faces to be selected for the operator.

So for the time being, while the bug is still being resolved, picking **only invisible points** cannot be done.

---

<div class="post-metadata">

**Author:** ![lblblb19940522](https://avatars.discourse-cdn.com/v4/letter/l/bb73d2/32.png) [@lblblb19940522](https://forum.techsoft3d.com/u/lblblb19940522)\
**Post date:** [May 9, 2025, 3:15am UTC](https://forum.techsoft3d.com/t/pick-invisible-point/4617/3 "2025-05-09T03:15:47Z")

</div>

But this set will affect visible on the surface of the line selection, think through similar pickconfig forceEffectiveVisibilityMask = point this to implement, but have no effect.

---

<div class="post-metadata">

**Author:** ![tino](https://avatars.discourse-cdn.com/v4/letter/t/9dc877/32.png) [@tino](https://forum.techsoft3d.com/u/tino)\
**Post date:** [May 10, 2025, 12:54am UTC](https://forum.techsoft3d.com/t/pick-invisible-point/4617/4 "2025-05-10T00:54:15Z")

</div>

> [@lblblb19940522](#):
>
> How can I pick points with visible set to false through setNodePointVisibility, but not other lines or faces with visible set to false

Perhaps I misunderstood your question. For the initial state, what is the visibility of each of the following:

- point = false
- line = true?
- face = true?

---

<div class="post-metadata">

**Author:** ![lblblb19940522](https://avatars.discourse-cdn.com/v4/letter/l/bb73d2/32.png) [@lblblb19940522](https://forum.techsoft3d.com/u/lblblb19940522)\
**Post date:** [May 12, 2025, 5:53am UTC](https://forum.techsoft3d.com/t/pick-invisible-point/4617/5 "2025-05-12T05:53:29Z")

</div>

Visible points, lines and surfaces can all be picked, while invisible points, lines and surfaces can only be picked at points

---

<div class="post-metadata">

**Author:** ![tino](https://avatars.discourse-cdn.com/v4/letter/t/9dc877/32.png) [@tino](https://forum.techsoft3d.com/u/tino)\
**Post date:** [May 12, 2025, 9:07pm UTC](https://forum.techsoft3d.com/t/pick-invisible-point/4617/6 "2025-05-12T21:07:55Z")

</div>

Perhaps we can try setting `pickConfig.respectVisibility=false` when you set your visibility. Then in a selection callback, you can filter the out the [selectionItem](https://docs.techsoft3d.com/communicator/latest/api_ref/viewing/classes/Selection.SelectionItem.html#selectionitem):

```auto
hwv.setCallbacks({
  selectionArray: async function (selections) {
      if (selections.length > 0) {
          for (const selectionEvent of selections) {
            var selectionItem = selectionEvent.getSelection();
			var nodeid = selectionItem.getNodeId();
            if (selectionItem.isPointSelection() == false){
				hwv.selectionManager.remove(selectionItem);
			}
		}
      }
  },
});

```

Feel free to add more conditions on the `selectionItem` object to suit your needs.
