0
点赞
收藏
分享

微信扫一扫

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

念川LNSC 2022-07-27 阅读 52


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中设置好的固定参数批注。如下图所示:

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

举报

相关推荐

0 条评论