CAD绘制固定批注(网页版)

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

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

function ExplodeFun(pCustomEntity, pWorldDraw, txt) {

    var sGuid = pCustomEntity.Guid;

    if (sGuid == "TestMxCustomEntity") {

        if (!pCustomEntity.IsHave("First"))

            return;

        var stp = pCustomEntity.GetPoint("First");

        var ept = pCustomEntity.GetPoint("BasePoint");

        var dimpt = pCustomEntity.GetPoint("DimPoint");

        var txt = pCustomEntity.GetString("Text");

        var textH = pCustomEntity.GetDouble("TextHeight");

        var edgeNum = pCustomEntity.GetLong("EdgeNumber");

        var shapRadius = pCustomEntity.GetDouble("ShapRadius");

        var isCircle = pCustomEntity.GetLong("isCircle");

        // 创建一个批注对象.

        var comment = mxOcx.NewEntity("IMxDrawComment");

        //标注文字

        comment.Text = txt;

        //标注文字高度

        comment.TextHeight = textH;

        //标注位置提示多边形的边数. 小于2不绘制,=2绘制圆,大于2绘制多边形

        comment.EdgeNumber = edgeNum;

        //标注位置提示多边形的半径

        comment.ShapRadius = shapRadius;

        //标注基点

        comment.basePoint = ept;

        //标注位置点

        comment.Position = dimpt;

        // 设置文字样式

        pWorldDraw.TextStyle = "MyCommentFont";

        // 动态绘制.

        pWorldDraw.DrawEntity(comment);

        if (isCircle) {

            var dR = stp.DistanceTo(ept) * 0.5;

            var vec = stp.SumVector(ept);

            vec.Mult(0.5);

            ept.Add(vec);

            //绘制一个圆

            //参数一为圆的中心X值 ,参数二为圆的中心Y值,

            //参数三为半径

            pWorldDraw.DrawCircle(ept.x, ept.y, dR);

        }

        // 绘制矩形框.

        else {

            //绘制一个直线

            //参数一直线的开始点x坐标,参数二直线的开始点y坐标,参数三直线的结束点x坐标,参数四直线的结束点y坐标

            pWorldDraw.DrawLine(stp.x, stp.y, stp.x, ept.y);

            pWorldDraw.DrawLine(stp.x, ept.y, ept.x, ept.y);

            pWorldDraw.DrawLine(ept.x, ept.y, ept.x, stp.y);

            pWorldDraw.DrawLine(ept.x, stp.y, stp.x, stp.y);

        }

        mxOcx.SetEventRet(1);

    }

}

返回自定义实体夹点

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

function GetGripPointsFun(pCustomEntity) {

    var sGuid = pCustomEntity.Guid;

    if (sGuid == "TestMxCustomEntity") {

        if (!pCustomEntity.IsHave("First"))

            return;

        var stp = pCustomEntity.GetPoint("First");

        var ept = pCustomEntity.GetPoint("BasePoint");

        var dimpt = pCustomEntity.GetPoint("DimPoint");

        var ret = mxOcx.NewResbuf();

        ret.AddPoint(stp);

        ret.AddPoint(ept);

        ret.AddPoint(dimpt);

        mxOcx.SetEventRetEx(ret);

    }

}

移动自定义实体夹点

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

function MoveGripPointsFun(pCustomEntity, lGridIndex, dOffsetX, dOffsetY) {

    var sGuid = pCustomEntity.Guid;

    if (sGuid == "TestMxCustomEntity") {

        if (!pCustomEntity.IsHave("First"))

            return;

        var stp = pCustomEntity.GetPoint("First");

        var ept = pCustomEntity.GetPoint("BasePoint");

        var dimpt = pCustomEntity.GetPoint("DimPoint");

        if (lGridIndex == 0) {

            stp.x = stp.x + dOffsetX;

            stp.y = stp.y + dOffsetY;

            pCustomEntity.SetPoint("First", stp);

        }

        else if (lGridIndex == 1)

        {

            ept.x = ept.x + dOffsetX;

            ept.y = ept.y + dOffsetY;

            pCustomEntity.SetPoint("BasePoint", ept);

        }

        else

        {

            dimpt.x = dimpt.x + dOffsetX;

            dimpt.y = dimpt.y + dOffsetY;

            pCustomEntity.SetPoint("DimPoint", dimpt);

        }

        mxOcx.SetEventRet(1);

    }

}

固定参数绘批注

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

function DoCommentFix() {

    var comment = mxOcx.NewEntity("IMxDrawComment");

    comment.Text = "固定参数绘批注";

    comment.TextHeight = 10;

    var basepos = mxOcx.NewPoint();

    basepos.x = 0;

    basepos.y = 10;

    var pos = mxOcx.NewPoint();

    pos.x = 20;

    pos.y = 30;

    //基点

    comment.BasePoint = basepos;

    //位置

    comment.Position = pos;

    var comobj = mxOcx.ObjectIdToObject( mxOcx.DrawEntity(comment) );

    comobj.TextStyle = "MyCommentFont";

    mxOcx.ZoomAll();

}

效果展示:

通过点击固定参数绘批注按钮,触发DoCommentFix()事件,CAD控件视区将显示在js中设置好的固定参数批注。如下图所示:

biao6.png

猜你喜欢

转载自blog.csdn.net/u013725001/article/details/92803358