Я хочу, чтобы в AIS_Shape можно было выбрать вершину, ребро, грань или все тело в соответствии с режимом выбора. Фактически, если выбрана вершина, из которой я хочу перейти, мне нужно получить координаты вершины. Если выбран край, мне нужно рассчитать длину. Площадь поверхности, даже если выбрано лицо...
Я могу выделить с помощью своей команды.
Код: Выделить всё
myViewerWidget->getContext()->Activate(TopAbs_FACE, Standard_True);
Мой код в событии щелчка мыши: следующим образом;
Код: Выделить всё
if (theEvent->button() == Qt::LeftButton) {
qDebug() DetectedOwner().IsNull()){
Handle(AIS_InteractiveObject) picked;
myContext->InitSelected();
picked = myContext->DetectedInteractive();
Handle(AIS_Shape) aShape=Handle(AIS_Shape)::DownCast(picked);
TopoDS_Shape topShape = aShape->Shape();
// Vertex
for(TopExp_Explorer vertEx(topShape, TopAbs_VERTEX); vertEx.More(); vertEx.Next()) {
TopoDS_Vertex aVertex = TopoDS::Vertex(vertEx.Current());
gp_Pnt aPnt = BRep_Tool::Pnt(aVertex);
qDebug()
Источник: [url]https://stackoverflow.com/questions/71466383/select-a-vertex-an-edge-and-a-face-with-mouse-opencascade[/url]