网页控件引用js中实现代码说明
网页控件引用

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


主要用到函数说明:


ImplementCommandEventFun function


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


ImplementMouseEventFun function


控件的鼠标事件函数,可以用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,消息将不在往下传递


DrawLine function


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


参数说明
DOUBLE dX1

直线的开始点x坐标

DOUBLE dY1

直线的开始点y坐标

DOUBLE dX2

直线的结束点x坐标

DOUBLE dY2

直线的结束点y坐标


IMxDrawSelectionSet::SelectAtPoint2


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

js中实现代码说明

在网页中引用控件,clsid: 74A777F8-7A8F-4e7c-AF47-7074828086E2是控件的GUID。控件程序可以做成CAB安装包,并可进行数据签名,方便网页中自动安装下载。详细参考例子:http://www.mxdraw.com/iedemo.html


   <object classid="clsid: 74A777F8-7A8F-4e7c-AF47-7074828086E2" id="MxDrawXCtrl"  codebase="http://www.mxdraw.com/MxDrawX.CAB#version=1.0.0.1" width=100% height=90%> 
     <param name="_Version" value="65536">
     <param name="_ExtentX" value="24262">
     <param name="_ExtentY" value="16219">
     <param name="_StockProps" value="0">
<!-- <param name="DwgFilePath" value="http://www.mxdraw.com/downland/test.dwg"> -->
<param name="IsRuningAtIE" value="1">
<param name="EnablePrintCmd" value="1">
 
<param name="ShowStatusBar" value="1">
<param name="ShowMenuBar" value="1">
<param name="ShowToolBars"  value="1">
<param name="ShowCommandWindow" value="1">
<param name="ShowModelBar" value="1">
<param name="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>


设置命令事件回调函数


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(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);

}
}


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


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;
}
MxDraw
MxDraw是由梦想凯德基于AutoDesk CAD平台开发的软件,拥有完全自主的核心技术和知识产权。MxDraw致力于为各企业提供最优秀的CAD平台整体解决方案。
技术服务
TEL:400-888-5703
185-8173-1060
QQ:827867134,6884123
产品购买
TEL:400-888-5703
185-8173-1060
QQ:827867134,6884123
用户交流
QQ群1:827867134
QQ群2:827867134
QQ群3:827867134