//собирает 2 элемента, делает из них новый tagItem public void getTwoElements() { ICollection <ElementId> selectedIds = UIDOC.Selection.GetElementIds(); List <Element> elems = new List <Element>(); if (selectedIds.Count != 2) { IsTwoElementsSelected = false; NewTag = null; } else { foreach (var i in selectedIds) { elems.Add(DOC.GetElement(i)); } if (elems.Any(i => i.Category.Id.IntegerValue != (int)BuiltInCategory.OST_DetailComponents) && elems.Any(i => i.Category.Id.IntegerValue == (int)BuiltInCategory.OST_DetailComponents)) { IsTwoElementsSelected = true; EModel = elems.Where(i => i.Category.Id.IntegerValue != (int)BuiltInCategory.OST_DetailComponents).First(); EDraft = elems.Where(i => i.Category.Id.IntegerValue == (int)BuiltInCategory.OST_DetailComponents).First(); TagItem tag = new TagItem(); tag.ModelId = EModel.Id; tag.DraftId = EDraft.Id; string tagValue = EModel.LookupParameter("TAG").AsString(); tag.ModelTag = tagValue; tag.DraftTag = tagValue; NewTag = tag; } else { IsTwoElementsSelected = false; } } }