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

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

[MXDRAW CAD控件文档]

 

下面帮助的完整例子,在控件安装目录的Sample\Ie\iedemo.htm中.

1.      主要用到函数说明

(1)    ImplementCommandEventFun

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

(2)      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,消息将不在往下传递

(3) DrawLine

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

参数

说明

DOUBLE dX1

直线的开始点x坐标

DOUBLE dY1

直线的开始点y坐标

DOUBLE dX2

直线的结束点x坐标

DOUBLE dY2

直线的结束点y坐标

(4)IMxDrawSelectionSet::SelectAtPoint2

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

2、 JS中实现代码说明

(1)在网页中引用控件,

clsid: 74A777F8-7A8F-4e7c-AF47-7074828086E2是控件的GUID.

控件程序可以做成CAB安装包,并可进行数据签名,方便网页中自动安装下载.

详细参考例子:http://www.mxdraw.com/iedemo.html

 <objectclassid="clsid: 74A777F8-7A8F-4e7c-AF47-7074828086E2"id="MxDrawXCtrl" codebase="http://www.mxdraw.com/MxDrawX.CAB#version=1,0,0,1"width=100% height=90%>

                          <paramname="_Version" value="65536">

                          <paramname="_ExtentX" value="24262">

                          <paramname="_ExtentY" value="16219">

                          <paramname="_StockProps" value="0">

                            <!--<param name="DwgFilePath"value="http://www.mxdraw.com/downland/test.dwg"> -->

                            <paramname="IsRuningAtIE" value="1">

                            <paramname="EnablePrintCmd" value="1">



                            <paramname="ShowStatusBar" value="1">

                            <paramname="ShowMenuBar" value="1">

                            <paramname="ShowToolBars" value="1">

                            <paramname="ShowCommandWindow" value="1">

                            <paramname="ShowModelBar" value="1">

                            <paramname="IniFilePath"value="AutoActive=N,LoadMrx=PropertyEditor.mrx">



                       <param name="ToolBarFiles" value="MxDraw-ToolBar.mxt,MxDraw-ToolBar-DrawParam.mxt,MxDraw-ToolBar-Draw.mxt,MxDraw-ToolBar-Edit.mxt">



  </object>

<script>

(2)设置命令事件回调函数

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

(3)设置鼠标事件回调函数

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

(4) 在命令事件交互绘制一条直线

该事件将会被,网页中的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);

                  

         }

}

(5)在鼠标事件中得到鼠标点击的对象.

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)

                     {

                 // 得到选择集中的第一个点对象.

                         var ent = ss.Item(0);



                 // 输出信息.

                         alert("点击了" + ent.ObjectName + "对象");

                }

                 // 取消后面的命令。

           axMxDrawX1.SendStringToExecute("");

                   return1;

      

        }

         return 0;

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值