コード例 #1
0
        /// <summary>
        /// Creates a simple viewport without helix
        /// </summary>
        /// <param name="chromo"></param>
        /// <param name="owner"></param>
        public ViewportBasic(Chromosome chromo, BiomorpherWindow owner)
        {
            InitializeComponent();

            Owner        = owner;
            thisDesign   = chromo;
            this.ToolTip = "double click to display in main viewport";

            myViewport = new Viewport3D();

            List <Mesh>          rMesh = thisDesign.phenotype;
            List <ModelVisual3D> vis   = new List <ModelVisual3D>();

            Model3DGroup boundsGroup = new Model3DGroup();

            for (int i = 0; i < rMesh.Count; i++)
            {
                if (rMesh[i] != null)
                {
                    MeshGeometry3D  wMesh    = new MeshGeometry3D();
                    DiffuseMaterial material = new DiffuseMaterial();
                    Friends.ConvertRhinotoWpfMesh(rMesh[i], wMesh, material);

                    GeometryModel3D model = new GeometryModel3D(wMesh, material);

                    model.BackMaterial = material;

                    DirectionalLight myLight = new DirectionalLight(Colors.White, new Vector3D(-0.5, -1, -1));

                    // ModelGroup
                    Model3DGroup modelGroup = new Model3DGroup();
                    modelGroup.Children.Add(model);
                    modelGroup.Children.Add(myLight);
                    ModelVisual3D v = new ModelVisual3D();
                    v.Content = modelGroup;
                    vis.Add(v);

                    boundsGroup.Children.Add(model);
                }
            }

            bounds = boundsGroup.Bounds;

            for (int i = 0; i < vis.Count; i++)
            {
                myViewport.Children.Add(vis[i]);
            }

            ZoomExtents();

            //Add viewport to user control
            this.AddChild(myViewport);
        }
コード例 #2
0
        private void create3DViewPort(List <Mesh> meshes, List <PolylineCurve> polys, bool hasViewcube)
        {
            hVp3D = new HelixViewport3D();
            //hVp3D = new HelixToolkit.Wpf.SharpDX.Viewport3DX();

            //Settings
            hVp3D.ShowFrameRate = false;
            //hVp3D.ViewCubeOpacity = 0.1;
            hVp3D.ViewCubeTopText    = "T";
            hVp3D.ViewCubeBottomText = "B";
            hVp3D.ViewCubeFrontText  = "E";
            hVp3D.ViewCubeRightText  = "N";
            hVp3D.ViewCubeLeftText   = "S";
            hVp3D.ViewCubeBackText   = "W";
            hVp3D.ViewCubeHeight     = 40;
            hVp3D.ViewCubeWidth      = 40;
            hVp3D.ShowViewCube       = hasViewcube;
            DefaultLights lights = new DefaultLights();

            hVp3D.Children.Add(lights);
            hVp3D.IsInertiaEnabled      = true;
            hVp3D.ZoomExtentsWhenLoaded = true;

            List <ModelVisual3D> vis = new List <ModelVisual3D>();

            for (int i = 0; i < meshes.Count; i++)
            {
                if (meshes[i] != null)
                {
                    MeshGeometry3D  wMesh    = new MeshGeometry3D();
                    DiffuseMaterial material = new DiffuseMaterial();
                    Friends.ConvertRhinotoWpfMesh(meshes[i], wMesh, material);
                    GeometryModel3D model = new GeometryModel3D(wMesh, material);

                    model.BackMaterial = material;
                    ModelVisual3D v = new ModelVisual3D();
                    v.Content = model;

                    vis.Add(v);
                }
            }

            for (int i = 0; i < polys.Count; i++)
            {
                if (polys[i] != null)
                {
                    LinesVisual3D line = new LinesVisual3D();
                    line.Color     = Colors.Black;
                    line.Thickness = 1;

                    Rhino.Geometry.Polyline result = new Rhino.Geometry.Polyline();
                    polys[i].TryGetPolyline(out result);

                    for (int j = 0; j < result.Count - 1; j++)
                    {
                        line.Points.Add(new Point3D(result[j].X, result[j].Y, result[j].Z));
                        line.Points.Add(new Point3D(result[j + 1].X, result[j + 1].Y, result[j + 1].Z));
                    }
                    vis.Add(line);
                }
            }


            for (int i = 0; i < vis.Count; i++)
            {
                hVp3D.Children.Add(vis[i]);
            }

            //Add viewport to user control
            this.AddChild(hVp3D);

            /*
             * ContextMenu myMenu = new ContextMenu();
             *
             * MenuItem item1 = new MenuItem();
             * MenuItem item2 = new MenuItem();
             *
             * item1.Header = "item1";
             * //item1.Click += new RoutedEventHandler(item1_Click);
             * myMenu.Items.Add(item1);
             *
             * item2.Header = "item2";
             * //item2.Click += new RoutedEventHandler(item2_Click);
             * myMenu.Items.Add(item2);
             *
             * //this.ContextMenu = myMenu;
             * //myMenu.IsOpen = true;
             * hVp3D.ContextMenu = myMenu;
             */
        }
コード例 #3
0
        private void create3DViewPort(List <Mesh> rMesh, bool hasViewcube)
        {
            hVp3D = new HelixViewport3D();
            //hVp3D = new HelixToolkit.Wpf.SharpDX.Viewport3DX();

            //Settings
            hVp3D.ShowFrameRate      = false;
            hVp3D.ViewCubeOpacity    = 0.1;
            hVp3D.ViewCubeTopText    = "T";
            hVp3D.ViewCubeBottomText = "B";
            hVp3D.ViewCubeFrontText  = "E";
            hVp3D.ViewCubeRightText  = "N";
            hVp3D.ViewCubeLeftText   = "S";
            hVp3D.ViewCubeBackText   = "W";
            hVp3D.ViewCubeHeight     = 40;
            hVp3D.ViewCubeWidth      = 40;
            hVp3D.ShowViewCube       = hasViewcube;
            var lights = new DefaultLights();

            hVp3D.Children.Add(lights);
            hVp3D.IsInertiaEnabled      = true;
            hVp3D.ZoomExtentsWhenLoaded = true;
            //hVp3D.Camera = Friends.dummyHelix.Camera;

            List <ModelVisual3D> vis = new List <ModelVisual3D>();

            for (int i = 0; i < rMesh.Count; i++)
            {
                if (rMesh[i] != null)
                {
                    MeshGeometry3D  wMesh    = new MeshGeometry3D();
                    DiffuseMaterial material = new DiffuseMaterial();
                    Friends.ConvertRhinotoWpfMesh(rMesh[i], wMesh, material);
                    GeometryModel3D model = new GeometryModel3D(wMesh, material);

                    model.BackMaterial = material;
                    ModelVisual3D v = new ModelVisual3D();
                    v.Content = model;

                    vis.Add(v);
                }
            }

            for (int i = 0; i < vis.Count; i++)
            {
                hVp3D.Children.Add(vis[i]);
            }

            //Add viewport to user control
            this.AddChild(hVp3D);


            /*
             * ContextMenu myMenu = new ContextMenu();
             *
             * MenuItem item1 = new MenuItem();
             * MenuItem item2 = new MenuItem();
             *
             * item1.Header = "item1";
             * //item1.Click += new RoutedEventHandler(item1_Click);
             * myMenu.Items.Add(item1);
             *
             * item2.Header = "item2";
             * //item2.Click += new RoutedEventHandler(item2_Click);
             * myMenu.Items.Add(item2);
             *
             * //this.ContextMenu = myMenu;
             * //myMenu.IsOpen = true;
             * hVp3D.ContextMenu = myMenu;
             */
        }
コード例 #4
0
        /// <summary>
        /// Creates a simple viewport without helix
        /// </summary>
        /// <param name="chromo"></param>
        /// <param name="owner"></param>
        public ViewportBasic(Chromosome chromo, BiomorpherWindow owner)
        {
            InitializeComponent();

            Owner        = owner;
            thisDesign   = chromo;
            this.ToolTip = "double click to display in main viewport";

            myViewport = new HelixViewport3D();
            myViewport.ZoomExtentsWhenLoaded = true;
            myViewport.ShowViewCube          = false;
            DefaultLights lights = new DefaultLights();

            myViewport.Children.Add(lights);

            List <Mesh>          rMesh = thisDesign.phenoMesh;
            List <PolylineCurve> polys = thisDesign.phenoPoly;

            List <ModelVisual3D> vis = new List <ModelVisual3D>();

            for (int i = 0; i < rMesh.Count; i++)
            {
                if (rMesh[i] != null)
                {
                    MeshGeometry3D  wMesh    = new MeshGeometry3D();
                    DiffuseMaterial material = new DiffuseMaterial();
                    Friends.ConvertRhinotoWpfMesh(rMesh[i], wMesh, material);

                    GeometryModel3D model = new GeometryModel3D(wMesh, material);

                    model.BackMaterial = material;

                    // DirectionalLight myLight = new DirectionalLight(Colors.White, new Vector3D(-0.5, -1, -1));

                    Model3DGroup modelGroup = new Model3DGroup();
                    modelGroup.Children.Add(model);
                    //modelGroup.Children.Add(myLight);
                    ModelVisual3D v = new ModelVisual3D();
                    v.Content = modelGroup;
                    vis.Add(v);
                }
            }


            for (int i = 0; i < polys.Count; i++)
            {
                if (polys[i] != null)
                {
                    LinesVisual3D line = new LinesVisual3D();
                    line.Color     = Colors.Black;
                    line.Thickness = 1;

                    Rhino.Geometry.Polyline result = new Rhino.Geometry.Polyline();
                    polys[i].TryGetPolyline(out result);

                    for (int j = 0; j < result.Count - 1; j++)
                    {
                        line.Points.Add(new Point3D(result[j].X, result[j].Y, result[j].Z));
                        line.Points.Add(new Point3D(result[j + 1].X, result[j + 1].Y, result[j + 1].Z));
                    }
                    vis.Add(line);
                }
            }

            for (int i = 0; i < vis.Count; i++)
            {
                myViewport.Children.Add(vis[i]);
            }

            myViewport.IsEnabled = false;

            //Add viewport to user control
            this.AddChild(myViewport);
        }