lixiaojun
2025-04-12 19e6eb0b172154f9b44323a4174ff9b61628439d
Yw.WpfUI.Test.Core/MainWindow.xaml.cs
@@ -22,7 +22,7 @@
        {
            var nw = LoadEpaNetwork();
            var nw3d = Get3dNetwork(nw);
            this.viewer.Initial(nw3d);
            this.editer.Initial(nw3d);
            //BuildSimpleNetwork(this.viewport,nw3d.Nodes,nw3d.Links);
        }
@@ -129,48 +129,45 @@
        }
        public void BuildSimpleNetwork(HelixViewport3D viewport, List<NodeL3d> nodes, List<LinkL3d> pipes)
        private void AddJunction_Click(object sender, RoutedEventArgs e)
        {
            // 清空现有内容
            viewport.Children.Clear();
            // 添加光源
            viewport.Children.Add(new DefaultLights());
            // 创建节点集合(点精灵技术)
            var pointsVisual = new PointsVisual3D
            {
                Size = 5, // 显示大小(屏幕像素)
                Color = Colors.Red,
            };
            nodes.ForEach(x => pointsVisual.Points.Add(new Point3D(x.Position.X, x.Position.Y, x.Position.Z)));
            viewport.Children.Add(pointsVisual);
            // 2. 显示管道线段(使用LinesVisual3D)
            var linesVisual = new LinesVisual3D
            {
                Points = new Point3DCollection(pipes.Count * 2), // 预分配内存
                Color = Colors.Blue,
                Thickness = 2.0
            };
            foreach (var pipe in pipes)
            {
                linesVisual.Points.Add(new Point3D(pipe.StartPosition.X, pipe.StartPosition.Y, pipe.StartPosition.Z));
                linesVisual.Points.Add(new Point3D(pipe.EndPosition.X, pipe.EndPosition.Y, pipe.EndPosition.Z));
            }
            viewport.Children.Add(linesVisual);
            // 4. 自动缩放到合适大小
            viewport.ZoomExtents();
            this.editer.StartAddJunction();
        }
        private void AddReservoir_Click(object sender, RoutedEventArgs e)
        {
            this.editer.StartAddReservoir();
        }
        private void AddTank_Click(object sender, RoutedEventArgs e)
        {
            this.editer.StartAddTank();
        }
        private void AddPipe_Click(object sender, RoutedEventArgs e)
        {
            this.editer.StartAddPipe();
        }
        private void AddHorizPipe_Click(object sender, RoutedEventArgs e)
        {
        }
        private void AddVertPipe_Click(object sender, RoutedEventArgs e)
        {
        }
        private void AddPump_Click(object sender, RoutedEventArgs e)
        {
            this.editer.StartAddPump();
        }
        private void AddValve_Click(object sender, RoutedEventArgs e)
        {
            this.editer.StartAddValve();
        }
    }