CAD制作简单动画

主要用到函数说明:

1、IMxDrawEntity::Rotate

旋转一个对象。详细说明如下:

参数说明

[in] IMxDrawPoint* basePoint

旋转基点

[in] DOUBLE dRotationAngle

旋转角度

2、IMxDrawAnimation::GetAnimationEntity2

得到动画临时对象.如果对象没有被初始成动画状态,返回为 NULL。详细说明如下:

参数说明

[in] BSTR pszHandle

动画对象句柄

js中实现代码说明:

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

     function InitDraw() {

        draw = document.getElementById("MxDrawXCtrl");

  draw.ImplementCommandEventFun = function DoCommandEventFunc(iCmd) {

        if (iCmd == 1) {

             // 启动时打开文件

             draw.OpenDwgFile(draw.GetOcxAppPath() + "\\Blk\\animation.dwg");

             var animation = draw.NewComObject("IMxDrawAnimation");

                 //把对象初始化成动画状态

                 animation.InitAnimationEntity2("211");

      animation.InitAnimationEntity2("212");

      animation.InitAnimationEntity2("213");

                 // 启动一个控件时钟事件,用于实现动画。

      draw.CallLongParam1("Mx_StartUserTimer", 30);

             }

         };

         draw.ImplementCustomEvent = function CustomEvent(sEventName) {

if (sEventName == "Mx_UserTimer")

    {

       var animation = draw.NewComObject("IMxDrawAnimation");

       //开始一个动画绘制过程

                 animation.StartDraw();

                 // 211 212  213是需要旋转实体的句柄.

                 RotateEnt("211", animation);

                 RotateEnt("212", animation);

                 RotateEnt("213", animation);

                 //结束动画绘制过程

                 animation.EndDraw();

                 // 注意需要显示释放递代器.,不然会引起错误

       animation = null;

       CollectGarbage();

   }

         };  

     }

1

2

3

4

5

6

7

8

9

10

11

12

13

function  RotateEnt( handls,  animation)

      {

          //得到动画临时对象.如果对象没有被初始成动画状态,返回为 NULL

          var ent = animation.GetAnimationEntity2(handls);

          if (ent != null && (ent.ObjectName == "McDbBlockReference"))

          {

              var blkRef = ent;

              //旋转一个对象,参数一为旋转基点,参数二为旋转角度

              blkRef.Rotate(blkRef.Position, -30 * 3.14159265 / 180.0);

              //绘制动画对象.该函数只能在StartDraw,EndDraw之前调用

              animation.Draw2(handls);

          }

      }

3、效果展示:

JFVZQ}89C_7}Z37X[_0H@{L.png

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值