Exemplo n.º 1
0
        /// <summary>
        /// 向已有组中添加对象
        /// </summary>
        /// <param name="groupId">组对象的Id</param>
        /// <param name="entIds">要加入到组中的实体的ObjectId集合</param>
        public static void AppendEntityToGroup(this ObjectId groupId, ObjectIdList entIds)
        {
            //打开组对象
            Group group = groupId.GetObject(OpenMode.ForRead) as Group;

            if (group == null)
            {
                return;            //如果不是组对象,则返回
            }
            group.UpgradeOpen();   // 切换组为写状态
            group.Append(entIds);  // 在组中添加实体对象
            group.DowngradeOpen(); //为了安全,将组切换成写
        }
Exemplo n.º 2
0
        /// <summary>
        /// 创建组
        /// </summary>
        /// <param name="db">数据库对象</param>
        /// <param name="groupName">组名</param>
        /// <param name="ids">要加入实体的ObjectId集合</param>
        /// <returns>返回组的Id</returns>
        public static ObjectId CreateGroup(this Database db, string groupName, ObjectIdList ids)
        {
            //打开当前数据库的组字典对象
            DBDictionary groupDict = (DBDictionary)db.GroupDictionaryId.GetObject(OpenMode.ForRead);

            //如果已经存在指定名称的组,则返回
            if (groupDict.Contains(groupName))
            {
                return(ObjectId.Null);
            }
            //新建一个组对象
            Group group = new Group(groupName, true);

            groupDict.UpgradeOpen(); //切换组字典为写的状态
            //在组字典中加入新创建的组对象,并指定它的搜索关键字为groupName
            groupDict.SetAt(groupName, group);
            //通知事务处理完成组对象的加入
            db.TransactionManager.AddNewlyCreatedDBObject(group, true);
            group.Append(ids);         // 在组对象中加入实体对象
            groupDict.DowngradeOpen(); //为了安全,将组字典切换成写
            return(group.ObjectId);    //返回组的Id
        }