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

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

2、主要用到函数说明:ImplementCommandEventFun

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

3、ImplementMouseEventFun

控件的鼠标事件函数,可以用JS程序里,响应鼠标事件,详细说明如下:

参数说明

LONG lType

事件类型,1鼠标移动,2是鼠标左键按下,3是鼠标右键按下,4是鼠标左键双击 5是鼠标左键释放 6是鼠标右键释放 7是鼠标中键按下 8是鼠标中键释放 9是鼠标中键双击 10是鼠标中键滚动

DOUBLE dX

事件发生时的鼠标X坐标,文档坐标

DOUBLE dY

事件发生时的鼠标Y坐标,文档坐标

LONG* lRet

lRet 返回非0,消息将不在往下传递

4、DrawLine

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

参数说明

DOUBLE dX1

直线的开始点x坐标

DOUBLE dY1

直线的开始点y坐标

DOUBLE dX2

直线的结束点x坐标

DOUBLE dY2

直线的结束点y坐标

5、IMxDrawSelectionSet::SelectAtPoint2

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

6、js中实现代码说明:

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

1

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

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

1

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

(3)该事件将会被,网页中的myclick按钮点击触发,如下:

1

2

3

4

function myclick()

{

document.getElementById("MxDrawXCtrl").DoCommand(1);

}

(4)下面是绘制直线代码:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

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

 

}

}

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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

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;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值