土木在线论坛 \ 建筑设计 \ 城市规划设计 \ 在网页中引用DWG控件,交互绘图,和响应鼠标点击对象的方法

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

发布于:2018-03-16 10:59:16 来自:建筑设计/城市规划设计 [复制转发]

在网页中引用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:

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

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

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

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

height=90%> 

                       

                         

                         

                         

                         

                         

                         

                         

                         

                         

                     

name="ToolBarFiles"

value="MxDraw-ToolBar.mxt,MxDraw-ToolBar-DrawParam.mxt,MxDraw-ToolBar-Draw.mxt,MxDraw-ToolBar-Edit.mxt">

 

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)     

{

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

            var

ent = ss.Item(0);

                //输出信息.          

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

             

}


// 取消后面的命令。      

  axMxDrawX1.SendStringToExecute("");                 

return1;      

}       

return 0;

}



全部回复(0 )

只看楼主 我来说两句抢沙发

城市规划设计

返回版块

15.37 万条内容 · 248 人订阅

猜你喜欢

阅读下一篇

精品酒店,浓缩的星级酒店 IDAC彦翔设计

随着生活水平和文化修养的提升,传统酒店类型已经满足不了消费者日趋上扬的审美与精神需求;而品质化、精细化、住宿需求将成为市场和人群的大趋势,因此,精品酒店诞生了,精品酒店的诞生可以说是在酒店发展历程中增添一笔浓重的色彩。 精品酒店设计时一定要注意的两个重要的因素:准确的市场定位以及独特个性的设计。 精准的市场定位,可以让酒店清晰看到自身的优势,服务好自身的客户群体。酒店设计之前,必须先完成市场调研、酒店选址、酒店定位、酒店规模档次确定、明确酒店的消费群体,酒店因地制宜,发挥自身优势,增加酒店的综合竞争能力。

回帖成功

经验值 +10