AutoCAD.Net/C#.Net QQ群:193522571 遍历块属性值时,如何避免遍历到已经删除的属性?
2014-04-19 19:00
579 查看
将这一句中加入openerased的选项,这样对于已经删除的块就不会去遍历了。
AttributeReference attRef = (AttributeReference)trans.GetObject(attId, OpenMode.ForRead,true);
AttributeReference attRef = (AttributeReference)trans.GetObject(attId, OpenMode.ForRead,true);
/// <summary> /// 获取指定名称的块属性值 /// </summary> /// <param name="blockReferenceId">块参照的Id</param> /// <param name="attributeName">属性名</param> /// <returns>返回指定名称的块属性值</returns> public static string GetAttributeInBlockReference(this ObjectId blockReferenceId, string attributeName) { string attributeValue = string.Empty; // 属性值 Database db = blockReferenceId.Database; using (Transaction trans = db.TransactionManager.StartTransaction()) { // 获取块参照 BlockReference bref = (BlockReference)trans.GetObject(blockReferenceId, OpenMode.ForRead); // 遍历块参照的属性 foreach (ObjectId attId in bref.AttributeCollection) { // 获取块参照属性对象 AttributeReference attRef = (AttributeReference)trans.GetObject(attId, OpenMode.ForRead,true); //判断属性名是否为指定的属性名 if (attRef.Tag.ToUpper() == attributeName.ToUpper()) { attributeValue = attRef.TextString;//获取属性值 break; } } trans.Commit(); } return attributeValue; //返回块属性值 }
相关文章推荐
- C#XML文件操作类(二)
- C#:XML操作类
- C#学习笔记1
- MVC#概述
- C#局域网桌面共享软件制作(一)
- C# float与Byte[]互换
- 通过.NET客户端异步调用Web API(C#)
- C#WinFrom之ComboBox设初始值
- CLR的一个核心——垃圾回收
- C# 系统应用之调用SDelete程序粉碎文件及基础原理知识
- c#如何跨越线程调用窗体上的控件 GOOD
- C#线程之异步调用(一)执行长时间的方法
- 文件处理-Directory类 (C#)
- 【C#历程】Upper in CH
- 用C#Numberics库写的简单RSA算法
- 基础排序算法(三)——对半插入排序
- C# 无边框异型窗体制作
- C#中子线程操作主线程中窗体上控件的方法
- C# 线程间互相通信
- C# 计时器