/// <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(); //为了安全,将组切换成写 }
/// <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 }