乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 131|回复: 9

createGroup函数

[复制链接]

15

主题

45

帖子

3

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
105
发表于 2010-11-2 08:13:00 | 显示全部楼层 |阅读模式
public void CreateGroup(ObjectIdCollection objIds, string groupName)
        {
            Group gp = new Group(groupName, true);
                      //创建名为groupName的组            
              Database db = HostApplicationServices.WorkingDatabase;
                       using (Transaction ta = db.TransactionManager.StartTransaction())   //启动事务处理
            {
                DBDictionary dict = (DBDictionary)ta.GetObject(db.GroupDictionaryId, OpenMode.ForWrite,true);  //获取组所在的"Group"字典
                dict.SetAt(groupName, gp);  //在"Group"字典中加入组对象
                foreach (ObjectId thisId in objIds)  //遍历传入的实体集合的ObjectId
                {
                    gp.Append(thisId);   //在组中加入ObjectId为thisId的实体
                }
                ta.AddNewlyCreatedDBObject(gp, true);
                ta.Commit(); //提交事务处理
                ta.Dispose();
            }
        }
为什么每次执行之后,都是当前的能够组正确,再执行一次,前面的组就被分解了,只有当前的是一个组????纠结了半天了,还没看出端倪来
回复

使用道具 举报

72

主题

2726

帖子

9

银币

社区元老

Rank: 75Rank: 75Rank: 75

铜币
3014
发表于 2010-11-2 09:30:00 | 显示全部楼层
试下

                Group g = new Group();
                g.Append(ids);
                GroupDictionary.SetAt(name, g);
                Transaction.AddNewlyCreatedDBObject(g, true);
回复

使用道具 举报

15

主题

45

帖子

3

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
105
发表于 2010-11-2 10:50:00 | 显示全部楼层
还是不行,只要用一次,原来的就被分解了!!
回复

使用道具 举报

72

主题

2726

帖子

9

银币

社区元老

Rank: 75Rank: 75Rank: 75

铜币
3014
发表于 2010-11-2 11:52:00 | 显示全部楼层
你的两次调用,name有变化么?
回复

使用道具 举报

15

主题

45

帖子

3

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
105
发表于 2010-11-2 13:09:00 | 显示全部楼层
没有变化!name是一个定值arrow,
ObjectIdCollection ocolls = new ObjectIdCollection();               
ocolls.Add(arrow.ObjectId);
                ocolls.Add(plxy.ObjectId);
                CreateGroup(ocolls, "arrow");
回复

使用道具 举报

72

主题

2726

帖子

9

银币

社区元老

Rank: 75Rank: 75Rank: 75

铜币
3014
发表于 2010-11-2 15:36:00 | 显示全部楼层
改成CreateGroup(ocolls, "*");
回复

使用道具 举报

15

主题

45

帖子

3

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
105
发表于 2010-11-2 15:53:00 | 显示全部楼层
还是不行!!!郁闷啊!!
回复

使用道具 举报

15

主题

45

帖子

3

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
105
发表于 2010-11-5 16:55:00 | 显示全部楼层
没有别的方法了吗???这是什么情况呢??
回复

使用道具 举报

72

主题

2726

帖子

9

银币

社区元老

Rank: 75Rank: 75Rank: 75

铜币
3014
发表于 2010-11-5 23:19:00 | 显示全部楼层
我的测试代码很正常哈
  1.         [CommandMethod("tt6")]
  2.         public static void test26()
  3.         {
  4.             Document doc = Application.DocumentManager.MdiActiveDocument;
  5.             Editor ed = doc.Editor;
  6.             Database db = doc.Database;
  7.             var resSel = ed.GetSelection();
  8.             if (resSel.Status != PromptStatus.OK)
  9.                 return;
  10.             using (Transaction tr = db.TransactionManager.StartTransaction())
  11.             {
  12.                 DBDictionary groupDict = tr.GetObject(db.GroupDictionaryId, OpenMode.ForWrite) as DBDictionary;
  13.                 Group g = new Group();
  14.                 g.Append(new ObjectIdCollection(resSel.Value.GetObjectIds()));
  15.                 groupDict.SetAt("*", g);
  16.                 tr.AddNewlyCreatedDBObject(g, true);
  17.                 tr.Commit();
  18.             }
  19.         }
回复

使用道具 举报

15

主题

45

帖子

3

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
105
发表于 2010-11-8 09:30:00 | 显示全部楼层
可以了,可以了!!!太感谢了!!!!上次改的代码没有用到!!!!,真是麻烦了。太感谢了
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-6-29 03:39 , Processed in 1.625768 second(s), 73 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表