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]); } }
/// <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); } }
/// <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, "Не удалосьдобавить ребро"); } } }
/// <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; } } } }
public static IEnumerable <IVisio.Connect> ToEnumerable(this IVisio.Connects connects) { return(VisioAutomation.Internal.Extensions.ExtensionHelpers.ToEnumerable(() => connects.Count, i => connects[i + 1])); }
public static List <IVisio.Connect> ToList(this IVisio.Connects connects) { return(VisioAutomation.Internal.Extensions.ExtensionHelpers.ToList(() => connects.Count, i => connects[i + 1])); }
public static IEnumerable <IVisio.Connect> ToEnumerable(this IVisio.Connects connects) { return(VisioAutomation.Connections.ConnectionHelper.ToEnumerable(connects)); }
public static IEnumerable <IVisio.Connect> ToEnumerable(this IVisio.Connects connects) { return(ExtensionHelpers.ToEnumerable(() => connects.Count, i => connects[i + 1])); }
public static List <IVisio.Connect> ToList(this IVisio.Connects connects) { return(ExtensionHelpers.ToList(() => connects.Count, i => connects[i + 1])); }
public static IEnumerable <IVisio.Connect> ToEnumerable(this IVisio.Connects connects) { return(ConnectorHelper.ToEnumerable(connects)); }