public void DiagramElementQueryResultAndNetworkDiagramSubsetClasses(Geodatabase geodatabase, DiagramManager diagramManager, string diagramName) { // Retrieve a diagram using (NetworkDiagram diagramTest = diagramManager.GetNetworkDiagram(diagramName)) { // Create a DiagramElementQueryByElementTypes query object to get the diagram elements we want to work with DiagramElementQueryByElementTypes query = new DiagramElementQueryByElementTypes(); query.QueryDiagramJunctionElement = true; query.QueryDiagramEdgeElement = true; query.QueryDiagramContainerElement = true; // Retrieve those diagram elements DiagramElementQueryResult elements = diagramTest.QueryDiagramElements(query); // Create a NetworkDiagramSubset object to edit this set of diagram elements NetworkDiagramSubset subset = new NetworkDiagramSubset(); subset.DiagramJunctionElements = elements.DiagramJunctionElements; subset.DiagramEdgeElements = elements.DiagramEdgeElements; subset.DiagramContainerElements = elements.DiagramContainerElements; // Edit the shapes of the diagram elements - left as an exercise for the student TranslateDiagramElements(subset); // Save the new layout of the diagram elements diagramTest.SaveLayout(subset, true); } }
/// <summary> /// Initialize class /// </summary> /// <param name="Diagram">NetworkDiagram</param> public void Initialize(NetworkDiagram Diagram) { _junctions.Clear(); _edges.Clear(); _containers.Clear(); _adjacentEdges.Clear(); _containment.Clear(); DiagramElementQueryByElementTypes query = new DiagramElementQueryByElementTypes { QueryDiagramContainerElement = true, QueryDiagramEdgeElement = true, QueryDiagramJunctionElement = true }; DiagramElementQueryResult deqr = Diagram.QueryDiagramElements(query); foreach (var container in deqr.DiagramContainerElements) { _containers[container.ID] = new CustomContainer(container); if (container.ContainerID > 0) { AddContainment(container.ContainerID, container.ID); } } foreach (var junction in deqr.DiagramJunctionElements) { _junctions[junction.ID] = new CustomJunction(junction); if (junction.ContainerID > 0) { AddContainment(junction.ContainerID, junction.ID); } } foreach (var edge in deqr.DiagramEdgeElements) { _edges[edge.ID] = new CustomEdge(edge); AddAdjacentEdge(edge.FromID, edge.ID); AddAdjacentEdge(edge.ToID, edge.ID); if (edge.ContainerID > 0) { AddContainment(edge.ContainerID, edge.ID); } } }
public void RetrieveDiagramElements(MapView mapView, NetworkDiagram networkDiagram) { // Create a DiagramElementQueryByExtent to retrieve diagram element junctions whose extent // intersects the active map extent DiagramElementQueryByExtent elementQuery = new DiagramElementQueryByExtent(); elementQuery.ExtentOfInterest = MapView.Active.Extent; elementQuery.AddContents = false; elementQuery.QueryDiagramJunctionElement = true; elementQuery.QueryDiagramEdgeElement = false; elementQuery.QueryDiagramContainerElement = false; // Use this DiagramElementQueryByExtent as an argument to the QueryDiagramElements method DiagramElementQueryResult result = networkDiagram.QueryDiagramElements(elementQuery); }