Попался мне тут любопытный вопрос про регенерацию одного конкретного правила iLogic.
Способ регенерировать все правила в текущем документе известен. Для этого достаточно выполнить команду "iLogic.RegenAllRules":
Dim controlDef as ControlDefinition = ThisApplication. _
CommandManager.ControlDefinitions.Item("iLogic.RegenAllRules")
controlDef.Execute2(True)
А как можно осуществить регенерацию одного конкретного правила, если нежелательно трогать остальные?
Специальной функции в API нет, но нашелся вот такой ход.
Если переопределить текст правила iLogic, то список параметров, на которые ссылается данное правило, очищается (обновляется), что, собственно, и требуется. После этого можно инициировать выполнение правила.
auto = iLogicVb.Automation
rule0 = auto.GetRule(ThisDoc.Document, "Rule0")
' Reset для текста правила очищает список параметров,
' на которые правило ссылается
rule0.Text = rule0.Text
auto.RunRuleDirect(rule0)
Метод работает