返回介绍

在网页中引用DWG控件,交互绘图,和响应鼠标点击对象的方法

发布于 2023-08-09 23:10:34 字数 3563 浏览 0 评论 0 收藏 0

在网页中引用DWG控件,交互绘图,和响应鼠标点击对象的方法。下面帮助的完整例子,在控件安装目录的 Sample\Ie\iedemo.htm 中。

主要用到函数说明:

函数名:ImplementCommandEventFun

控件的命令事件函数,与用户交互的操作,需要放到命令事件函数内实现,这样控件才能保证正常的Windows 消息循环被处理。

函数名:ImplementMouseEventFun

控件的鼠标事件函数,可以用JS程序里,响应鼠标事件,详细说明如下:

参数说明
LONG lType事件类型,1鼠标移动,2是鼠标左键按下,3是鼠标右键按下,4是鼠标左键双击 5是鼠标左键释放 6是鼠标右键释放 7是鼠标中键按下 8是鼠标中键释放 9是鼠标中键双击 10是鼠标中键滚动
DOUBLE dX事件发生时的鼠标X坐标,文档坐标
DOUBLE dY事件发生时的鼠标Y坐标,文档坐标
LONG* lRetlRet 返回非0,消息将不在往下传递

函数名:DrawLine

用于在DWG图上绘制一条直线。详细说明如下:

参数说明
DOUBLE dX1直线的开始点x坐标
DOUBLE dY1直线的开始点y坐标
DOUBLE dX2直线的结束点x坐标
DOUBLE dY2直线的结束点y坐标

函数名:IMxDrawSelectionSet::SelectAtPoint2

返回一点坐标下面的实体对象,可以设置过滤条件,返回某层,某类型等属性的对象。

js中实现代码说明:

设置命令事件回调函数:

 document.getElementById("MxDrawXCtrl").ImplementCommandEventFun = DoCommandEventFunc;

设置鼠标事件回调函数:

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

该事件将会被,网页中的myclick按钮点击触发,如下:

 function myclick()
{
document.getElementById("MxDrawXCtrl").DoCommand(1);
}

下面是绘制直线代码:

 function DoCommandEventFunc(iCmd)
{
    // 命令事件ID.
    if (iCmd == 1) 
   {
    var mxOcx = document.all.item("MxDrawXCtrl");
    mxOcx.focus();
    var point1 = mxOcx.GetPoint(false,0,0,"\n 点取开始点:");
       if(point1 == null)
       {
	   return;
	 }
	var point2 = mxOcx.GetPoint(false,100,100,"\n 点取结束点:");
	if(point1 == null)
       {
	   return;
	}
    // 绘制一条直线.
    mxOcx.DrawLine(point1.x,point1.y,point2.x,point2.y);		 
		}
}

在鼠标事件中得到鼠标点击的对象:

function MouseEvent(dX,dY,lType)
{ 
    var mxOcx = document.getElementById("MxDrawXCtrl");
    if (lType == 4)
    {
    // 鼠标左键双击.
    // 构建选择集,找到鼠标左建双击下的实体。
    var ss =mxOcx.newSelectionSet();
    var filter =mxOcx.newResbuf();
    filter.AddStringEx("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 + "对象");
    }
    lRet = 1;
    // 取消后面的命令。
    mxOcx.SendStringToExecute("");
    }
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文