CAD得到鼠标左键点击下的实体操作(com接口网页版)

增加ImplementMouseEventFun事件响应函数:

document.getElementById("MxDrawXCtrl").ImplementMouseEventFun = MouseEvent;

可以响应控件的鼠标左键按下事件,然后用我们FindEntAtPoint,或MxDrawSelectionSet::SelectAtPoint函数,得到鼠标坐标下面的实体。

例如:

// 控件鼠标事件       
function MouseEvent(dX, dY, lType) {
 
    //"lType 是事件类型,1鼠标移动,2是鼠标左键按下,3是鼠标右键按下,4是鼠标左键双击.lRet 返回非0,消息将不在往下传递"
    if(lType == 4)
    {
        // 判断当前是否正在运行选择命令。
        var ret = mxOcx.Call("Mx_IsRuningCommand", "");
        if ((ret.AtString(0) == "Ok")
            && ret.AtString(1) != "intellisel"
        )
            return;
 
        // 鼠标左键双击.
        // 构建选择集,找到鼠标左建双击下的实体。
        var ss =  mxOcx.NewSelectionSet();
        var filter = mxOcx.NewResbuf();
        //filter.AddString("LINE",5020);
        var point = mxOcx.NewPoint();
        point.x = dX;
        point.y = dY;
        // 得到点击对象。
        ss.SelectAtPoint(point,filter);
        if(ss.Count > 0)
        {
            var ent = ss.Item(0);
            alert("点击了" + ent.ObjectName + "对象");
 
        }
 
        // 取消后面的命令,不让鼠标事件再往下传递.
        mxOcx.SendStringToExecute("");
        return 1;
 
         
    }
    else    if(lType == 3)
    {
        // MessageBox.Show("右键按下");
    }
}

猜你喜欢

转载自www.cnblogs.com/yzy0224/p/12016756.html
今日推荐