读取DWG文件中的文本信息(CAD2004)
还是那句话,工作需要,不然是不会研究这个的.也许有的人会遇到跟我一样的问题,有兴趣看看,可以节约点时间.运行时要引用CAD2004的COM,这种读取文本的方式并不好,需要机器上装有AUTOCAD2004,而且针对不同的版本,程序可能要进行修改,如果有朋友能有比较好的解决方法,或者第三方控件,欢迎联系.下面将代码贴上:
还是那句话,工作需要,不然是不会研究这个的.也许有的人会遇到跟我一样的问题,有兴趣看看,可以节约点时间.运行时要引用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
版权声明:本文为DarkAngel原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。