Handle(AIS_InteractiveContext) occtContext->NbSelected()

void MainWindow::mousePressEvent(QMouseEvent *e)
    qDebug() << occtContext->NbSelected();

qDebug() will only show NbSelected() for one selection before the last one. It seems to have a delay.

Does anyone know, what might it be ?

Thanks in advance,


Kirill Gavrilov's picture

Your code snippet just prints some information on a mouse press event. If there no other code around performing actual selection, then selection should be always 0.

Ricardo M Picado's picture

Thanks for your answer. You're absolutely right, there isn't enough information to support my last question. Sorry for that.
So, it goes like this ...

1. I create a shape, a cylinder for instance:

gp_Ax2 axes(gp_Pnt(0,0,0),gp_Dir(0,1,0));
double r = 50;
double h = 60;
double angle = M_PI*1.0;
TopoDS_Shape topo_cylinder = BRepPrimAPI_MakeCylinder(axes, r, h, angle);
ais_cylinder = new AIS_Shape(topo_cylinder);
myContext->Display(ais_cylinder, true);

2. Activate decomposition of shapes and apply filters:

const int aSubShapeSelMode = AIS_Shape::SelectionMode (TopAbs_FACE);
myContext->Activate (ais_cylinder, aSubShapeSelMode, false);

Handle(StdSelect_FaceFilter) aFil1 = new StdSelect_FaceFilter (StdSelect_AnyFace);
Handle(StdSelect_EdgeFilter) aFil2 = new StdSelect_EdgeFilter (StdSelect_AnyEdge);
myContext->AddFilter (aFil1);
myContext->AddFilter (aFil2);

3. In the mouse handle method with (QMouseEvent *e):

const Graphic3d_Vec2i aPnt (e->pos().x(), e->pos().y());

myContext->MoveTo(aPnt.x(), aPnt.y(), myView, true);

myContext->SelectDetected (AIS_SelectionScheme_Add);

qDebug() << myContext->HasDetected();

qDebug() << myContext->MainSelector()->NbPicked();

Finally, during a run, the first qDebug() shows false, and the other shows 0. It does not matter how many times I click the mouse over the cylinder shape.