Ejemplo n.º 1
0
        /// <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);
        }
Ejemplo n.º 2
0
        /// <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);//没有组,则返回空值
        }