Изменение рабочего набора элемента
Мы уже обсуждали как можно получить текущий рабочий набор у отдельного элемента либо с помощью встроенного параметра ELEM_PARTITION_PARAM, или более легким способом с помощью метода Document.GetWorksetId.
Это еще один пример того, что одно и тоже свойство можно получить как с помощью параметра элемента, так и с помощью отдельного метода или свойства, помимо того, что мы недавно обсуждали в статье Изменение типа Видового экрана.
Однако хоть Revit API и содержит отдельное свойство для определения рабочего набора элемента, отдельного метода для изменения рабочего набора нет.
Вопрос: Свойство Element.WorksetId доступно только для чтения.
Мне же нужно изменить рабочий набор для определенного элемента.
Это возможно сделать с помощью API?
Ответ: Да, возможно. Изменить рабочий набор можно с помощью встроенного параметра ELEM_PARTITION_PARAM.
Вот пример кода, в котором показано как можно получить все рабочие наборы в документе и последовательно присвоить новый рабочий набор для заданного элемента.
- public MyClass()
- {
- Reference r = uidoc.Selection.PickObject(ObjectType.Element);
- Element e = doc.GetElement(r.ElementId);
- if (e == null)
- return;
- // Смотрим текущий рабочий набор элемента
- WorksetId wid = e.WorksetId;
- TaskDialog.Show("Идентификатор рабочего набора", wid.ToString());
- // находим встроенный параметр с идентификатором рабочего набора
- Parameter wsparam = e.get_Parameter(
- BuiltInParameter.ELEM_PARTITION_PARAM);
- if (wsparam == null)
- return;
- // Находим все пользовательские рабочие наборы
- FilteredWorksetCollector worksets
- = new FilteredWorksetCollector(doc)
- .OfKind(WorksetKind.UserWorkset);
- using (Transaction tx = new Transaction(doc))
- {
- tx.Start("Изменение рабочего набора");
- foreach (Workset ws in worksets)
- {
- wsparam.Set(ws.Id.IntegerValue);
- }
- tx.Commit();
- }
- wid = e.WorksetId;
- // Новый рабочий набор
- TaskDialog.Show("Идентификатор рабочего набора", wid.ToString());
- }
Спасибо Филу Ксиа (Phil Xia) за подсказку!
Источник: http://thebuildingcoder.typepad.com/blog/2013/01/change-element-workset.html
Обсуждение: http://adn-cis.org/forum/index.php?topic=386
Опубликовано 07.12.2013Отредактировано 07.12.2013 в 08:12:36