As part of the SelectionItem
class in HPS, there is the function ShowSelectionPosition()
:
https://docs.techsoft3d.com/hps/latest/api_ref/cs/class_h_p_s_1_1_selection_item.html?highlight=showselectionposition#function-HPS.SelectionItem.ShowSelectionPosition
Depending on the variant of the function, it will return a WindowPoint
or WorldPoint
.
To demonstrate getting a WorldPoint
, below is a code snippet that can be executed in the hps_mfc_sandbox Visual Studio project found in the directory:
HOOPS_Visualize_202X\samples\mfc_sandbox
void CHPSView::OnUserCode3() { //First load model then run user code SegmentKey modelKey = _canvas.GetAttachedLayout().GetAttachedView().GetAttachedModel().GetSegmentKey(); SegmentKey subsegmentKey = modelKey.Subsegment("sub"); subsegmentKey.GetVisibilityControl().SetEverything(true); View view = _canvas.GetAttachedLayout().GetAttachedView(); //Set a point in window space, for example, right in the center WindowPoint wp0(0, 0); SelectionOptionsKit selectionOptions; SelectionResults selectionResults; size_t numberOfSelectedItems; selectionOptions.SetLevel(Selection::Level::Entity).SetRelatedLimit(0).SetSorting(Selection::Sorting::ZSorting); numberOfSelectedItems = _canvas.GetWindowKey().GetSelectionControl().SelectByPoint(wp0, selectionOptions, selectionResults); SelectionResultsIterator it = selectionResults.GetIterator(); WorldPoint selectionPosition; while (it.IsValid()) { KeyPath selectionPath; SelectionItem selection = it.GetItem(); //Get the position of the selection selection.ShowSelectionPosition(selectionPosition); it.Next(); } //Insert marker in World space subsegmentKey.InsertMarker(selectionPosition); _canvas.UpdateWithNotifier().Wait(); }
A short video (with audio narration) demonstrating the code is also available: