Selecting points in AIS_Point programmatically

When using AIS_PointCloud with SM_SubsetOfPoints, you can select individual points through a box or polygon selection and getting the indices of the selected points as follows:


Handle(SelectMgr_EntityOwner)	aSelOwner = myAISContext->SelectedOwner();
Handle(AIS_PointCloudOwner) hPointCloudOwner = Handle(AIS_PointCloudOwner)::DownCast(aSelOwner);
if (!hPointCloudOwner.IsNull())
{
	Handle(AIS_PointCloud)	hPointCloud = Handle(AIS_PointCloud)::DownCast(aSelOwner->Selectable());
	Handle(TColStd_HPackedMapOfInteger) hSelectedPoints = hPointCloudOwner->SelectedPoints();
	const TColStd_PackedMapOfInteger& rMap = hSelectedPoints->Map();
	Standard_Integer NPointsSelected = 0;
	const Handle(Graphic3d_ArrayOfPoints) hArrayOfPoints = hPointCloud->GetPoints();

	TColStd_PackedMapOfInteger::Iterator anIter(rMap);
	for (; anIter.More(); anIter.Next())
	{
		NPointsSelected++;
		Standard_Integer IndexOfSelectedPoint = anIter.Key();
	}	
}

I would like to select points in the point cloud programmatically and update the view with the programmatically selected points.
How can this be done?