예제 #1
0
        public static IEnumerable <IVisio.Connect> AsEnumerable(this IVisio.Connects connects)
        {
            int count = connects.Count;

            for (int i = 0; i < count; i++)
            {
                yield return(connects[i + 1]);
            }
        }
예제 #2
0
        /// <summary>
        /// Метод, вызывающийся при добавлении нового ребра между ребрами графа
        /// </summary>
        /// <param name="connects">Коннектор</param>
        public void AddEdge(Visio.Connects connects)
        {
            // Если соединение добавлено с использованием существующей соединительной линии, т.е. добавляем вторую вершину
            if (newEdges.ContainsKey(connects.FromSheet))
            {
                // Добавляем вторую вершину в пару связанных вершин
                newEdges[connects.FromSheet].Add(connects.ToSheet);

                // Если обе соединенные фигуры - это вершины нашего графа
                if (vertices.ContainsValue(newEdges[connects.FromSheet][0]) && vertices.ContainsValue(newEdges[connects.FromSheet][1]))
                {
                    DotVertex <string> from = new DotVertex <string>("");
                    DotVertex <string> to   = new DotVertex <string>("");

                    // Ищем, каким вершинам они соответствуют
                    foreach (var node in vertices)
                    {
                        if (node.Value == newEdges[connects.FromSheet][0])
                        {
                            from = node.Key;
                        }
                        if (node.Value == newEdges[connects.FromSheet][1])
                        {
                            to = node.Key;
                        }
                    }

                    // Добавляем ребро с данными вершинами
                    DotEdge <string> edge = new DotEdge <string>(from, to);
                    graph.AddEdge(edge);

                    // Добавляем новое ребро в список ребер
                    edges.Add(edge, connects.FromSheet);
                }

                // Удаляем пару
                newEdges.Remove(connects.FromSheet);
            }
            else
            {
                // Применяем стили к коннектору
                connects.FromSheet.get_Cells("ConLineRouteExt").FormulaU = "2";
                connects.FromSheet.get_Cells("EndArrow").Formula         = "=5";

                // Добавляем новый коннектор в словарь + вершину, от которой он стартовал, ожидая соединения ее со второй вершиной
                List <Visio.Shape> listOfConnectingNodes = new List <Visio.Shape>();
                listOfConnectingNodes.Add(connects.ToSheet);
                newEdges.Add(connects.FromSheet, listOfConnectingNodes);
            }
        }
예제 #3
0
 /// <summary>
 /// Метод удаления ребра
 /// </summary>
 /// <param name="Connects"></param>
 private void AddEdge(Visio.Connects Connects)
 {
     if (graphs.ContainsKey(Application.ActivePage))
     {
         try
         {
             graphs[Application.ActivePage].AddEdge(Connects);
         }
         catch (Exception exc)
         {
             ErrorMessage("Во время добавления ребра возникла следующая ошибка:\n" + exc.Message, "Не удалосьдобавить ребро");
         }
     }
 }
예제 #4
0
 /// <summary>
 /// Метод, вызывающийся при удалении ребра
 /// </summary>
 /// <param name="connects"></param>
 public void DeleteEdge(Visio.Connects connects)
 {
     Visio.Shape shape = connects.FromSheet;
     if (edges.ContainsValue(shape))
     {
         foreach (var edge in edges)
         {
             if (edge.Value == shape)
             {
                 graph.RemoveEdge(edge.Key);
                 edges.Remove(edge.Key);
                 break;
             }
         }
     }
 }
예제 #5
0
 public static IEnumerable <IVisio.Connect> ToEnumerable(this IVisio.Connects connects)
 {
     return(VisioAutomation.Internal.Extensions.ExtensionHelpers.ToEnumerable(() => connects.Count, i => connects[i + 1]));
 }
예제 #6
0
 public static List <IVisio.Connect> ToList(this IVisio.Connects connects)
 {
     return(VisioAutomation.Internal.Extensions.ExtensionHelpers.ToList(() => connects.Count, i => connects[i + 1]));
 }
예제 #7
0
 public static IEnumerable <IVisio.Connect> ToEnumerable(this IVisio.Connects connects)
 {
     return(VisioAutomation.Connections.ConnectionHelper.ToEnumerable(connects));
 }
예제 #8
0
 public static IEnumerable <IVisio.Connect> ToEnumerable(this IVisio.Connects connects)
 {
     return(ExtensionHelpers.ToEnumerable(() => connects.Count, i => connects[i + 1]));
 }
예제 #9
0
 public static List <IVisio.Connect> ToList(this IVisio.Connects connects)
 {
     return(ExtensionHelpers.ToList(() => connects.Count, i => connects[i + 1]));
 }
예제 #10
0
 public static IEnumerable <IVisio.Connect> ToEnumerable(this IVisio.Connects connects)
 {
     return(ConnectorHelper.ToEnumerable(connects));
 }