梦想CAD控件网页版搜索图面上的文字

主要用到函数说明:

 

_DMxDrawX::NewSelectionSet

 

实例化一个构造选择集进行过滤,该类封装了选择集及其处理函数。

 

_DMxDrawX::NewResbuf

 

新创建IMxDrawResbuf对象,构造一个过滤链表。

 

IMxDrawResbuf::AddStringEx

 

向链表中增加一个string数据,比如:把文字对象,当着过滤条件。

 

1

spFilte.AddStringEx("TEXT,MTEXT",5020);

 

 

IMxDrawSelectionSet::Select2

 

根据指定的选择方式在图上构造选择集,详细说明如下:

 

参数 说明

[in] MCAD_McSelect Mode

构造选择集方式

[in] VARIANT point1

构造择择集时需要使用到的点对象

[in] VARIANT point2

构造择择集时需要使用到的点对象

[in,optional] VARIANT filterType

构造选择集的过滤数据的类型

[in,optional] VARIANT filterData

构造选择集的过滤数据

js中实现代码说明

实例化一个构造选择集进行过滤,该类封装了选择集及其处理函数。将文字对象当作过滤条件,得到文字对象(此处可以是文字或多行文字)。

 

1

2

3

4

5

6

7

8

// 创建选择集对象

ss = mxOcx.NewSelectionSet();   

// 创建一个链表对象   

var spFilte = mxOcx.NewResbuf();

// 把文字,多行文字当着过滤条件

spFilte.AddStringEx("TEXT,MTEXT",5020);

// 得到图上所有文字,5代码,全图选择

ss.Select2(5,null,null,null,spFilte);

 

遍历每个文字对象,将文字放到视区中间并绘制一个标记圆。

 

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

55

56

57

58

59

60

61

62

63

64

// 遍历每个文字.

var bFind = false;

  

    // 遍历选择集

for(var i = 0; i < ss.Count;i++)

{

         // 得到选集中的实体

var ent = ss.Item(i);

if(ent == null)

continue;

if (ent.ObjectName == "McDbText") {

             // 得到文字内容

    var sTxt = ent.TextString;

  

    if (sTxt == txt) {

        // 把文字放到视区中间.

        mxOcx.PutEntityInView(ent.ObjectID, 300);

  

  

        var dLen = mxOcx.ViewLongToDocCoord(80);

  

        // 绘制一个标记圆.

        mxOcx.DrawVectorCircle(ent.Position.x,

ent.Position.y,

dLen, 65280);

        bFind = true;

    }

}

   else if (ent.ObjectName == "McDbMText") {

  

                     

        var param = mxOcx.NewResbuf();

        param.AddObjectId(ent.ObjectID);

                  // 得到多行文字中的文字本内容

        var ret = mxOcx.CallEx("Mx_GetMTextContent", param);

        if (ret.AtString(0) == "Ok") {

  

            if (ret.AtString(1) == txt) {

                // 把文字放到视区.

                mxOcx.PutEntityInView(ent.ObjectID, 300);

  

                var dLen = mxOcx.ViewLongToDocCoord(80);

  

                // 绘制一个标记圆.

                mxOcx.DrawVectorCircle(ent.Location.x,

            ent.Location.y,

            dLen, 65280);

                bFind = true;

  

                break;

            }

        }

    }

ent = null;

    }

  

    if (!bFind) {

    alert("没有找到文字对象");

    }

    // 在这里必须显示释放控件的COM对象指针.

    ss = null;

    spFilte = null;

    CollectGarbage();

}

效果展示

用户可以通过点击查找图上文字按钮,获取目标文字输入框。如下图所示:

 

梦想CAD控件网页版搜索图面上的文字_第1张图片

 

查找结果如下图所示:

 

梦想CAD控件网页版搜索图面上的文字_第2张图片

 

如果输入目标文字不存在则提示没有找到文字对象,效果如下:

 

梦想CAD控件网页版搜索图面上的文字_第3张图片

你可能感兴趣的:(WEB前端,梦想CAD控件帮助文档)