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

萧闫子 发表于 2014-1-15 14:14:26

编程修改group内对象

当对象组织到一个组(Group)内,对象就不允许修改,原因是他们已经在组的立面。

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

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



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



view plaincopy


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

鹦鹉仔 发表于 2014-2-14 10:15:36

顶!!!!!!!!!!!!!!!!!!!!!!!!!

长风 发表于 2014-2-15 14:29:39

(*^__^*) 嘻嘻……

矮矮 发表于 2014-2-15 14:35:23

顶起来…………

順順 发表于 2014-2-18 12:05:11

顶!!!!!!!!!!

龙龙..! 发表于 2014-2-19 14:54:55

顶!!!!!!!!!!

影馨 发表于 2014-2-20 14:05:55

顶起来…………

页: [1]
查看完整版本: 编程修改group内对象