Exemplo n.º 1
0
        //HelixToolkit.Wpf.SharpDX.Viewport3DX hVp3D;

        /// <summary>
        /// Our own Viewport3d class here
        /// </summary>
        /// <param name="meshes"></param>
        /// <param name="polys"></param>
        /// <param name="id"></param>
        /// <param name="w"></param>
        /// <param name="hasViewcube"></param>
        public Viewport3d(List <Mesh> meshes, List <PolylineCurve> polys, int id, BiomorpherWindow w, bool hasViewcube)
        {
            ID = id;
            W  = w;
            InitializeComponent();
            create3DViewPort(meshes, polys, hasViewcube);
        }
Exemplo n.º 2
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);
        }
        /// <summary>
        /// Open the biomorpher window upon doubleclick
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        /// <returns></returns>
        public override GH_ObjectResponse RespondToMouseDoubleClick(GH_Canvas sender, GH_CanvasMouseEvent e)
        {
            if ((ContentBox.Contains(e.CanvasLocation)))
            {
                if (Owner.Params.Input[0].SourceCount != 0 && Owner.Params.Input[1].SourceCount != 0)
                {
                    myMainWindow = new BiomorpherWindow(MyOwner);
                    myMainWindow.Show();

                    return(GH_ObjectResponse.Handled);
                }
            }

            return(GH_ObjectResponse.Ignore);
        }
Exemplo n.º 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);
        }