乐筑天下

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

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

[复制链接]

135

主题

144

帖子

4

银币

中流砥柱

Rank: 25

铜币
684
发表于 2018-3-14 10:10:00 | 显示全部楼层 |阅读模式
在网页中引用DWG控件,交互绘图,和响应鼠标点击对象的方法
[MXDRAW CAD控件文档]
下面帮助的完整例子,在控件安装目录的Sample\Ie\iedemo.htm中.
1.      主要用到函数说明
A.      ImplementCommandEventFun
控件的命令事件函数,与用户交互的操作,需要放到命令事件函数内实现,这样控件才能保证正常的Windows 消息循环被处理。
B.       ImplementMouseEventFun
控件的鼠标事件函数,可以用JS程序里,响应鼠标事件,详细说明如下:
voidMouseEvent(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:74A777F8-7A8F-4e7c-AF47-7074828086E2是控件的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)
    {
         // 得到网页的中的控件对象.
                  varmxOcx = document.all.item("MxDrawXCtrl");
           mxOcx.focus();
                  varpoint1 = mxOcx.GetPoint(null,"\n 点取开始点:");
                  if(point1== null)
                  {
                      return;
                  }
                  varpoint2 = 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)
        {
         // 得到网页的中的控件对象   
                  varaxMxDrawX1 = document.getElementById("MxDrawXCtrl");
        // 创建一个选择集对象
                  varss =axMxDrawX1.CallCustomFunction("Mx_NewSelectionSet","");
        // 创建一个点对象
                  varpt = 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)
                   {
                 //得到选择集中的第一个点对象.
                        varent = ss.Item(0);
                 //输出信息.
                       alert("点击了" + ent.ObjectName + "对象");
               }
               // 取消后面的命令。
          axMxDrawX1.SendStringToExecute("");
                  return1;
       }
        return 0;
}
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-10 18:26 , Processed in 1.028573 second(s), 54 queries .

© 2020-2025 乐筑天下

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