//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); }
/// <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); }
/// <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); }