Добрый день.
В общем у меня было опасение, что задав триггер на изменение параметра, триггер будет срабатывать только если будет изменен параметр того элемента, параметр которого вы использовали при установке триггера.
Сейчас проверил. Это не так. Триггер будет срабатывать для всех элементов, у которых есть этот параметр.
Т.е. выполнив однажды вот такой код:
// Ищем параметр элемента
var parameter = selectedElement.get_Parameter("Left Set");
// регистрируем Updater
Updater1 updater1 = new Updater1(commandData.Application.ActiveAddInId);
UpdaterRegistry.RegisterUpdater(updater1);
// Добавляем триггер на изменение параметра
UpdaterRegistry.AddTrigger(updater1.GetUpdaterId(), new ElementCategoryFilter(BuiltInCategory.OST_DuctFitting), Element.GetChangeTypeParameter(parameter));
Триггер будет срабатывать на все экземпляры заданного семейства с параметром Left Set.
Таким образом, нет необходимости задавать триггер для каждого элемента.
Но теперь возникает другая задача. В какой момент зарегистрировать триггер. Ведь нужно получить параметр. А его мы можем получить только если у нас открыт документ и в нем есть нужный фитинг.
Напрашивается конечно наличие возможности задать GUID общего параметра в методе Element.GetChangeTypeParameter(). Тогда можно было при старте приложения зарегистрировать триггер на изменение параметра с заданным Guid. Но, к сожалению, такого нет.