编程修改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
顶!!!!!!!!!!!!!!!!!!!!!!!!!
(*^__^*) 嘻嘻……
顶起来…………
顶!!!!!!!!!!
顶!!!!!!!!!!
顶起来…………
页:
[1]