Exemple #1
0
        // Update the 3D view
        public void BuildView()
        {
            ObservableCollection <Object3D> myObjects = new ObservableCollection <Object3D>();

            GeometricalViewModel myView = new GeometricalViewModel();

            double H = myStructure.StoryHeight;
            double T = myStructure.SlabThickness;

            myStructure.RescaleAll();

            for (int i = 0; i < myStructure.NumStories; i++)
            {
                if (myStructure?.Slabs != null)
                {
                    foreach (var myslab in myStructure?.Slabs)
                    {
                        List <MWPoint2D> pts = myslab.Points.Select(s => s).ToList();
                        pts.Add(pts[0]);

                        Object3D slab = new Object3D
                        {
                            Curve  = new PolylineCurve(pts.Select(p => new Rhino.Geometry.Point3d(p.X, p.Y, (i + 1) * H))),
                            Vector = new Vector3d(0, 0, 0.3),
                            Color  = Color.FromArgb(255, 200, 200, 200),
                            Holes  = myStructure.Openings.Select(op => op.Points.Select(p => new Point3D(p.X, p.Y, (i + 1) * H)).ToList()).ToList()
                        };

                        myObjects.Add(slab);
                    }
                }

                //columns
                if (myStructure?.Columns != null)
                {
                    foreach (var mycolumn in myStructure?.Columns)
                    {
                        List <MWPoint2D> pts = mycolumn.Points.Select(s => s).ToList();
                        pts.Add(pts[0]);

                        Object3D Acolumn = new Object3D
                        {
                            Curve  = new PolylineCurve(pts.Select(p => new Rhino.Geometry.Point3d(p.X, p.Y, i * H + 0.5 * T))),
                            Vector = new Vector3d(0, 0, H),
                            Color  = Color.FromArgb(255, 200, 50, 50)
                        };

                        myObjects.Add(Acolumn);
                    }
                }

                //walls
                if (myStructure?.Walls != null)
                {
                    foreach (var mywall in myStructure?.Walls)
                    {
                        var points = myStructure.ExpandWall(new MWPoint2D(mywall.Points[0].X, mywall.Points[0].Y), new MWPoint2D(mywall.Points[1].X, mywall.Points[1].Y));
                        //var points = mywall.Select(p => p).ToList();

                        points.Add(points[0]);
                        //Console.WriteLine("new wall");
                        //foreach (var p in points)
                        //    Console.WriteLine("X = {0}, Y = {1}", p.X, p.Y);
                        Object3D wall = new Object3D
                        {
                            Curve  = new PolylineCurve(points.Select(p => new Rhino.Geometry.Point3d(p.X, p.Y, i * H + 0.5 * T))),
                            Vector = new Vector3d(0, 0, H),
                            Color  = Color.FromArgb(255, 50, 50, 200)
                        };
                        myObjects.Add(wall);
                    }
                }
            }
            myView.Objects = myObjects;

            My3DView = myView;
        }