找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1230|回复: 1

[分享] DeleteShortLinesDynamicallyCmd

[复制链接]

已领礼包: 859个

财富等级: 财运亨通

发表于 2014-6-13 03:00:23 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
[CommandMethod("DeleteShortLinesDynamically")
public void DeleteShortLinesDynamicallyCmd()
{
   Database db = HostApplicationServices.WorkingDatabase;
   TransactionManager tm = db.TransactionManager;
   using (Transaction tr = tm.StartTransaction())
   {
       dynamic btr = new MyDynamicObject(SymbolUtilityServices.GetBlockModelSpaceId(db));
       foreach (var ent in btr)
       {
           if (ent.IsKindOf(typeof(Line)) && ent.Length < 0.1)
           {
               ent.UpgradeOpen();
               ent.Erase();
           }
       }
       tr.Commit();
   }
}
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 859个

财富等级: 财运亨通

 楼主| 发表于 2014-6-13 03:03:15 | 显示全部楼层
public class MyDynamicObject : DynamicObject
{
   public MyDynamicObject(ObjectId oid)
   {
       ObjectId = oid;
   }
   public ObjectId ObjectId { get; private set; }
   private DBObject dbobject;
   public DBObject DBObject
   {
       get
       {
           if (dbobject == null)
               dbobject = ObjectId.GetObject(OpenMode.ForRead);
           return dbobject;
       }
   }
   public override bool TryGetMember(GetMemberBinder binder, out object result)
   {
       try
       {
           object xxx = DBObject.GetType().InvokeMember(binder.Name, BindingFlags.GetProperty, null, DBObject, null);
           result = xxx == null ? null : promoteId(xxx);
           return true;
       }
       catch
       {
           result = null;
           return false;
       }
   }
   public override bool TryInvokeMember(InvokeMemberBinder binder, object[] args, out object result)
   {
       try
       {
           object xxx = DBObject.GetType().InvokeMember(binder.Name, BindingFlags.InvokeMethod, null, DBObject, args);
           result = xxx == null ? null : promoteId(xxx);
           return true;
       }
       catch
       {
           result = null;
           return false;
       }
   }
   public override bool TrySetMember(SetMemberBinder binder, object value)
   {
       try
       {
           DBObject.GetType().InvokeMember(binder.Name, BindingFlags.SetProperty, null, DBObject, new object[] { value });
           return true;
       }
       catch
       {
           return false;
       }
   }
   public override bool TryConvert(ConvertBinder binder, out object result)
   {
       try
       {
           if (binder.ReturnType == typeof(IEnumerable))
           {
               result = testIEnum(DBObject);
           }
           else if (binder.ReturnType == typeof(ObjectId))
           {
               result = ObjectId;
           }
           else
           {
               result = DBObject;
           }
           return true;
       }
       catch
       {
           result = null;
           return false;
       }
   }
   object promoteId(object value)
   {
       if (!(value is ObjectId))
           return value;
       return new MyDynamicObject((ObjectId)value);
   }
   static object testIEnum(object value)
   {
       if (!(value is AttributeCollection ||
           value is ObjectIdCollection ||
           value is SymbolTable ||
           value is SymbolTableRecord ||
           value is IEnumerable<ObjectId>))
           return value;
       return makeIEnum(value);
   }
   static IEnumerable<MyDynamicObject> makeIEnum(object value)
   {
       foreach (ObjectId oid in (IEnumerable)value)
       {
           yield return new MyDynamicObject(oid);
       }
   }
   public bool IsKindOf(Type type)
   {
       return DBObject.GetRXClass().IsDerivedFrom(RXClass.GetClass(type));
   }
}
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-11-17 22:43 , Processed in 0.209565 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表