コード例 #1
0
        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);
            }
        }
コード例 #2
0
        /// <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);
                }
            }
        }
コード例 #3
0
        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);
        }