예제 #1
0
        /// <summary>
        /// Устанавливает Zorder для нового элемента
        /// </summary>
        private void SetElementZorder(EA.DiagramObject diagramObject)
        {
            /*
             * План такой:
             * - на входе считаем, что ZOrder у всех нормальный кроме устанавливаемого
             *
             * - есть дерево дочерних (deploy) - обрабатываемый элемент  надо положить "под них"
             * - есть прочие элементы, ZOrder которых был больше (ниже) дочерних выше - их всех надо "притопить" на единичку, т.к. под дочерними вставлен обрабатываемый
             * - все остальные не трогаем
             *
             */

            EA.Element element = EARepository.GetElementByID(diagramObject.ElementID);

            // Получаем список родителей на диаграммме
            //List<EA.DiagramObject> parentDAList = EAHelper.GetDeployParentHierarchyDA(element);

            // Получаем список детей на диаграмме
            List <EA.DiagramObject> childrenDAList = LibraryHelper.GetDeployChildrenHierarchyDA(element);

            // наличие на диаграмме элементов дочерней иерархии, если есть такие - подкладываем элемент под них
            int elementZOrder = 0;

            foreach (var childDA in childrenDAList)
            {
                if (childDA.Sequence >= elementZOrder)
                {
                    elementZOrder = childDA.Sequence + 1;
                }
            }

            foreach (EA.DiagramObject curDA in CurrentDiagram.DiagramObjects)
            {
                if (curDA.ElementID == diagramObject.ElementID)
                {
                    diagramObject.Sequence = elementZOrder;
                    diagramObject.Update();
                }
                else if (curDA.Sequence >= elementZOrder)
                {
                    curDA.Sequence = curDA.Sequence + 1;
                    curDA.Update();
                }
            }

            foreach (EA.DiagramObject curDA in CurrentDiagram.DiagramObjects)
            {
                Logger.Out("Zorder=" + curDA.Sequence, new EA.DiagramObject[] { curDA });
            }
        }
예제 #2
0
        /// <summary>
        ///  Возыращает список выделенных в дереве библиотечных элементов
        /// </summary>
        /// <returns></returns>
        public static List <EA.Element> GetSelectedLibElement_Tree()
        {
            List <EA.Element> result = new List <EA.Element>();

            foreach (EA.Element curElement in EARepository.GetTreeSelectedElements())
            {
                if (LibraryHelper.IsLibrary(curElement))
                {
                    result.Add(curElement);
                }
            }

            return(result);
        }
예제 #3
0
        /// <summary>
        ///  Возыращает список выделенных в диаграмме библиотечных элементов
        /// </summary>
        /// <returns></returns>
        public static List <EA.Element> GetSelectedLibElement_Diagram()
        {
            List <EA.Element> result = new List <EA.Element>();

            foreach (EA.DiagramObject curDA in Context.CurrentDiagram.SelectedObjects)
            {
                EA.Element curElement = EARepository.GetElementByID(curDA.ElementID);

                if (LibraryHelper.IsLibrary(curElement))
                {
                    result.Add(curElement);
                }
            }

            return(result);
        }
예제 #4
0
        /// <summary>
        /// Возвращает, если есть, название (ближайшего) контура, в который включен компонент
        /// </summary>
        /// <param name="curElement"></param>
        /// <returns></returns>
        public static EA.Element GetElementContour(EA.Element curElement)
        {
            EA.Element result = null;

            List <EA.Element> parentDeployHierrchy = GetParentHierarchy(curElement);

            foreach (EA.Element curParent in parentDeployHierrchy)
            {
                if (LibraryHelper.IsLibrary(curParent) && new ComponentLevel[] { ComponentLevel.ContourComponent, ComponentLevel.ContourContour }.Contains(CLHelper.GetComponentLevel(curParent)))
                {
                    result = curParent;
                    break;
                }
            }

            return(result);
        }
예제 #5
0
        /// <summary>
        /// Помещения на текущкю диаграмму выбранных узлов и устройств
        /// </summary>
        /// <returns></returns>
        public ExecResult <Boolean> PutContourContourOnDiagram(string location)
        {
            ExecResult <Boolean> result = new ExecResult <bool>();

            try
            {
                if (location == "TreeView" || EARepository.GetCurrentDiagram() == null)
                {
                    throw new Exception("Операция разрешена только для диаграммы");
                }


                if (!Context.CheckCurrentDiagram())
                {
                    throw new Exception("Не установлена или не открыта текущая диаграмма");
                }

                // получаем список библиотечных элементов нужного типа
                List <NodeData> nodeDataList = LibraryHelper.GetNodeData(new List <ComponentLevel>()
                {
                    ComponentLevel.ContourContour, ComponentLevel.SystemContour
                });

                // показываем список на форме для отмечания
                ExecResult <List <NodeData> > ndSelectresult = new FSelectContourContour().Execute(nodeDataList);
                if (ndSelectresult.code != 0)
                {
                    return(result);
                }

                // что на форме наотмечали, помещаем на диаграмму
                foreach (NodeData nodeData in ndSelectresult.value)
                {
                    PutElementOnDiagram(nodeData.Element);
                }

                EARepository.ReloadDiagram(CurrentDiagram.DiagramID);
            }
            catch (Exception ex)
            {
                result.setException(ex);
            }

            return(result);
        }
예제 #6
0
        /// <summary>
        ///  Возыращает список выделенных в диаграмме коннекторов
        /// </summary>
        /// <returns></returns>
        public static EA.Connector GetSelectedLibConnector_Diagram(bool checkISLibrary = true)
        {
            EA.Connector result = null;

            EA.Connector selectedConnector = Context.CurrentDiagram.SelectedConnector;
            if (selectedConnector != null)
            {
                if (!checkISLibrary)
                {
                    result = selectedConnector;
                }
                else if (LibraryHelper.IsLibrary(selectedConnector))
                {
                    result = selectedConnector;
                }
            }

            return(result);
        }
예제 #7
0
        /*
         * /// <summary>
         * /// Функция загружает список коннекторов из текущей библиотеки
         * /// </summary>
         * /// <returns></returns>
         * public static Dictionary<LinkType, Dictionary<string, List<ConnectorData>>> LoadConnectorData()
         * {
         *  var result = new Dictionary<LinkType, Dictionary<string, List<ConnectorData>>>();
         *  IEqualityComparer<ConnectorData> ConnectorDataEqualityComparer = new IEqualityComparer_ConnectorData();
         *
         *
         *  foreach (LinkType linkType in Enum.GetValues(typeof(LinkType)))
         *  {
         *      result.Add(linkType, new Dictionary<string, List<ConnectorData>>());
         *  }
         *
         *  // Получаем библиотеку
         *  EA.Package libRoot = Context.CurrentLibrary;
         *  if (libRoot == null)
         *      throw new Exception("Не установлена библиотека");
         *
         *  // Ползём по библиотеке и добавляем найденные библиотечные коннекторы в коллекцию
         *  List<EA.Package> curLibpackages = new List<EA.Package>();
         *  curLibpackages.Add(libRoot);
         *
         *  while (curLibpackages.Count > 0)
         *  {
         *      List<EA.Package> nextLibpackages = new List<EA.Package>();
         *
         *      foreach (EA.Package curPackage in curLibpackages)
         *      {
         *          //EAHelper.Out("Checking package elements ", new EA.Package[] { curPackage });
         *
         *          foreach (EA.Element curElement in EAHelper.GetAllPackageElements(curPackage))
         *          {
         *              //EAHelper.Out("Checking element connectors ", new EA.Element[] { curElement });
         *
         *              foreach (EA.Connector curConnector in curElement.Connectors)
         *              {
         *
         *                  if (LibraryHelper.IsLibrary(curConnector))
         *                  {
         *                      LinkType connectorLinkType = LTHelper.GetConnectorType(curConnector);
         *                      string connectorFlowID = EAHelper.GetTaggedValue(curConnector, DAConst.DP_FlowIDTag);
         *                      string connectorSegmentID = EAHelper.GetTaggedValue(curConnector, DAConst.DP_SegmentIDTag);
         *
         *                      if (!result[connectorLinkType].ContainsKey(connectorFlowID))
         *                          result[connectorLinkType].Add(connectorFlowID, new List<ConnectorData>());
         *
         *                      // Добавляем
         *                      ConnectorData connectorData = new ConnectorData();
         *                      connectorData.Name = curConnector.Name;
         *                      connectorData._ConnectorID = curConnector.ConnectorID;
         *                      connectorData.Connector = curConnector;
         *                      connectorData.LinkType = connectorLinkType;
         *                      connectorData.FlowID = connectorFlowID;
         *                      connectorData.SegmentID = connectorSegmentID;
         *
         *                      connectorData.SourceElementID = curConnector.ClientID;
         *                      connectorData.TargetElementID = curConnector.SupplierID;
         *
         *                      if (!result[connectorLinkType][connectorFlowID].Contains(connectorData, ConnectorDataEqualityComparer))
         *                          result[connectorLinkType][connectorFlowID].Add(connectorData);
         *                  }
         *
         *              }
         *          }
         *
         *          foreach (EA.Package nextPackage in curPackage.Packages)
         *              nextLibpackages.Add(nextPackage);
         *      }
         *
         *      curLibpackages = nextLibpackages;
         *  }
         *
         *  return result;
         * }
         */

        /// <summary>
        /// Возвращает элементы, связанные с указанным заданной связью + находящиеся с указанного конца
        /// </summary>
        /// <param name="package"></param>
        /// <returns></returns>
        public static List <EA.Element> GetConnectedElements(EA.Element element, LinkType linkType, byte connectorEnd = 1 /*0=source 1=target*/)
        {
            List <EA.Element> result = new List <EA.Element>();

            foreach (EA.Connector connector in element.Connectors)
            {
                if ((connectorEnd == 0 /*source*/ && connector.ClientID == element.ElementID) || connectorEnd == 1 /*source*/ && connector.SupplierID == element.ElementID)
                {
                    continue; // не тем концом в другой элемент упирается
                }
                if (LibraryHelper.IsLibrary(connector) && LTHelper.GetConnectorType(connector) == linkType)
                { // если связь нужного типа
                    EA.Element otherEndElement = EARepository.GetElementByID((connectorEnd == 0) ? connector.ClientID : connector.SupplierID);
                    if (LibraryHelper.IsLibrary(otherEndElement))
                    {
                        result.Add(otherEndElement);
                    }
                }
            }
            return(result);
        }
예제 #8
0
        /// <summary>
        /// Функция запуска формы управления коннекторами
        /// </summary>
        /// <returns></returns>
        public ExecResult <Boolean> ManageLinks()
        {
            ExecResult <Boolean> result = new ExecResult <bool>();

            Logger.Out("");

            try
            {
                if (Context.CurrentLibrary == null)
                {
                    EA.Package libPackage = LibraryHelper.GetLibraryRoot();
                    Context.CurrentLibrary = libPackage;
                }

                result = FManageLinks.Execute();
            }
            catch (Exception ex)
            {
                result.setException(ex);
            }

            return(result);
        }
예제 #9
0
        /// <summary>
        /// Устанавливает видимость для нетипизированных коннекторов на диаграмме
        /// </summary>
        public void SetConnectorVisibility_Untyped(bool visibility = true)
        {
            // проходимся по элементам диаграммы
            foreach (EA.DiagramObject diagramObject in CurrentDiagram.DiagramObjects)
            {
                // Получаем элемент
                EA.Element diagramElement = EARepository.GetElementByID(diagramObject.ElementID);

                // Получаем коннекторы элемента
                foreach (EA.Connector connector in diagramElement.Connectors)
                {
                    // Проверяем тип коннектора
                    if (LibraryHelper.IsLibrary(connector))
                    {
                        continue;
                    }

                    // проверяем, что коннектор может быть потенциально показан на диаграмме, т.е, что оба его элемента на диаграмме
                    EA.Element       secondElement   = EARepository.GetElementByID((connector.ClientID == diagramElement.ElementID) ? connector.SupplierID : connector.ClientID);
                    EA.DiagramObject secondElementDA = CurrentDiagram.GetDiagramObjectByID(secondElement.ElementID, "");
                    if (secondElementDA == null)
                    {
                        continue;
                    }

                    // Получаем линк коннектора на диаграмме
                    EA.DiagramLink connectorLink = DiagramLinkHelper.GetDLForConnector(connector);
                    if (connectorLink == null)
                    {
                        continue;
                    }

                    // Устанавливаем видимость
                    DiagramLinkHelper.SetDiagramLinkVisibility(connectorLink, visibility);
                }
            }
        }
예제 #10
0
        /// <summary>
        /// Функция устанавливает размер элемента по умолчанию, соответствующий размеру элемента на библиотечной диаграмме
        /// </summary>
        /// <returns></returns>
        public static ExecResult <Boolean> SetElementDefaultSize()
        {
            ExecResult <Boolean> result = new ExecResult <bool>();

            try
            {
                var obj = EARepository.GetContextObject();
                if (obj == null)
                {
                    throw new Exception("Нет текущего объекта");
                }
                if (!(obj is EA.Element) || !LibraryHelper.IsLibrary((EA.Element)obj))
                {
                    throw new Exception("Выделен не библиотечный элемент");
                }
                EA.Element curElement = (EA.Element)obj;

                // Ищем размер на библиотечных диаграммах
                ExecResult <Size> GetElementSizeOnLibDiagramResult = GetElementSizeOnLibDiagram(curElement);
                if (GetElementSizeOnLibDiagramResult.code != 0)
                {
                    throw new Exception(GetElementSizeOnLibDiagramResult.message);
                }

                EATVHelper.TaggedValueSet(curElement, DAConst.defaultWidthTag, GetElementSizeOnLibDiagramResult.value.Width.ToString());
                EATVHelper.TaggedValueSet(curElement, DAConst.defaultHeightTag, GetElementSizeOnLibDiagramResult.value.Height.ToString());

                Logger.Out("Найден элемент диаграммы для установки размеров " + GetElementSizeOnLibDiagramResult.value.Width.ToString() + "x" + GetElementSizeOnLibDiagramResult.value.Height.ToString());
            }
            catch (Exception ex)
            {
                result.setException(ex);
            }

            return(result);
        }
예제 #11
0
        /*
         * /// <summary>
         * /// Идентификатор текущей библиотеки
         * /// </summary>
         * private int _CurrentLibraryID;
         * public int CurrentLibraryID
         * {
         *  get
         *  {
         *      return _CurrentLibraryID;
         *  }
         *  set
         *  {
         *      _CurrentLibraryID = value;
         *  }
         * }
         */
        /*
         * public ExecResult<Boolean> SetCurrentLibrary()
         * {
         *  ExecResult<Boolean> result = new ExecResult<bool>();
         *  try
         *  {
         *      var selection = EARepository.GetTreeSelectedPackage();
         *      if (selection == null || !EAHelper.IsLibrary(selection.Element))
         *      {
         *          throw new Exception("Не выделен библиотечный пакет");
         *      }
         *      CurrentLibraryID = selection.PackageID;
         *      result.message = "установлен ID библиотеки=" + CurrentLibraryID;
         *
         *
         *  }
         *  catch (Exception ex)
         *  {
         *      result.setException(ex);
         *  }
         *
         *  return result;
         *
         * }
         */
        /// <summary>
        /// Размещает на диаграмме под элементом дерево компонентов, размещённых в нём
        /// </summary>
        /// <param name="onlyParent"></param>
        /// <returns></returns>
        public ExecResult <Boolean> PutChildrenDeployHierarchy(string location)
        {
            ExecResult <Boolean> result = new ExecResult <bool>();

            ElementDesignerHelper.CallLevel = 0;

            try
            {
                EA.Element selectedElement = null;



                switch (location)
                {
                case "TreeView":
                    throw new Exception("Доступно только для диаграммы");

                case "Diagram":
                case "MainMenu":
                    if ((EARepository.GetCurrentDiagram() == null) || (EARepository.GetCurrentDiagram() != null && EARepository.GetCurrentDiagram().DiagramID != CurrentDiagram.DiagramID))
                    {
                        throw new Exception("Текущая диаграмма должны быть открыта");
                    }

                    List <EA.Element> selectedElementList = EAHelper.GetSelectedLibElement_Diagram();
                    if (selectedElementList.Count == 0)
                    {
                        throw new Exception("На текщей диаграммме нет выделенных библиотечных элементов");
                    }

                    selectedElement = selectedElementList[0];
                    break;
                }

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

                // Для начала размещаем на диаграмме корневой элемент
                EA.DiagramObject rootDA = PutElementOnDiagram(selectedElement);

                // Проходимся по иерархии и размещаем элементы на диаграмме
                List <DPTreeNode <EA.Element> > currentLevelNodes = new List <DPTreeNode <EA.Element> >();
                currentLevelNodes.Add(сhildrenDHierarchy);

                List <DPTreeNode <EA.Element> > childLevelNodes = сhildrenDHierarchy.Children.ToList <DPTreeNode <EA.Element> >();

                Point levelStartPoint = new Point(rootDA.left, rootDA.bottom - DAConst.border);
                Point levelEndPoint   = new Point(levelStartPoint.X, levelStartPoint.Y);

                while (childLevelNodes.Count > 0)
                {
                    foreach (DPTreeNode <EA.Element> childLevelNode in childLevelNodes)
                    {
                        // Размещаем элемент на диаграмме
                        EA.DiagramObject curDA = PutElementOnDiagram(childLevelNode.Value);
                        // Подвигаем элемент на отведённым ему уровень

                        EADOHelper.ApplyPointToDA(curDA, new Point(levelEndPoint.X, levelStartPoint.Y));
                        int newLevelRight  = curDA.right + DAConst.border;
                        int newLevelBottom = curDA.bottom < levelEndPoint.Y ? curDA.bottom : levelEndPoint.Y;
                        levelEndPoint = new Point(newLevelRight, newLevelBottom);
                    }

                    // коллекционируем список узлов уровнем ниже
                    List <DPTreeNode <EA.Element> > grandchildLevelNodes = new List <DPTreeNode <EA.Element> >();
                    foreach (DPTreeNode <EA.Element> childlevelNode in childLevelNodes)
                    {
                        grandchildLevelNodes.AddRange(childlevelNode.Children);
                    }
                    childLevelNodes = grandchildLevelNodes; // делаем список узлов уровнем ниже - текущим

                    // смещаем координаты размещения следующего уровня компонентов
                    levelStartPoint = new Point(levelStartPoint.X, levelEndPoint.Y - DAConst.border);
                    levelEndPoint   = new Point(levelStartPoint.X, levelStartPoint.Y - DAConst.border);
                }


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

            return(result);
        }
예제 #12
0
        public ExecResult <Boolean> CreateLink()
        {
            ExecResult <Boolean> result = new ExecResult <bool>();

            Logger.Out("");

            try
            {
                if (!Context.CheckCurrentDiagram())
                {
                    throw new Exception("Не установлена или не открыта текущая диаграмма");
                }


                // На диаграмме должны быть выделены 2 (библиотечных) элемента
                var selectedObjects = CurrentDiagram.SelectedObjects;
                if (selectedObjects.Count != 2)
                {
                    throw new Exception("Должно быть выделено 2 элемента");
                }

                EA.DiagramObject firstDA       = selectedObjects.GetAt(0);
                EA.Element       firstElement  = EARepository.GetElementByID(firstDA.ElementID);
                EA.DiagramObject secondDA      = selectedObjects.GetAt(1);
                EA.Element       secondElement = EARepository.GetElementByID(secondDA.ElementID);

                if (!LibraryHelper.IsLibrary(firstElement) || !LibraryHelper.IsLibrary(secondElement))
                {
                    throw new Exception("Должны быть выделены библиотечные элементы");
                }

                Logger.Out("Выделенные элементы: ", new EA.Element[] { firstElement, secondElement });

                // запускаем форму
                ExecResult <ConnectorData> createNewLinkData = FCreateNewLink.Execute(firstDA, secondDA);
                if (createNewLinkData.code != 0)
                {
                    return(result);
                }


                // надо проверить, нет ли уже такого линка между элементами
                foreach (EA.Connector connector in firstElement.Connectors)
                {
                    if (connector.ClientID == secondElement.ElementID || connector.SupplierID == secondElement.ElementID)
                    {
                        if (LibraryHelper.IsLibrary(connector))
                        {
                            LinkType connectorLinkType = LTHelper.GetConnectorType(connector);
                            if (createNewLinkData.value.LinkType == connectorLinkType)
                            {
                                if (EATVHelper.GetTaggedValue(connector, DAConst.DP_FlowIDTag) == createNewLinkData.value.FlowID && EATVHelper.GetTaggedValue(connector, DAConst.DP_SegmentIDTag) == createNewLinkData.value.SegmentID)
                                {
                                    throw new Exception("Запрашиваемая связь уже существует");
                                }
                            }
                        }
                    }
                }


                // Создаём
                EA.Connector newConnector = ConnectorHelper.CreateConnector(createNewLinkData.value, true);

                CurrentDiagram.DiagramLinks.Refresh();
                EARepository.ReloadDiagram(CurrentDiagram.DiagramID);

                Logger.Out("Создан ", new EA.Connector[] { newConnector });
            }
            catch (Exception ex)
            {
                result.setException(ex);
            }

            return(result);
        }
예제 #13
0
        public static ExecResult <bool> DiagramElementsReport(string location)
        {
            ExecResult <Boolean> result = new ExecResult <bool>();

            try
            {
                // Получаем диаграмму
                EA.Diagram reportDiagram = null;

                switch (location)
                {
                case "Diagram":
                    reportDiagram = EARepository.GetCurrentDiagram();
                    break;

                case "MainMenu":
                case "TreeView":
                    if (EARepository.GetTreeSelectedItemType() != EA.ObjectType.otDiagram)
                    {
                        throw new Exception("Не выбрана диаграмма в ProjectExplorer");
                    }

                    reportDiagram = EARepository.GetTreeSelectedObject();
                    break;
                }

                // Проверяем, что это диаграмма - библиотечная
                EA.Package diagramPackage = EARepository.GetPackageByID(reportDiagram.PackageID);
                EA.Package libPackage     = LibraryHelper.GetLibraryRootFromPackage(diagramPackage);
                if (libPackage == null)
                {
                    throw new Exception("Диаграмма не в библиотеке");
                }

                // Устанавливаем текущую библиотеку
                if (Context.CurrentLibrary.PackageID != libPackage.PackageID)
                {
                    Context.CurrentLibrary = libPackage;
                }

                // Устанавливаем текущую диаграмму
                Context.CurrentDiagram = reportDiagram;

                // запрашиваем параметры показа
                ExecResult <List <ComponentLevel> > displayLevelsResult = FSelectComponentLevels.Execute(new List <ComponentLevel>()
                {
                    ComponentLevel.Node, ComponentLevel.Device, ComponentLevel.ExecutionEnv, ComponentLevel.Component
                });
                if (displayLevelsResult.code != 0)
                {
                    return(result);
                }


                // Подготавливаем имя RDLC - файла отчёта
                string fullReportName = Path.Combine(Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location), "Reports", "LibDiagram.rdlc");
                if (!File.Exists(fullReportName))
                {
                    throw new Exception("файл отчёта " + fullReportName + "не найден");
                }

                // Подготавливаем источники данных для отчёта
                List <ReportDataSource> reportDataSources = new List <ReportDataSource>();

                List <ElementData> elementDataList = EAHelper.GetCurDiagramElementData().Values.ToList <ElementData>();
                foreach (var elementData in elementDataList) // Дообогащаем информацию об элементах данными узла размещения
                {
                    int?rootDeployNodeID = LibraryHelper.GetDeployComponentNode(elementData._ElementID);
                    if (rootDeployNodeID != null)
                    {
                        elementData.RootDeployNodeID = rootDeployNodeID;
                    }
                }

                ReportDataSource reportDataSource = new ReportDataSource("DS_ElementData", elementDataList);
                reportDataSources.Add(reportDataSource);

                List <ConnectorData> connectorDataList = EAHelper.GetCurDiagramConnectors();
                ReportDataSource     reportDataSource1 = new ReportDataSource("DS_ConnectorData", connectorDataList);
                reportDataSources.Add(reportDataSource1);


                // Подготавливаем параметры отчёта
                List <ReportParameter> reportParameters = new List <ReportParameter>();
                // Картинка диаграммы
                string SavedDiagramImagePath = DiagramExporter.ExportPNG(reportDiagram);
                //string base64Image = Convert.ToBase64String(File.ReadAllBytes(SavedDiagramImagePath));
                reportParameters.Add(new ReportParameter("paramDiagramImage", "file:///" + SavedDiagramImagePath));
                reportParameters.Add(new ReportParameter("paramComponentLevels", string.Join(",", displayLevelsResult.value.Select(cl => ((int)cl).ToString()))));


                // запускаем форму
                ExecResult <bool> fReportResult = FReport.Execute(fullReportName, reportDataSources, reportParameters);
                if (fReportResult.code != 0)
                {
                    throw new Exception(fReportResult.message);
                }
            }
            catch (Exception ex)
            {
                result.setException(ex);
            }

            return(result);
        }
예제 #14
0
        ///
        /// Called when user makes a selection in the menu.
        /// This is your main exit point to the rest of your Add-in
        ///
        /// <param name="Repository" />the repository
        /// <param name="Location" />the location of the menu
        /// <param name="MenuName" />the name of the menu
        /// <param name="ItemName" />the name of the selected menu item
        public void EA_MenuClick(EA.Repository repository, string location, string menuName, string itemName)
        {
            switch (itemName)
            {
            // ------ DESIGN --------------------------------------------------------------

            case menuPutLibElementOnDiagram:
                var putLibElementResult = Context.Designer.PutElementOnDiagram();
                OutExecResult(putLibElementResult);
                break;

            case menuPutContourContour:
                var putContourContourResult = Context.Designer.PutContourContourOnDiagram(location);
                OutExecResult(putContourContourResult);
                break;

            case menuPutParentDHierarchyOnDiagram:
                var putDeploymentHierarchyResult = Context.Designer.PutParentHierarchyOnDiagram();
                OutExecResult(putDeploymentHierarchyResult);
                break;

            case menuPutChildrenDHierarchyOnDiagram:
                var putPutCDHResult = Context.Designer.PutChildrenDHierarchyOnDiagram();
                OutExecResult(putPutCDHResult);
                break;

            case menuPutChildrenDeployHierarchy:
                var putChildrenDeployHierarchyResult = Context.Designer.PutChildrenDeployHierarchy(location);
                OutExecResult(putChildrenDeployHierarchyResult);
                break;

            case menuSetElementTags:
                var setElementTagsResult = Context.Designer.SetElementTags(location);
                OutExecResult(setElementTagsResult);
                break;



            // ------ DESIGN LINKS --------------------------------------------------------------
            case menuCreateLink:
                var createCommunicationResult = Context.LinkDesigner.CreateLink();
                OutExecResult(createCommunicationResult);
                break;

            case menuManageLinks:
                var ManageLinksResult = Context.LinkDesigner.ManageLinks();
                OutExecResult(ManageLinksResult);
                break;


            case menuManageLinkVisibility:
                var ManageLinkVisibilityResult = Context.LinkDesigner.ManageLinkVisibility();
                OutExecResult(ManageLinkVisibilityResult);
                break;


            case menuSetConnectorTags:
                var setConnectorTagsResult = Context.LinkDesigner.SetConnectorTags(location);
                OutExecResult(setConnectorTagsResult);
                break;

            case menuSetSimilarLinksTags:
                var setSimilarLinksTags = Context.LinkDesigner.SetSimilarLinksTags(location);
                OutExecResult(setSimilarLinksTags);
                break;

            // ------ UTILS --------------------------------------------------------------
            case menuSetCurrentDiagram:
                Context.CurrentDiagram = Context.EARepository.GetCurrentDiagram();
                Logger.Out("Установлена текущая диаграмма = " + Context.CurrentDiagram.Name);
                break;

            case menuSetCurrentLibrary:
                var setCurrentLibraryResult = LibraryHelper.SetCurrentLibrary(location);
                OutExecResult(setCurrentLibraryResult);
                break;

            case menuSetDPLibratyTag:
                var setDPLibratyTagResult = EATVHelper.SetDPLibratyTag(location);
                OutExecResult(setDPLibratyTagResult);
                break;


            case menuReloadConnectorData:
                Context.ConnectorData = null;
                Logger.Out("Сброшены данные коннекторов");
                break;

            case menuDoOnConnectActions:
                Addin_OnConnectActions();
                break;

            case menuRunSQLQuery:
                var fRunSQLQueryResult = FRunSQLQuery.Execute();
                OutExecResult(fRunSQLQueryResult);
                break;

            // --------- REPORTS ------------------------------------------------------------
            case menuDiagramElementsReport:
                var fDiagramElementsReportResult = ReportsHelper.DiagramElementsReport(location);
                OutExecResult(fDiagramElementsReportResult);
                break;



            // ------ EXPORT --------------------------------------------------------------
            case menuExportDiagram:
                var exportResult = DiagramExporter.Export(location);
                break;


            // ------ TEST --------------------------------------------------------------
            case menuTest1:
                var test1Result = Test1();
                OutExecResult(test1Result);
                break;

            case menuTest2:
                var test2Result = Test2();
                OutExecResult(test2Result);
                break;

            case menuTest3:
                var test3Result = Test3();
                OutExecResult(test3Result);
                break;
            }
        }