乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 10|回复: 0

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

[复制链接]

13

主题

31

帖子

4

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
83
发表于 2012-11-12 15:22:00 | 显示全部楼层 |阅读模式
在网页中引用DWG控件,交互绘图,和响应鼠标点击对象的方法 [MXDRAW CAD控件文档 下面帮助的完整例子,在控件安装目录的Sample\Ie\ iedemo.htm中. 1.       主要用到函数说明 A.       ImplementCommandEventFun控件的命令事件函数,与用户交互的操作,需要放到命令事件函数内实现,这样控件才能保证正常的Windows 消息循环被处理。 B.        ImplementMouseEventFun控件的鼠标事件函数,可以用JS程序里,响应鼠标事件,详细说明如下:void MouseEvent(LONG lType, DOUBLE dX, DOUBLE dY, LONG* lRet); LONG lType 事件类型,1鼠标移动,2是鼠标左键按下,3是鼠标右键按下,4是鼠标左键双击 5是鼠标左键释放 6是鼠标右键释放 7是鼠标中键按下 8是鼠标中键释放 9是鼠标中键双击 10是鼠标中键滚动 DOUBLE dX 事件发生时的鼠标X坐标,文档坐标 DOUBLE dY 事件发生时的鼠标Y坐标,文档坐标 LONG* lRet lRet 返回非0,消息将不在往下传递  C.        DrawLine用于在DWG图上绘制一条直线,详细说明如下:参数 说明 DOUBLE dX1 直线的开始点x坐标 DOUBLE dY1 直线的开始点y坐标 DOUBLE dX2 直线的结束点x坐标 DOUBLE dY2 直线的结束点y坐标  D.       IMxDrawSelectionSet::SelectAtPoint2返回一点坐标下面的实体对象,可以设置过滤条件,返回某层,某类型等属性的对象。 2.       JS中实现代码说明 A.       在网页中引用控件,clsid:6EEC44E0-338B-408A-983E-B43E6F22B929是控件的GUID.控件程序可以做成CAB安装包,并可进行数据签名,方便网页中自动安装下载.详细参考例子:                                                                                                                                         -->                                                                                                                                                                                                                                                            
B.        设置命令事件回调函数document.getElementById("MxDrawXCtrl").ImplementCommandEventFun = DoCommandEventFunc;
C.       设置鼠标事件回调函数document.getElementById("MxDrawXCtrl").ImplementMouseEventFun = MouseEvent;
D.       在命令事件交互绘制一条直线该事件将会被,网页中的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(null,"\n 点取开始点:");                   if(point1 == null)                   {                       return;                   }                   var point2 = mxOcx.GetPoint(point1,"\n 点取结束点:");                   if(point1 == null)                   {                       return;                   }         // 绘制一条直线.         mxOcx.DrawLine(point1.x,point1.y,point2.x,point2.y);                            }}
E.        在鼠标事件中得到鼠标点击的对象.function MouseEvent(dX,dY,lType){     // 4是鼠标左键双击         if(lType == 4)         {          // 得到网页的中的控件对象                      var axMxDrawX1 = document.getElementById("MxDrawXCtrl");         // 创建一个选择集对象                   var ss = axMxDrawX1.CallCustomFunction("Mx_NewSelectionSet","");         // 创建一个点对象                   var pt = axMxDrawX1.CallCustomFunction("Mx_NewPoint","");         // 创建一个过滤条件对象          var fil = axMxDrawX1.CallCustomFunction("Mx_NewResbuf","");                            // 把鼠标点击坐标,赋值给点对象.pt.x = dX;         pt.y = dY;                         // 在该点处构造选择集.          ss.SelectAtPoint2(pt,fil);                             // ss.Coune是选择集中对象数目           if(ss.Count > 0)                     {                  // 得到选择集中的第一个点对象.                         var ent = ss.Item(0);                   // 输出信息.                         alert("点击了" + ent.ObjectName + "对象");                }                 // 取消后面的命令。           axMxDrawX1.SendStringToExecute("");                   return 1;               }         return 0;}

本帖以下内容被隐藏保护;需要你回复后,才能看到!

游客,如果您要查看本帖隐藏内容请回复
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-2-5 09:56 , Processed in 0.138321 second(s), 54 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表