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