{
// Get the diagram elements whose extent intersects the active map extent
static void GetDiagramElements(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);
// Get the container, junction, edge elements.
IReadOnlyList<DiagramContainerElement> containerElements = result.DiagramContainerElements;
// In this case result.DiagramJunctionElements and result.DiagramEdgeElements will be empty
// because elementQuery.QueryDiagramEdgeElement and elementQuery.QueryDiagramContainerElement are set to 'false'
IReadOnlyList<DiagramJunctionElement> junctionElements = result.DiagramJunctionElements;
IReadOnlyList<DiagramEdgeElement> edgeElements = result.DiagramEdgeElements;
}
}
{
// Change the layout of a network diagram by querying for all the diagram elements, editing their shapes,
static void ChangeDiagramLayout(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;
// Save the new layout of the diagram elements
diagramTest.SaveLayout(subset, true);
}
}
}
Target Platforms: Windows 11 Home, Pro, Enterprise (64 bit)