/// <summary> /// Функция вычисляет размеры элемента по умолчанию, если они нулевые /// Если есть настройки размера в элементе - используются настройки в элементе /// Если нет - используются общие дефолтные константы /// </summary> /// <param name="da"></param> /// <returns>размер объекта</returns> public static Size GetDefaultDASize(EA.DiagramObject diagramObject) { Size result = new Size(diagramObject.right - diagramObject.left, diagramObject.top - diagramObject.bottom); EA.Element element = EARepository.GetElementByID(diagramObject.ElementID); // Для начала пытаемся установить размер из тэгов if (result.Width == 0 && EATVHelper.GetTaggedValues(element).GetByName(DAConst.defaultWidthTag) != null) { result.Width = int.Parse(EATVHelper.GetTaggedValues(element).GetByName(DAConst.defaultWidthTag).Value); } if (result.Height == 0 && EATVHelper.GetTaggedValues(element).GetByName(DAConst.defaultHeightTag) != null) { result.Height = int.Parse(EATVHelper.GetTaggedValues(element).GetByName(DAConst.defaultHeightTag).Value); } // Если из тэгов не установили, пытаемся вычислить на лету по библиотечной диаграмме /* * if (result.Height == 0 || result.Width == 0) * { * ExecResult<Size> GetElementSizeOnLibDiagramResult = EAHelper.GetElementSizeOnLibDiagram(element); * if (GetElementSizeOnLibDiagramResult.code == 0) * { * result = GetElementSizeOnLibDiagramResult.value; * } * } */ // Ну если совсем ничего, то просто ставим цифры по умолчанию if (result.Height == 0) { result.Height = DAConst.defaultHeight; } if (result.Width == 0) { result.Width = DAConst.defaultWidth; } return(result); }
/// <summary> /// Проверяет, что элемент является библиотечным. Если это инстанс, проверяет также класс /// </summary> /// <param name="element"></param> /// <returns></returns> public static bool IsLibrary(EA.Element element) { bool result = false; if (element.Type != "DeploymentSpecification") { EA.Collection taggedValues = EATVHelper.GetTaggedValues(element); try { if (taggedValues != null && taggedValues.GetByName(DAConst.DP_LibraryTag) != null) { result = true; } } catch { result = false; // ибо обращение к несуществующему тэгу раизит ошибку, а проверить наличие можно только перебором тэгов, что неудобно } } return(result); }