EaBIM一直以来积极响应国家“十二五”推进建筑业信息化的号召,对建筑领域的信息技术开展深入技术交流和探讨!致力于打造“BIM-建筑师-生态技术”三位一体综合资源交流共享平台,希望为BIM与可持续设计理念及技术的普及做出微小的贡献!!!

EaBIM

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

搜索
查看: 705|回复: 6
打印 上一主题 下一主题

编程修改group内对象

[复制链接]

1514

主题

7465

帖子

1万

积分

admin

Rank: 10Rank: 10Rank: 10Rank: 10Rank: 10Rank: 10Rank: 10Rank: 10Rank: 10Rank: 10

积分
12396

社区QQ达人

跳转到指定楼层
楼主
发表于 2014-1-15 14:14:26 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
当对象组织到一个组(Group)内,对象就不允许修改,原因是他们已经在组的立面。

有一个解决方案可以修改组内对象。基本思想就是先炸开这个组,获得组内的所有对象,已被后用。然后这些对象就是不在组内了。这时候可以用一般的修改对象的方法来修改这些对象。结束后,可以用创建新组的方法把这些对象重新组织到组内。

因为Revit为提示一些警告,为了避免这个警告,可以使用事务的方式避免警告。



下面例子演示了上面说的方法。这个命令要修改一个组内所有对象上的共享参数的值。(测试是须保证组内对象都有指定的字符型共享参数)



[c-sharp] view plaincopy
  [TransactionAttribute(Autodesk.Revit.Attributes.TransactionMode.Manual)]  
  [RegenerationAttribute(Autodesk.Revit.Attributes.RegenerationOption.Manual)]  
public class RevitCommand : IExternalCommand  
{  
    public Result Execute(ExternalCommandData commandData, ref string messages, ElementSet elements)  
    {  

      UIApplication app = commandData.Application;  
      Document doc = app.ActiveUIDocument.Document;  
      Transaction trans = new Transaction(doc, "ExComm");  
      trans.Start();  
      //pick a group  
      Selection sel = app.ActiveUIDocument.Selection;  
      Reference ref1 = sel.PickObject(ObjectType.Element, "please pick a group");  
      Group group = ref1.Element as Group;  
      //ungroup it  
      ElementSet es = group.Ungroup();  
      //change shared paremeter  
      foreach (Element elem in es)  
      {  
        Parameter param = elem.get_Parameter("MyShared");  
        param.Set("updated3");  
      }  
      doc.Regenerate();  
      trans.Commit();  
      trans = new Transaction(doc, "newgroup");  
      trans.Start();  
      //Group it again.  
      group = doc.Create.NewGroup(es);  
      trans.Commit();  

        return Result.Succeeded ;  
    }  
}  

作者:叶雄进文章来源:http://blog.csdn.net/joexiongjin/article/category/782739

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 转播转播 分享分享 分享淘帖 支持支持 反对反对
工作时间:工作日的9:00-12:00/13:30-18:00,节假日不在线,请勿留言

8

主题

702

帖子

1224

积分

BIM经理

Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6

积分
1224
3F
发表于 2014-2-15 14:29:39 | 只看该作者
(*^__^*) 嘻嘻……
*滑块验证:
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|EaBIM网 ( 苏ICP备2020058923号-1  苏公网安备32011502011255号

GMT+8, 2024-9-29 14:28

Powered by Discuz! X3.2 Licensed

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表