@m_magalhaes Thanks for the explanation, can help me better understand how it works！

this version code can draw point but not be selected

```
DRAWRESULT myplugin::Draw(BaseObject* op, DRAWPASS drawpass, BaseDraw* bd, BaseDrawHelp* bh)
{
if (drawpass != DRAWPASS::OBJECT)
return SUPER::Draw(op, drawpass, bd, bh);
BaseContainer* data = op->GetDataInstance();
Float32 size = 10.0;
Vector color = Vector(1.0);
Vector pos = Vector();
const Matrix& mg = bh->GetMg();
const Int32 cnt = 1;
bd->SetMatrix_Matrix(op, mg);
bd->SetPen(color);
bd->SetPointSize(size);
bd->DrawPointArray(cnt,&static_cast<Vector32>(pos));
return SUPER::Draw(op, drawpass, bd, bh);
}
```

this version can draw and can be selected(only change return to --> **return DRAWRESULT::OK**)

```
DRAWRESULT myplugin::Draw(BaseObject* op, DRAWPASS drawpass, BaseDraw* bd, BaseDrawHelp* bh)
{
if (drawpass != DRAWPASS::OBJECT)
return SUPER::Draw(op, drawpass, bd, bh);
BaseContainer* data = op->GetDataInstance();
Float32 size = 10.0;
Vector color = Vector(1.0);
Vector pos = Vector();
const Matrix& mg = bh->GetMg();
const Int32 cnt = 1;
bd->SetMatrix_Matrix(op, mg);
bd->SetPen(color);
bd->SetPointSize(size);
bd->DrawPointArray(cnt,&static_cast<Vector32>(pos));
//
return DRAWRESULT::OK;
}
```