PickObjects with PickContext return empty

I want to implement a plugin similar built in BlockEdit and edit block when double click imitating SU, but PickObjects with PickContext return empty. The sample code is below

    class BlockEditor:MouseCallback
    {
        protected override void OnMouseDoubleClick(MouseCallbackEventArgs e)
        {
            RhinoObject rhinoObject = GetPickedObject(e);
            if(null == rhinoObject)
            {
                return;
            }            
        }

        protected RhinoObject GetPickedObject(MouseCallbackEventArgs e)
        {
            var pickContext = new PickContext
            {
                View = e.View,
                PickStyle = PickStyle.PointPick,
            };

            Guid displayModeId = e.View.ActiveViewport.DisplayMode.Id;
            if(displayModeId == DisplayModeDescription.ShadedId ||
               displayModeId == DisplayModeDescription.RenderedId)
            {
                pickContext.PickMode = PickMode.Shaded;
            }            
            
            var xform = e.View.ActiveViewport.GetPickTransform(e.ViewportPoint);
            pickContext.SetPickTransform(xform);

            Line pick_line;
            e.View.ActiveViewport.GetFrustumLine(e.ViewportPoint.X, e.ViewportPoint.Y, out pick_line);

            pickContext.PickLine = pick_line;
            pickContext.UpdateClippingPlanes();

            ObjRef[] objRefs = Doc.Objects.PickObjects(pickContext);
            if (null == objRefs || !objRefs.Any())
            {
                return null;
            }

            return objRefs[0].Object();
        }
    }

I have used similar code to pick objects with GetPoint, it works. The code is below

    public class GetObject:GetPoint
    {
        protected override void OnMouseMove(GetPointMouseEventArgs e)
        {
            var pick_context = new PickContext
            {
                View = e.Viewport.ParentView,
                PickStyle = PickStyle.PointPick,
            };

            var xform = e.Viewport.GetPickTransform(e.WindowPoint);
            pick_context.SetPickTransform(xform);

            Line pick_line;
            e.Viewport.GetFrustumLine(e.WindowPoint.X, e.WindowPoint.Y, out pick_line);

            pick_context.PickLine = pick_line;
            pick_context.UpdateClippingPlanes();

            ObjRef[] objRefs = RhinoDoc.ActiveDoc.Objects.PickObjects(pick_context);
            if (null == objRefs || !objRefs.Any())
            {
                return;
            }
       }
    }

Rhino version:Version 7 SR13(7.13.21348.13001, 2021-12-14)
OS: Windows 10
Nuget package: 7.13.21348.13000

Hi @RyanZhou,

Why not just use GetObject?

– Dale

The goal is to select and edit a block when double click, it is ok if GetObject can achieve.
Double click to edit block is used by SU, which is more quick than Rhino’s special for nested block.