CAD工具之家's Archivers

From lefree on 2014-05-29 18:26:02

C#中读取cad文件中的属性

using System; using System.IO; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using Autodesk.AutoCAD.ApplicationServices; using Autodesk.AutoCAD.DatabaseServices; Database db = new Database(false, true); try { //把DWG文件读入到一个临时的内存数据库中 db.ReadDwgFile(fullFileName, System.IO.FileShare.ReadWrite, true, null); //现在进入数据库并获得数据库的块表引用 BlockTable bt = (BlockTable)trans.GetObject(db.BlockTableId, OpenMode.ForRead, false, true); //从块表的模型空间特性中获得块表记录,块表记录对象包含DWG文件数据库实体 BlockTableRecord btr = (BlockTableRecord)trans.GetObject(bt[BlockTableRecord.ModelSpace], OpenMode.ForRead, false, true); foreach (ObjectId btrId in btr) { DBObject entBlock = (DBObject)trans.GetObject(btrId, OpenMode.ForRead, false, true); if (entBlock.GetRXClass().DxfName.ToUpper() == "INSERT") { BlockReference bRef = (BlockReference)entBlock; if (bRef.AttributeCollection.Count != 0) { System.Collections.IEnumerator bRefEnum = bRef.AttributeCollection.GetEnumerator(); while (bRefEnum.MoveNext()) { ObjectId aId = (ObjectId)bRefEnum.Current;//这一句极其关键 AttributeReference aRef = (AttributeReference)trans.GetObject(aId, OpenMode.ForRead, false, true); aRef.TextString;//此语句即获得属性单行文本,请自行在此语句前添加 属性单行文本 赋于的变量 } } } } trans.Commit(); //提交事务处理 btr.Dispose(); bt.Dispose(); } catch (System.Exception ex) { MessageBox.Show("\n出错啦: " + ex.Message); } finally { db.Dispose(); }

查看完整版本: C#中读取cad文件中的属性

From coolcode on 2015-07-06 21:57:50

不错,真当很好

From 贺俊吉 on 2016-09-21 09:01:44

trans是什么

Tags:


©CAD工具之家
创办于:2013年5月24日