读取DWG文件中的文本信息(CAD2004)
还是那句话,工作需要,不然是不会研究这个的.也许有的人会遇到跟我一样的问题,有兴趣看看,可以节约点时间.运行时要引用CAD2004的COM,这种读取文本的方式并不好,需要机器上装有AUTOCAD2004,而且针对不同的版本,程序可能要进行修改,如果有朋友能有比较好的解决方法,或者第三方控件,欢迎联系.下面将代码贴上:
1
using System;
2
using System.Collections.Generic;
3
using System.Text;
4
using System.IO;
5
6
namespace AutoCADFilter
7
{
8
public class Filter
9
{
10
public Filter()
11
{
12
13
}
14
/// <summary>
15
/// 读取dwg文件中的文本信息
16
/// </summary>
17
/// <remarks>读取dwg文件中的文本信息</remarks>
18
/// <returns>文本内容</returns>
19
private string ReadDwg(string path)
20
{
21
22
string content = "";
23
string filename = "";
24
FileInfo finfo = new FileInfo(path);
25
filename = finfo.Name;
26
AutoCAD.AcadApplication ap = new AutoCAD.AcadApplication();
27
lock (ap)
28
{
29
try
30
{
31
AutoCAD.AcadDocument ad = ap.Documents.Open(path,true, null);
32
for (int i = 0; i < ad.ModelSpace.Count; i++)
33
{
34
if (ad.ModelSpace.Item(i).ObjectName.ToLower().Equals("acdbmtext"))
35
{
36
AutoCAD.IAcadMText im = (AutoCAD.IAcadMText)ad.ModelSpace.Item(i);
37
content += im.TextString;
38
}
39
else if (ad.ModelSpace.Item(i).ObjectName.ToLower().Equals("acdbtext"))
40
{
41
AutoCAD.IAcadText im = (AutoCAD.IAcadText)ad.ModelSpace.Item(i);
42
content += im.TextString;
43
}
44
}
45
ad.Close(false, filename);
46
}
47
finally
48
{
49
50
ap.Quit();
51
}
52
}
53
return content;
54
}
55
56
public string Parse(string path)
57
{
58
return ReadDwg(path);
59
60
}
61
}
62
}

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
