技术开发 频道

读取DWG文件中的文本信息


【IT168技术文档】

  还是那句话,工作需要,不然是不会研究这个的.也许有的人会遇到跟我一样的问题,有兴趣看看,可以节约点时间.运行时要引用CAD2004的COM,这种读取文本的方式并不好,需要机器上装有AUTOCAD2004,而且针对不同的版本,程序可能要进行修改,如果有朋友能有比较好的解决方法,或者第三方控件,欢迎联系.下面将代码贴上:
1using System; 2using System.Collections.Generic; 3using System.Text; 4using System.IO; 5 6namespace 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}
0
相关文章