Выделите вершину, ребро и грань мышью (OpenCASCADE)C++

Программы на C++. Форум разработчиков
Гость
Выделите вершину, ребро и грань мышью (OpenCASCADE)

Сообщение Гость »


Я хочу, чтобы в 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]

Вернуться в «C++»