Я хочу скрыть «верхнюю» часть всех меток разъемов на схеме. Для этого я попытался настроить скрипт, но в настоящее время он скрывает ВСЕ метки (также «нижние» метки, которые я хочу сохранить):
// Get a reference to the current diagram
var currentDiagram as EA.Diagram;
currentDiagram = Repository.GetCurrentDiagram();
if (currentDiagram != null)
{
for (var i = 0; i < currentDiagram.DiagramLinks.Count; i++)
{
var currentDiagramLink as EA.DiagramLink;
currentDiagramLink = currentDiagram.DiagramLinks.GetAt(i);
currentDiagramLink.Geometry = currentDiagramLink.Geometry
.replace(/HDN=0/g, "HDN=1")
.replace(/LLT=;/, "LLT=HDN=1;")
.replace(/LRT=;/, "LRT=HDN=1;");
if (!currentDiagramLink.Update())
{
Session.Output(currentDiagramLink.GetLastError());
}
}
}
Когда я скрываю только верхние метки вручную (контекстное меню соединителя / Видимость / Установить видимость метки), свойство Geometry в DiagramLinks остается неизменным, поэтому я предполагаю, что подробная информация о видимости метки должна содержаться где-то еще в модели.
Кто-нибудь знает, как изменить мой сценарий?
Заранее спасибо!
РЕДАКТИРОВАТЬ: Диалог редактирования детальной видимости метки выглядит следующим образом:
Моя цель - программно снять флажки "верхний ярлык".
1 ответ
В атрибуте Geometry
вы найдете частичную строку, например
LLT=CX=36:CY=13:OX=0:OY=0:HDN=0:BLD=0:ITA=0:UND=0:CLR=-1:ALN=1:DIR=0:ROT=0;
Итак, между LLT
и следующей точкой с запятой вам нужно найти HDN=0
и заменить его на HDN=1
. Простое глобальное изменение, подобное приведенному выше, не сработает. Для правильной работы вам понадобится подстановочный знак, такой как в регулярном выражении LLT=([^;]+);
.
currentDiagramLink.Geometry = currentDiagramLink.Geometry .replace(/(LLT=[^;]*HDN)=0([^;]*;)/, "$1=1$2") .replace(/(LRT=[^;]*HDN)=0([^;]*;)/, "$1=1$2") .replace(/LLT=;/, "LLT=HDN=1;") .replace(/LRT=;/, "LRT=HDN=1;");
Похожие вопросы
Связанные вопросы
Новые вопросы
enterprise-architect
Enterprise Architect - это инструмент анализа и проектирования UML от Sparx Systems. Он охватывает аспекты моделирования и проектирования программного обеспечения, бизнеса и систем и подходит для сбора требований путем анализа, проектирования, конструирования, сборки, отладки, моделирования, тестирования, управления изменениями и сопровождения к внедрению с полной отслеживаемостью. Используйте тег «enterprise», если вы пытаетесь пометить общую корпоративную архитектуру.