/// <summary> /// Установка Tags для выделеного коннектора и других видимых на диаграмме линков того же типа /// </summary> /// <returns></returns> public ExecResult <Boolean> SetSimilarLinksTags(string location) { ExecResult <Boolean> result = new ExecResult <bool>(); try { // Сначала получаем список выделеннеых библиотечных элементов EA.Connector selectedConnector = EAHelper.GetSelectedLibConnector_Diagram(); if (selectedConnector == null) { throw new Exception("Не выделены библиотечные элементы"); } // Создаём список коннекторов и добавляем к нему выделенный List <EA.Connector> connectorList = new List <EA.Connector>(); // Ищем на диаграмме другие линки такого же типа foreach (EA.DiagramLink curDL in CurrentDiagram.DiagramLinks) { EA.Connector curConnector = EARepository.GetConnectorByID(curDL.ConnectorID); if (!curDL.IsHidden && curConnector.Type == selectedConnector.Type) { connectorList.Add(curConnector); } } // Конструируем данные тэгов для формы List <TagData> curTagDataList = new List <TagData>(); foreach (EA.Connector connector in connectorList) { foreach (EA.ConnectorTag taggedValue in selectedConnector.TaggedValues) { string tagName = taggedValue.Name; TagData curTagData; curTagData = curTagDataList.FirstOrDefault(item => (item.TagName == tagName)); if (curTagData == null) { curTagData = new TagData() { TagName = tagName, TagValue = taggedValue.Value }; curTagDataList.Add(curTagData); } curTagData.TagState = true; curTagData.Ex = false; curTagData.Count++; } } // Открываем форму для установки Tags ExecResult <List <TagData> > setTagsResult = new FSetTags().Execute(curTagDataList); if (setTagsResult.code != 0) { return(result); } // Прописываем в элементах что наустанавливали на форме foreach (EA.Connector connector in connectorList) { foreach (TagData curTagData in setTagsResult.value) { if (curTagData.Enabled) // записываем только для Tags, в котоорые разрешено { if (curTagData.TagState == false) { EATVHelper.TaggedValueRemove(connector, curTagData.TagName); } else { EATVHelper.TaggedValueSet(connector, curTagData.TagName, curTagData.TagValue); } } } } } catch (Exception ex) { result.setException(ex); } return(result); }
/// <summary> /// Установка Tags для выделенных элементов /// </summary> /// <returns></returns> public ExecResult <Boolean> SetElementTags(string location) { ExecResult <Boolean> result = new ExecResult <bool>(); try { // Сначала получаем список выделеннеых библиотечных элементов List <EA.Element> selectedLibElements = new List <EA.Element>(); switch (location) { case "TreeView": selectedLibElements = EAHelper.GetSelectedLibElement_Tree(); break; case "Diagram": if (!Context.CheckCurrentDiagram()) { throw new Exception("Не установлена или не открыта текущая диаграмма"); } selectedLibElements = EAHelper.GetSelectedLibElement_Diagram(); break; case "MainMenu": if (CurrentDiagram != null) { if (Context.CheckCurrentDiagram()) { selectedLibElements = EAHelper.GetSelectedLibElement_Diagram(); } else { selectedLibElements = EAHelper.GetSelectedLibElement_Tree(); } } else { selectedLibElements = EAHelper.GetSelectedLibElement_Tree(); } break; } if (selectedLibElements.Count == 0) // если не выделены элементы - пытаемся найти выделенные коннекторы { if (location == "Diagram" || location == "MainMenu") { EA.Connector selectedConnector = EAHelper.GetSelectedLibConnector_Diagram(); if (selectedConnector != null) { return(Context.LinkDesigner.SetConnectorTags(location)); } } else { throw new Exception("Не выделены библиотечные элементы"); } } // Конструируем данные тэгов для формы List <TagData> curTagDataList = new List <TagData>(); foreach (EA.Element curElement in selectedLibElements) { foreach (EA.TaggedValue taggedValue in curElement.TaggedValuesEx) { string tagName = taggedValue.Name; TagData curTagData; curTagData = curTagDataList.FirstOrDefault(item => (item.TagName == tagName)); if (curTagData == null) { curTagData = new TagData() { TagName = tagName, TagValue = taggedValue.Value }; curTagDataList.Add(curTagData); } curTagData.TagState = true; curTagData.Count++; if (taggedValue.ElementID != curElement.ElementID) { curTagData.Ex = true; } } } // Открываем форму для установки Tags ExecResult <List <TagData> > setTagsResult = new FSetTags().Execute(curTagDataList); if (setTagsResult.code != 0) { return(result); } // Прописываем в элементах что наустанавливали на форме foreach (EA.Element curElement in selectedLibElements) { foreach (TagData curTagData in setTagsResult.value) { if (curTagData.Enabled) // записываем только для Tags, в котоорые разрешено { if (curTagData.TagState == false) { EATVHelper.TaggedValueRemove(curElement, curTagData.TagName); } else { EATVHelper.TaggedValueSet(curElement, curTagData.TagName, curTagData.TagValue); } } } } } catch (Exception ex) { result.setException(ex); } return(result); }
/// <summary> /// Установка Tags для выделенного коннектора /// </summary> /// <returns></returns> public ExecResult <Boolean> SetConnectorTags(string location) { if (!Context.CheckCurrentDiagram()) { throw new Exception("Не установлена или не открыта текущая диаграмма"); } ExecResult <Boolean> result = new ExecResult <bool>(); try { // Сначала получаем список выделеннеых библиотечных элементов EA.Connector selectedConnector = EAHelper.GetSelectedLibConnector_Diagram(false); if (selectedConnector == null) { throw new Exception("Не выделены библиотечные элементы"); } // Конструируем данные тэгов для формы List <TagData> curTagDataList = new List <TagData>(); foreach (EA.ConnectorTag taggedValue in selectedConnector.TaggedValues) { string tagName = taggedValue.Name; TagData curTagData = new TagData() { TagName = tagName, TagValue = taggedValue.Value }; curTagData.TagState = true; curTagData.Ex = false; curTagData.Count = 1; curTagDataList.Add(curTagData); } // Открываем форму для установки Tags ExecResult <List <TagData> > setTagsResult = new FSetTags().Execute(curTagDataList); if (setTagsResult.code != 0) { return(result); } // Прописываем в элементах что наустанавливали на форме foreach (TagData curTagData in setTagsResult.value) { if (curTagData.Enabled) // записываем только для Tags, в котоорые разрешено { if (curTagData.TagState == false) { EATVHelper.TaggedValueRemove(selectedConnector, curTagData.TagName); } else { EATVHelper.TaggedValueSet(selectedConnector, curTagData.TagName, curTagData.TagValue); } } } } catch (Exception ex) { result.setException(ex); } return(result); }