/// <summary> /// Find Entity Group Id /// </summary> /// <param name="trans"></param> /// <param name="dbObject"></param> /// <returns></returns> public static ObjectId FindEntityGroupId(Transaction trans, DBObject dbObject) { var col = dbObject.GetPersistentReactorIds(); if (col != null) { foreach (ObjectId id in col) { using (DBObject obj = trans.GetObject(id, OpenMode.ForRead)) { if (obj is Group) { return(obj.ObjectId); } } } } return(ObjectId.Null); }
/// <summary> /// 获取实体对象所在的组 /// </summary> /// <param name="entId">实体的Id</param> /// <returns>返回实体所在的组</returns> public static IEnumerable <ObjectId> GetGroups(this ObjectId entId) { DBObject obj = entId.GetObject(OpenMode.ForRead);//打开实体 //获取实体对象所拥有的永久反应器(组也属性永久反应器之一) ObjectIdCollection ids = obj.GetPersistentReactorIds(); if (ids != null && ids.Count > 0) { //对实体的永久反应器进行筛选,只返回组 var groupIds = from ObjectId id in ids //获取永久反应器对象 let reactor = id.GetObject(OpenMode.ForRead) //筛选条件设置为Group类 where reactor is Group select id; if (groupIds.Count() > 0) //如果实体属于组 { return(groupIds); //返回实体所在组的ObjectId } } return(null);//没有组,则返回空值 }