Example #1
0
        /// <summary>
        /// Вспомогательная функция определяет, предназанчен ли библиотечный элемнет для размещения на диаграмме
        /// Правила: Контуры = разрешён Classifier, остальные компоненты - только Instance
        /// </summary>
        /// <param name=""></param>
        /// <returns></returns>
        public static bool AppropriateForDiagram(EA.Element element)
        {
            bool result = false;

            ComponentLevel componentLevel = CLHelper.GetComponentLevel(element);

            switch (componentLevel)
            {
            case ComponentLevel.SystemContour:
            case ComponentLevel.ContourContour:

                result = true;
                break;

            case ComponentLevel.SystemComponent:
            case ComponentLevel.ContourComponent:
            case ComponentLevel.Node:
            case ComponentLevel.Device:
            case ComponentLevel.ExecutionEnv:
            case ComponentLevel.Component:

                result = element.ClassfierID != 0;
                break;
            }

            return(result);
        }
Example #2
0
        /// <summary>
        /// Размещает на диаграмме укзаанный элемент и иерархию его контейнеров
        /// </summary>
        /// <param name="onlyParent"></param>
        /// <returns></returns>
        public ExecResult <Boolean> PutParentHierarchyOnDiagram(bool onlyParent = false)
        {
            ExecResult <Boolean> result = new ExecResult <bool>();

            ElementDesignerHelper.CallLevel = 0;

            try
            {
                ExecResult <List <ComponentLevel> > displayLevelsResult = FSelectComponentLevels.Execute();
                if (displayLevelsResult.code != 0)
                {
                    return(result);
                }


                // Получаем текущий (библиотечный) элемент дерева
                EA.Element curElement = EARepository.GetTreeSelectedObject();
                Logger.Out("элемент:", new EA.Element[] { curElement });
                if (curElement == null || !LibraryHelper.IsLibrary(curElement))
                {
                    throw new Exception("Не выделен библиотечный элемент");
                }

                // Получаем цепочку родительских контейнеров
                List <EA.Element> deployments = LibraryHelper.GetParentHierarchy(curElement);
                Logger.Out("цепочка deploy-родителей:", deployments.ToArray());

                // Размещаем на диаграмме элемент
                PutElementOnDiagram(curElement);

                // Проходимся по иерархии и размещаем элементы на диаграмме
                EA.Element prevElement = null;
                for (int i = 0; i < deployments.Count; i++)
                {
                    // размещает только элементы выбранных уровней
                    ComponentLevel componentLevel = CLHelper.GetComponentLevel(deployments[i]);
                    if (!displayLevelsResult.value.Contains(componentLevel))
                    {
                        continue;
                    }


                    EA.DiagramObject diagramObject = PutElementOnDiagram(deployments[i]);
                    //diagramObject.Sequence = 1000 - (deployments.Count + i); // Это надо нормально сделать
                    diagramObject.Update();
                    prevElement = deployments[i];
                }

                CurrentDiagram.DiagramLinks.Refresh();
                Context.LinkDesigner.SetLinkTypeVisibility(LinkType.Deploy, false);
                EARepository.ReloadDiagram(CurrentDiagram.DiagramID);
            }
            catch (Exception ex)
            {
                result.setException(ex);
            }

            return(result);
        }
Example #3
0
        /// <summary>
        /// Размещает на диаграмме укзаанный элемент и иерархию его контейнеров
        /// </summary>
        /// <param name="onlyParent"></param>
        /// <returns></returns>
        public ExecResult <Boolean> PutChildrenDHierarchyOnDiagram()
        {
            ExecResult <Boolean> result = new ExecResult <bool>();

            ElementDesignerHelper.CallLevel = 0;

            try
            {
                ExecResult <List <ComponentLevel> > displayLevelsResult = FSelectComponentLevels.Execute();
                if (displayLevelsResult.code != 0)
                {
                    return(result);
                }


                // Получаем текущий (библиотечный) элемент дерева
                EA.Element curElement = null;
                if (EARepository.GetTreeSelectedElements().Count > 0)
                {
                    curElement = EARepository.GetTreeSelectedElements().GetAt(0);
                }
                Logger.Out("элемент:", new EA.Element[] { curElement });
                if (curElement == null || !LibraryHelper.IsLibrary(curElement))
                {
                    throw new Exception("Не выделен библиотечный элемент");
                }

                // Получаем список дочерних элементов контейнеров
                List <EA.Element> сhildrenDHierarchy = LibraryHelper.GetChildHierarchy(curElement);


                // Размещаем на диаграмме элемент
                PutElementOnDiagram(curElement);

                // Проходимся по иерархии и размещаем элементы на диаграмме
                for (int i = 0; i < сhildrenDHierarchy.Count; i++)
                {
                    // размещает только элементы выбранных уровней
                    ComponentLevel componentLevel = CLHelper.GetComponentLevel(сhildrenDHierarchy[i]);
                    if (!displayLevelsResult.value.Contains(componentLevel))
                    {
                        continue;
                    }
                    // Размещаем элемент
                    EA.DiagramObject diagramObject = PutElementOnDiagram(сhildrenDHierarchy[i]);
                    diagramObject.Update();
                }

                CurrentDiagram.DiagramLinks.Refresh();
                Context.LinkDesigner.SetLinkTypeVisibility(LinkType.Deploy, false);
                EARepository.ReloadDiagram(CurrentDiagram.DiagramID);
            }
            catch (Exception ex)
            {
                result.setException(ex);
            }

            return(result);
        }