Пример #1
0
 HitTestResultBehavior HitTest(HitTestResult ht)
 {
     var r = ht as RayMeshGeometry3DHitTestResult;
     if (r == null) return HitTestResultBehavior.Continue;
     svr.Move(bFirst, r.PointHit.X < (svr.BarPos(bFirst) - 0.5 + barRate / 2) * 300);
     return HitTestResultBehavior.Stop;
 }
Пример #2
0
        public HitTestResultBehavior ResultCallBack(HitTestResult result)
        {
            // Did we hit 3D?
            RayHitTestResult rayResult = result as RayHitTestResult;
            if (rayResult != null)
            {
                // Did we hit a MeshGeometry3D?
                RayMeshGeometry3DHitTestResult rayMeshResult =
                    rayResult as RayMeshGeometry3DHitTestResult;

                if (rayMeshResult != null)
                {
                    GeometryModel3D hitgeo = rayMeshResult.ModelHit as GeometryModel3D;
                    DiffuseMaterial dm = hitgeo.Material as DiffuseMaterial;
                    SolidColorBrush b = dm.Brush as SolidColorBrush;
                    Color c = b.Color;
                    c.ScB = 1 - c.ScB;
                    c.ScG = 1 - c.ScG;
                    c.ScR = 1 - c.ScR;
                    hitgeo.Material = new DiffuseMaterial(new SolidColorBrush(c));
                }
            }

            return HitTestResultBehavior.Continue;
        }
Пример #3
0
        private HitTestResultBehavior SelectModel(HitTestResult result)
        {
            RayHitTestResult res = result as RayHitTestResult;
            if (res != null)
            {
                DependencyObject visual = res.VisualHit;
                object model = null, scene = null;
                while (visual != null)
                {
                    if (consoleMode)
                    {
                        if (visual is Model)
                            scope.SetVariable("model", model = visual);
                        else if (visual is Scene)
                            scope.SetVariable("scene", scene = visual);
                    }
                    else
                        Control.SendClick(visual, result);
                    visual = VisualTreeHelper.GetParent(visual);
                }
                selection.Text = $"Selection: {model} in {scene}";
            }

            return HitTestResultBehavior.Stop;
        }
Пример #4
0
 private HitTestResultBehavior HitTestCallback(HitTestResult result)
 {
     var rayhit = result as RayHitTestResult;
     hitTestValue = rayhit.PointHit;
     hit = true;
     return HitTestResultBehavior.Continue;
 }
Пример #5
0
        private async void DataGridMinimum_MouseMove(object sender, MouseEventArgs e)
        {
            try
            {
                System.Windows.Media.HitTestResult hitTestResult = VisualTreeHelper.HitTest(DataGridMinimum, e.GetPosition(DataGridMinimum));
                DataGridRow dataGridRow = hitTestResult.VisualHit.GetParentOfType <DataGridRow>();
                if (dataGridRow != null)
                {
                    int index       = dataGridRow.GetIndex();
                    var combination = DataGridMinimum.CurrentItem; // Items[index]).Name;

                    if (combination != null)
                    {
                        MinimumPriceProductModel model = (MinimumPriceProductModel)combination;
                        string val = "История цен: \n";

                        IList <int> history = await dbLoader.GetPriceHistoryAsync(model.ProductID);

                        foreach (var item in history)
                        {
                            val += $"{item} \n";
                        }
                        dgTooltip.IsOpen  = true;
                        dgTooltip.Content = val;
                    }
                }
            }
            catch (Exception)
            {
            }
        }
Пример #6
0
        private HitTestResultBehavior HTResult(System.Windows.Media.HitTestResult rawresult)
        {
            RayHitTestResult rayResult = rawresult as RayHitTestResult;
            ToolTip          tt        = new ToolTip();

            if (f1 != null || f2 != null)
            {
                map.Children.Remove(f1);
                map.Children.Remove(f2);
                map.Children.Add(models[id1].Item1);
                map.Children.Add(models[id2].Item1);
            }
            if (rayResult != null)
            {
                bool gasit = false;
                foreach (var gm in models.Values)
                {
                    if (gm.Item1 == rayResult.ModelHit)
                    {
                        hitgeo = (GeometryModel3D)rayResult.ModelHit;
                        gasit  = true;
                        tt     = GetIsToolTip(gm.Item1);
                        MessageBox.Show(tt.Content.ToString());
                    }
                }
                foreach (var gm in linesmodel)
                {
                    if (gm == rayResult.ModelHit)
                    {
                        hitgeo = (GeometryModel3D)rayResult.ModelHit;
                        gasit  = true;
                        tt     = GetIsToolTip(gm);
                        MessageBox.Show(tt.Content.ToString());
                        string id = tt.Content.ToString().Split(',')[0].Split(':')[1].Substring(1);
                        foreach (var item in lines)
                        {
                            long idd = long.Parse(id);
                            if (item.ID == idd)
                            {
                                id1 = (long)item.FirstEnd;
                                id2 = (long)item.SecondEnd;
                                map.Children.Remove(models[(long)item.FirstEnd].Item1);
                                map.Children.Remove(models[(long)item.SecondEnd].Item1);
                                f1          = new GeometryModel3D(models[(long)item.FirstEnd].Item1.Geometry, models[(long)item.FirstEnd].Item1.Material);
                                f1.Material = new DiffuseMaterial(Brushes.Pink);
                                f2          = new GeometryModel3D(models[(long)item.SecondEnd].Item1.Geometry, models[(long)item.SecondEnd].Item1.Material);
                                f2.Material = new DiffuseMaterial(Brushes.Pink);
                                map.Children.Add(f1);
                                map.Children.Add(f2);
                            }
                        }
                    }
                }
                if (!gasit)
                {
                    hitgeo = null;
                }
            }
            return(HitTestResultBehavior.Stop);
        }
Пример #7
0
        private HitTestResultBehavior HTResult(System.Windows.Media.HitTestResult rawresult)
        {
            RayHitTestResult rayResult = rawresult as RayHitTestResult;

            if (rayResult != null)
            {
                bool gasit = false;
                for (int i = 0; i < geometryAndEntyty.Keys.Count(); i++)
                {
                    if ((GeometryModel3D)geometryAndEntyty.Keys.ToList()[i] == rayResult.ModelHit)
                    {
                        hitgeo = (GeometryModel3D)rayResult.ModelHit;
                        gasit  = true;
                        var entity = geometryAndEntyty[hitgeo];

                        toolTip         = new ToolTip();
                        toolTip.Content = "\tPOWER ENTITY:\nID: " + entity.Id.ToString() + "\nName: " + entity.Name + "\nType: " + entity.GetType().Name;
                        //toolTip.Margin = new Thickness(mousePositionForToolTip.X, mousePositionForToolTip.Y, 0, 0);
                        toolTip.Height = 80;
                        toolTip.IsOpen = true;
                        ToolTipService.SetPlacement(ViewPort, System.Windows.Controls.Primitives.PlacementMode.Mouse);
                        break;
                    }
                    else
                    {
                        toolTip.IsOpen = false;
                    }
                }
                if (!gasit)
                {
                    hitgeo = null;
                }
            }
            return(HitTestResultBehavior.Stop);
        }
 public HitTestResultBehavior MainHitTestResult(HitTestResult result)
 {
     if ((result.VisualHit as DrawingVisual) != null)
     {
         hittedElements.Add(result.VisualHit as DrawingVisual);
     }
     return HitTestResultBehavior.Continue;
 }
        HitTestResultBehavior InfoHitTestSelOneResultCallback(HitTestResult result) {
            var frameworkElement = result.VisualHit as FrameworkElement;

            if (frameworkElement == null)
                return HitTestResultBehavior.Continue;

            _infoShape = frameworkElement;
            return HitTestResultBehavior.Stop;
        }
        HitTestResultBehavior RailHitTestSelOneResultCallback(HitTestResult result) {
            var frameworkElement = result.VisualHit as FrameworkElement;

            if (frameworkElement == null || !(frameworkElement.Tag is Rail))
                return HitTestResultBehavior.Continue;

            _railUnderMouse = frameworkElement.Tag as Rail;
            return HitTestResultBehavior.Stop;
        }
Пример #11
0
        // If a child visual object is hit, toggle its opacity to visually indicate a hit.
        public HitTestResultBehavior MyCallback(HitTestResult result)
        {
            if (result.VisualHit.GetType() == typeof (System.Windows.Media.DrawingVisual))
            {
                ((System.Windows.Media.DrawingVisual) result.VisualHit).Opacity =
                    ((System.Windows.Media.DrawingVisual) result.VisualHit).Opacity == 1.0 ? 0.4 : 1.0;
            }

            // Stop the hit test enumeration of objects in the visual tree.
            return HitTestResultBehavior.Stop;
        }
Пример #12
0
 // Return the result of the hit test to the callback.
 public HitTestResultBehavior PerformHitTest(HitTestResult result)
 {
     FrameworkElement visual = (FrameworkElement)result.VisualHit;
     // Add the hit test result to the list that will be processed after the enumeration.
     if (visual.IsHitTestVisible)
         hitTestResults.Add(visual);
     else
         return HitTestResultBehavior.Stop;
     // Set the behavior to return visuals at all z-order levels.
     return HitTestResultBehavior.Continue;
 }
Пример #13
0
 private HitTestResultBehavior HitTestCallback(HitTestResult result)
 {
     GeometryHitTestResult geometryResult = (GeometryHitTestResult)result;
     DrawingVisual visual = result.VisualHit as DrawingVisual;
     if (visual != null &&
         geometryResult.IntersectionDetail == IntersectionDetail.FullyInside)
     {
         hits.Add(visual);
     }
     return HitTestResultBehavior.Continue;
 }
Пример #14
0
        private HitTestResultBehavior HTResult(System.Windows.Media.HitTestResult rawresult)
        {
            RayHitTestResult rayResult = rawresult as RayHitTestResult;

            if (rayResult != null)
            {
                if (rayResult.VisualHit is Disk)
                {
                    MessageBox.Show(((Disk)(rayResult.VisualHit)).AppName);
                }

                if (scene.Models[0] == rayResult.VisualHit)
                {
                    if (!((Sphere)scene.Models[0]).Children.Contains(pokeable_modelvisual_3d))
                    {
                        //System.Diagnostics.Process.Start("Notepad.exe");
                        scene.ToggleTimer();
                        //scene.Models.Add(new TextVisual3D() {Text="Hello",  Position= new Point3D (0,0,3) });
                        old = scene.Camera.Position;
                        scene.Camera.Position = new Point3D(15, -6, 12);
                        scene.Camera.Rotate(new Vector3D(2, 1, 1), -70);
                        ((Sphere)scene.Models[0]).Children.Add(pokeable_modelvisual_3d);
                        tb.Focus();
                        tb.TextChanged += Tb_TextChanged;
                        //tb.Text = angle.ToString();
                    }
                    else
                    {
                        scene.ToggleTimer();
                        //scene.Models.Add(new TextVisual3D() {Text="Hello",  Position= new Point3D (0,0,3) });
                        //scene.Camera.Position = new Point3D(25, -15, 8);
                        //scene.Camera.Rotate(new Vector3D(2, 1, 1), 100);
                        ((Sphere)scene.Models[0]).Children.Remove(pokeable_modelvisual_3d);
                        scene.Camera.Position = old;
                    }
                }

                //if (cross == rayResult.ModelHit)
                //{
                //    this.Close();
                //}

                //if (pyramid == rayResult.ModelHit)
                //{

                //    DragMove();
                //}
            }


            return(HitTestResultBehavior.Stop);
        }
Пример #15
0
        protected HitTestResultBehavior OnVisualHit(HitTestResult result)
        {
            foreach (NameValuePair nvp in dataPoints)
            {
                if (nvp.Tag == result.VisualHit)
                {
                    MessageBox.Show("Name: " + nvp.Name + ", Value: " + nvp.Value.ToString());
                    break;
                }
            }

            return HitTestResultBehavior.Continue;
        }
Пример #16
0
        /// <summary>
        /// The HTResult function simply takes the intersection closest to the origin and
        /// and stores the intersection info for that closest intersection point.
        /// </summary>
        /// <param name="rawresult"></param>
        /// <returns></returns>
        private HitTestResultBehavior HTResult(System.Windows.Media.HitTestResult rawresult)
        {
            RayHitTestResult      rayResult             = rawresult as RayHitTestResult;
            HitTestResultBehavior hitTestResultBehavior = HitTestResultBehavior.Continue;

            // since we're hit testing a viewport3D we should be getting the ray hit test result back
            if (rayResult != null)
            {
                _closestIntersectInfo = GetIntersectionInfo(rayResult);
                hitTestResultBehavior = HitTestResultBehavior.Stop;
            }

            return(hitTestResultBehavior);
        }
Пример #17
0
        // Return the result of the hit test to the callback. 
        public HitTestResultBehavior MyHitTestResult(HitTestResult result)
        {
            if (result.VisualHit is FrameworkElement)
            {
                if (((FrameworkElement) result.VisualHit).DataContext is Appraisal)
                {
                    hitResultsList.Add(((FrameworkElement)result.VisualHit).DataContext as Appraisal);
                }
            }
                
            // Add the hit test result to the list that will be processed after the enumeration.
            

            // Set the behavior to return visuals at all z-order levels. 
            return HitTestResultBehavior.Stop;
        }
Пример #18
0
        // Handle the hit test results enumeration in the callback.
        internal static HitTestResultBehavior CircleHitTestResult(HitTestResult result)
        {
            // Add the hit test result to the list that will be processed after the enumeration.
            HitResultsList.Add(result.VisualHit);

            // Determine whether hit test should return only the top-most layer visual.
            if (MyWindow.TopmostLayer)
            {
                // Set the behavior to stop the enumeration of visuals.
                return HitTestResultBehavior.Stop;
            }
            // Set the behavior to continue the enumeration of visuals.
            // All visuals that intersect at the hit test coordinates are returned,
            // whether visible or not.
            return HitTestResultBehavior.Continue;
        }
        HTResult(System.Windows.Media.HitTestResult rawresult)
        {
            RayHitTestResult rayResult = rawresult as RayHitTestResult;

            if (rayResult != null)
            {
                DiffuseMaterial darkSide =
                    new DiffuseMaterial(new SolidColorBrush(
                                            System.Windows.Media.Colors.Red));
                bool gasit = false;
                for (int i = 1; i < grupica.Children.Count; i++)
                {
                    if ((GeometryModel3D)grupica.Children[i] == rayResult.ModelHit)
                    {
                        hitgeo = (GeometryModel3D)rayResult.ModelHit; //tu se nalazi kvadar koji smo pogopdili
                        gasit  = true;

                        MeshGeometry3D hitMesh = (MeshGeometry3D)hitgeo.Geometry;
                        double         xMin    = 45.2325;   //19.72727  19.793909
                        double         xMax    = 45.277031; //19.95094  19.894459
                        double         yMin    = 19.793909; //45.18972  45.2325
                        double         yMax    = 19.894459; //45.32873  45.277031
                        double         stopaX  = 200 / (xMax - xMin);
                        double         stopaY  = 200 / (yMax - yMin);

                        Point3D p = hitMesh.Positions[0];
                        double  x = p.X;
                        double  y = p.Z;

                        foreach (CvorMape cm in sviCvorovi)
                        {
                            if (x == (stopaX * (cm.X - xMin)) && y == (stopaY * (cm.Y - yMin)))
                            {
                                MessageBox.Show("name: " + cm.Name + " id: " + cm.Id + " type: " + cm.Type);
                            }
                        }
                    }
                }
                if (!gasit)
                {
                    hitgeo = null;
                }
            }

            return(HitTestResultBehavior.Stop); //enumeracija, to znaci da hocemo da zaustavimo zrak, a ne da se nastavlja
        }
Пример #20
0
        // If a child visual object is hit, toggle its opacity to visually indicate a hit.
        public HitTestResultBehavior myCallback(HitTestResult result)
        {
            if (result.VisualHit.GetType() == typeof(DrawingVisual))
            {
                if (((DrawingVisual)result.VisualHit).Opacity == 1.0)
                {
                    ((DrawingVisual)result.VisualHit).Opacity = 0.4;
                }
                else
                {
                    ((DrawingVisual)result.VisualHit).Opacity = 1.0;
                }
            }

            // Stop the hit test enumeration of objects in the visual tree.
            return HitTestResultBehavior.Stop;
        }
        public HitTestResultBehavior myCallback(HitTestResult result)
        {
            // Toggle between a skewed rendering and normal rendering,
            // if a visual was clicked.
            if (result.VisualHit.GetType() == typeof(DrawingVisual))
            {
                if (((DrawingVisual)result.VisualHit).Transform == null)
                {
                    ((DrawingVisual)result.VisualHit).Transform = new SkewTransform(7, 7);
                }
                else
                {
                    ((DrawingVisual)result.VisualHit).Transform = null;
                }
            }

            // Tell HitTest() to stop drilling into the visual tree.
            return HitTestResultBehavior.Stop;
        }
Пример #22
0
        public HitTestResultBehavior HTResult(HitTestResult2D result2d)
        {
            RayMeshGeometry3DHitTestResult rayht = (result2d as RayMeshGeometry3DHitTestResult);
            Model3D model = rayht.ModelHit;

            foreach (ListBox3DItem ci in this.Items)
            {
                if (ci.ItemGroup.Children.Contains(model))
                {
                    if (rayht.DistanceToRayOrigin < _ciHitTestDistance)
                    {
                        _ciHitTest         = ci;
                        _ciHitTestDistance = rayht.DistanceToRayOrigin;
                    }
                }
            }

            return(HitTestResultBehavior.Continue);
        }
Пример #23
0
        //<SnippetHitTest3D3DN5>
        public HitTestResultBehavior HTResult(System.Windows.Media.HitTestResult rawresult)
        {
            //MessageBox.Show(rawresult.ToString());
            RayHitTestResult rayResult = rawresult as RayHitTestResult;

            if (rayResult != null)
            {
                RayMeshGeometry3DHitTestResult rayMeshResult = rayResult as RayMeshGeometry3DHitTestResult;

                if (rayMeshResult != null)
                {
                    GeometryModel3D hitgeo = rayMeshResult.ModelHit as GeometryModel3D;

                    UpdateResultInfo(rayMeshResult);
                    UpdateMaterial(hitgeo, (side1GeometryModel3D.Material as MaterialGroup));
                }
            }

            return(HitTestResultBehavior.Continue);
        }
        HitTestResultBehavior NodeOrRailHitTestSelOnlyOneNodeCallback(HitTestResult result) {
            var frameworkElement = result.VisualHit as FrameworkElement;

            if (!(frameworkElement is Path))
                return HitTestResultBehavior.Continue;
            object tag = frameworkElement.Tag;
            if (tag != null) {
                GraphmapsNode graphmapsNode = tag as GraphmapsNode;
                if (graphmapsNode != null) {
                    _nodeUnderMouse = graphmapsNode;
                    return HitTestResultBehavior.Stop;
                }
                else {
                    var rail = frameworkElement.Tag as Rail;
                    if (rail != null)
                        _railUnderMouse = rail;
                }
            }

            return HitTestResultBehavior.Continue;
        }
Пример #25
0
 // Return the result of the hit test to the callback.
 private static HitTestResultBehavior hitTestResultCallback(HitTestResult result)
 {
     // Retrieve the results of the hit test.
     IntersectionDetail intersectionDetail = ((GeometryHitTestResult)result).IntersectionDetail;
     switch (intersectionDetail)
     {
         case IntersectionDetail.FullyContains:
             // Add the hit test result to the list that will be processed after the enumeration.
             hitResultsList.Add(result.VisualHit);
             return HitTestResultBehavior.Continue;
         case IntersectionDetail.Intersects:
             hitResultsList.Add(result.VisualHit);
             // Set the behavior to return visuals at all z-order levels.
             return HitTestResultBehavior.Continue;
         case IntersectionDetail.FullyInside:
             hitResultsList.Add(result.VisualHit);
             // Set the behavior to return visuals at all z-order levels.
             return HitTestResultBehavior.Continue;
         default:
             return HitTestResultBehavior.Stop;
     }
 }
Пример #26
0
        public HitTestResultBehavior HTResult(System.Windows.Media.HitTestResult rawresult)
        {
            RayHitTestResult rayResult = rawresult as RayHitTestResult;

            if (rayResult == null)
            {
                return(HitTestResultBehavior.Continue);
            }
            RayMeshGeometry3DHitTestResult rayMeshResult = rayResult as RayMeshGeometry3DHitTestResult;

            if (rayMeshResult == null)
            {
                return(HitTestResultBehavior.Continue);
            }
            GeometryModel3D hitgeo = rayMeshResult.ModelHit as GeometryModel3D;

            if (!(hitgeo == planeOdd || hitgeo == planeEven))
            {
                return(HitTestResultBehavior.Continue);
            }

            //World.TargetPosition = new Vector(rayResult.PointHit.X, rayResult.PointHit.Z);

            var unit = new Unit {
                World = World.Model
            };

            unit.Position = new Vector(rayResult.PointHit.X, rayResult.PointHit.Z);;
            unit.Selected = false;
            unit.Type     = UnitsEditor.UnitType;
            unit.Behavior = BehaviortreesEditor.Current?.Model;

            World.Model.PendingActions.Add((world) => {
                world.Units.Add(unit);
            });

            return(HitTestResultBehavior.Stop);
        }
Пример #27
0
        public HitTestResultBehavior HTResult(System.Windows.Media.HitTestResult rawresult)
        {
            //MessageBox.Show(rawresult.ToString());
            RayHitTestResult rayResult = rawresult as RayHitTestResult;

            if (rayResult != null)
            {
                RayMeshGeometry3DHitTestResult rayMeshResult = rayResult as RayMeshGeometry3DHitTestResult;

                if (rayMeshResult != null)
                {
                    GeometryModel3D hitgeo = rayMeshResult.ModelHit as GeometryModel3D;
                    var             id     = (Guid)hitgeo.GetValue(File3dmProperties.IdKey.DependencyProperty);

                    lB_PickedObjectProps.ItemsSource = _file.Objects.FindId(id).GetObjectProperties();

                    //UpdateResultInfo(rayMeshResult);
                    //UpdateMaterial(hitgeo, (side1GeometryModel3D.Material as MaterialGroup));
                }
            }

            return(HitTestResultBehavior.Continue);
        }
Пример #28
0
        /// <summary>
        /// 获取鼠标在场景中的3D坐标
        /// </summary>
        public HitTestResultBehavior HTResult(System.Windows.Media.HitTestResult rawresult)
        {
            RayHitTestResult rayResult = rawresult as RayHitTestResult;

            if (rayResult != null)
            {
                RayMeshGeometry3DHitTestResult rayMeshResult = rayResult as RayMeshGeometry3DHitTestResult;
                if (rayMeshResult != null)
                {
                    GeometryModel3D hitgeo   = rayMeshResult.ModelHit as GeometryModel3D;
                    MeshGeometry3D  hitmesh  = hitgeo.Geometry as MeshGeometry3D;
                    Point3D         p1       = hitmesh.Positions.ElementAt(rayMeshResult.VertexIndex1);
                    double          weight1  = rayMeshResult.VertexWeight1;
                    Point3D         p2       = hitmesh.Positions.ElementAt(rayMeshResult.VertexIndex2);
                    double          weight2  = rayMeshResult.VertexWeight2;
                    Point3D         p3       = hitmesh.Positions.ElementAt(rayMeshResult.VertexIndex3);
                    double          weight3  = rayMeshResult.VertexWeight3;
                    Point3D         prePoint = new Point3D(p1.X * weight1 + p2.X * weight2 + p3.X * weight3, p1.Y * weight1 + p2.Y * weight2 + p3.Y * weight3, p1.Z * weight1 + p2.Z * weight2 + p3.Z * weight3);
                    pMouse = new Point(prePoint.X, prePoint.Y);
                }
            }
            return(HitTestResultBehavior.Continue);
        }
Пример #29
0
        private HitTestResultBehavior HTResult(System.Windows.Media.HitTestResult rawresult)
        {
            RayHitTestResult rayResult = rawresult as RayHitTestResult;

            if (rayResult != null)
            {
                foreach (SubstationEntity s in substationEntities)
                {
                    if (s.Obj == rayResult.ModelHit)
                    {
                        MessageBox.Show("SubstationEntity\n\nId: " + s.Id + "\nName: " + s.Name, "System Element Info", MessageBoxButton.OK, MessageBoxImage.Information);
                        mouseDown = false;
                    }
                }

                foreach (NodeEntity s in nodeEntities)
                {
                    if (s.Obj == rayResult.ModelHit)
                    {
                        MessageBox.Show("NodeEntity\n\nId: " + s.Id + "\nName: " + s.Name, "System Element Info", MessageBoxButton.OK, MessageBoxImage.Information);
                        mouseDown = false;
                    }
                }

                foreach (SwitchEntity s in switchEntities)
                {
                    if (s.Obj == rayResult.ModelHit)
                    {
                        MessageBox.Show("SwitchEntity\n\nId: " + s.Id + "\nName: " + s.Name, "System Element Info", MessageBoxButton.OK, MessageBoxImage.Information);
                        mouseDown = false;
                    }
                }
            }


            return(HitTestResultBehavior.Stop);
        }
Пример #30
0
        private HitTestResultBehavior HitResult(System.Windows.Media.HitTestResult rawresult)
        {
            RayHitTestResult rayResult = rawresult as RayHitTestResult;

            if (rayResult != null)
            {
                DiffuseMaterial darkSide = new DiffuseMaterial(new SolidColorBrush(System.Windows.Media.Colors.Red));
                bool            gasit    = false;
                int             cnt      = 0;
                for (int i = 0; i < models.Count; i++)
                {
                    if (models[i] == rayResult.ModelHit)
                    {
                        hitgeo = (GeometryModel3D)rayResult.ModelHit;
                        gasit  = true;
                        if (MapHandler.Entities[i].GetType() != typeof(LineEntity))
                        {
                            MessageBox.Show(MapHandler.Entities[i].ToString());
                        }
                        else
                        {
                            Brush b = null;
                            foreach (var item in MapHandler.Entities)
                            {
                                if (item.Value.Id == ((LineEntity)MapHandler.Entities[i]).FirstEnd || item.Value.Id == ((LineEntity)MapHandler.Entities[i]).SecondEnd)
                                {
                                    if (cnt > 2)
                                    {
                                        break;
                                    }
                                    if (((DiffuseMaterial)((GeometryModel3D)TransformationHandler.models[item.Key]).Material).Brush == Brushes.ForestGreen)
                                    {
                                        cnt++;
                                        b = Brushes.ForestGreen;
                                        foreach (var child in window.MyModel.Children)
                                        {
                                            if (child == ScreenHandler.drawModels[item.Key])
                                            {
                                                ((GeometryModel3D)((ModelVisual3D)child).Content).Material = new DiffuseMaterial(Brushes.Pink);
                                            }
                                        }
                                    }
                                    else if (((DiffuseMaterial)((GeometryModel3D)TransformationHandler.models[item.Key]).Material).Brush == Brushes.Pink)
                                    {
                                        cnt++;
                                        b = Brushes.Pink;
                                        foreach (var child in window.MyModel.Children)
                                        {
                                            if (child == ScreenHandler.drawModels[item.Key])
                                            {
                                                ((GeometryModel3D)((ModelVisual3D)child).Content).Material = new DiffuseMaterial(Brushes.ForestGreen);
                                            }
                                        }
                                    }
                                    else if (((DiffuseMaterial)((GeometryModel3D)TransformationHandler.models[item.Key]).Material).Brush == Brushes.Red)
                                    {
                                        cnt++;
                                        b = Brushes.Red;
                                        foreach (var child in window.MyModel.Children)
                                        {
                                            if (child == ScreenHandler.drawModels[item.Key])
                                            {
                                                ((GeometryModel3D)((ModelVisual3D)child).Content).Material = new DiffuseMaterial(Brushes.Yellow);
                                            }
                                        }
                                    }
                                    else if (((DiffuseMaterial)((GeometryModel3D)TransformationHandler.models[item.Key]).Material).Brush == Brushes.Yellow)
                                    {
                                        cnt++;
                                        foreach (var child in window.MyModel.Children)
                                        {
                                            if (child == ScreenHandler.drawModels[item.Key])
                                            {
                                                ((GeometryModel3D)((ModelVisual3D)child).Content).Material = new DiffuseMaterial(Brushes.Red);
                                            }
                                        }
                                    }
                                    else if (((DiffuseMaterial)((GeometryModel3D)TransformationHandler.models[item.Key]).Material).Brush == Brushes.Blue)
                                    {
                                        cnt++;
                                        b = Brushes.Blue;
                                        foreach (var child in window.MyModel.Children)
                                        {
                                            if (child == ScreenHandler.drawModels[item.Key])
                                            {
                                                ((GeometryModel3D)((ModelVisual3D)child).Content).Material = new DiffuseMaterial(Brushes.Orange);
                                            }
                                        }
                                    }
                                    else if (((DiffuseMaterial)((GeometryModel3D)TransformationHandler.models[item.Key]).Material).Brush == Brushes.Orange)
                                    {
                                        cnt++;
                                        b = Brushes.Orange;
                                        foreach (var child in window.MyModel.Children)
                                        {
                                            if (child == ScreenHandler.drawModels[item.Key])
                                            {
                                                ((GeometryModel3D)((ModelVisual3D)child).Content).Material = new DiffuseMaterial(Brushes.Blue);
                                            }
                                        }
                                    }
                                }
                            }
                            break;
                        }
                    }
                    if (cnt > 2)
                    {
                        break;
                    }
                }
                if (!gasit)
                {
                    hitgeo = null;
                }
            }
            return(HitTestResultBehavior.Stop);
        }
Пример #31
0
        private HitTestResultBehavior DirectHitTestCallback(HitTestResult result)
        {
            if (null != result && (null != result.VisualHit))
            {
                hitResultsList.Add(result.VisualHit);
                return HitTestResultBehavior.Stop;
            }

            return HitTestResultBehavior.Continue;
        }
Пример #32
0
        private HitTestResultBehavior VisualCallback(HitTestResult result)
        {
            if (result == null || result.VisualHit == null)
                throw new ArgumentNullException();

            if (result.VisualHit.GetType() == typeof(Grid))
                hitResultsList.Add(result.VisualHit);

            return HitTestResultBehavior.Continue;
        }
Пример #33
0
 /// <summary>
 /// Callback
 /// </summary>
 /// <param name="result"></param>
 /// <returns></returns>
 public HitTestResultBehavior Callback(HitTestResult result)
 {
     MoveObject = result.VisualHit;
     return HitTestResultBehavior.Stop;
 }
Пример #34
0
        // Return the result of the hit test to the callback.
        public HitTestResultBehavior MyHitTestResult(HitTestResult result) {
            // Add the hit test result to the list that will be processed after the enumeration.
            var hit = result.VisualHit as FrameworkElement;
            if (hit == null) return HitTestResultBehavior.Continue;
            var fe = hit;
            if (!(fe.DataContext is FloatingElement) || fe.DataContext == _fe)
                return HitTestResultBehavior.Continue;
            var f = (FloatingElement) fe.DataContext;
            if (f.AllowDrop && f.AllowedDropsTags.Contains(_fe.DropTag)) {
                hitResultsList.Add(f);
            }

            // Set the behavior to return visuals at all z-order levels.
            return HitTestResultBehavior.Continue;
        }
Пример #35
0
        private HitTestResultBehavior HTResult(System.Windows.Media.HitTestResult rawresult)
        {
            RayHitTestResult rayResult = rawresult as RayHitTestResult;
            ToolTip          toolTip   = new ToolTip();
            LineEntity       line      = new LineEntity();

            if (rayResult != null)
            {
                bool gasit = false;
                foreach (var model in models)
                {
                    if (model == rayResult.ModelHit)
                    {
                        hitgeo  = (GeometryModel3D)rayResult.ModelHit;
                        gasit   = true;
                        toolTip = GetIsToolTip(model);
                        MessageBox.Show(toolTip.Content.ToString());

                        line = GetIsLine(model);
                        if (line != null)
                        {
                            NodeEntity node1;
                            NodeEntity node2;
                            for (int i = 0; i < DataContainers.Containers.GetNodes.Count; i++)
                            {
                                if (DataContainers.Containers.GetNodes.ElementAt(i).Id == line.FirstEnd)
                                {
                                    node1 = DataContainers.Containers.GetNodes.ElementAt(i);
                                }
                                if (DataContainers.Containers.GetNodes.ElementAt(i).Id == line.SecondEnd)
                                {
                                    node2 = DataContainers.Containers.GetNodes.ElementAt(i);
                                }
                            }
                            SwitchEntity switch1;
                            SwitchEntity switch2;
                            for (int i = 0; i < DataContainers.Containers.GetSwitches.Count; i++)
                            {
                                if (DataContainers.Containers.GetSwitches.ElementAt(i).Id == line.FirstEnd)
                                {
                                    switch1 = DataContainers.Containers.GetSwitches.ElementAt(i);
                                }
                                if (DataContainers.Containers.GetSwitches.ElementAt(i).Id == line.SecondEnd)
                                {
                                    switch2 = DataContainers.Containers.GetSwitches.ElementAt(i);
                                }
                            }
                            SubstationEntity substation1;
                            SubstationEntity substation2;
                            for (int i = 0; i < DataContainers.Containers.GetSubstations.Count; i++)
                            {
                                if (DataContainers.Containers.GetSubstations.ElementAt(i).Id == line.FirstEnd)
                                {
                                    substation1 = DataContainers.Containers.GetSubstations.ElementAt(i);
                                }
                                if (DataContainers.Containers.GetSubstations.ElementAt(i).Id == line.SecondEnd)
                                {
                                    substation2 = DataContainers.Containers.GetSubstations.ElementAt(i);
                                }
                            }

                            // pronadjeni su povezani tipovi
                        }
                    }
                }
                if (!gasit)
                {
                    hitgeo = null;
                }
            }

            return(HitTestResultBehavior.Stop);
        }
Пример #36
0
        /// <summary>
        /// 点击模型事件
        /// </summary>
        /// <param name="rawresult"></param>
        /// <returns></returns>
        public HitTestResultBehavior HTResult(System.Windows.Media.HitTestResult rawresult)
        {
            RayHitTestResult rayResult = rawresult as RayHitTestResult;

            if (rayResult != null)
            {
                RayMeshGeometry3DHitTestResult rayMeshResult = rayResult as RayMeshGeometry3DHitTestResult;
                if (rayMeshResult != null)
                {
                    GeometryModel3D hitgeo  = rayMeshResult.ModelHit as GeometryModel3D;
                    MeshGeometry3D  hitmesh = hitgeo.Geometry as MeshGeometry3D;
                    //获取当前点击的点
                    Point3D po3D = rayMeshResult.PointHit;

                    Point3D pa3D = hitmesh.Positions[rayMeshResult.VertexIndex1];
                    Point3D pb3D = hitmesh.Positions[rayMeshResult.VertexIndex2];
                    Point3D pc3D = hitmesh.Positions[rayMeshResult.VertexIndex3];


                    //Point3D pTmp = Control.PositionCalculation.pointTransDoorCoordinate(po3D); //将View3D转成物体坐标系
                    Point3D pTmp = po3D; //将View3D转成物体坐标系

                    //在控件上显示坐标
                    //this.Title = " x=" + pTmp.X.ToString() + " y=" + pTmp.Y.ToString() + " z= " + pTmp.Z.ToString();
                    //PointInfoDisplayShow();
                    //labelPointInfoDisplay.Content = "Position:\r\n x=" + ((decimal)pTmp.X).ToString("F8") + "\r\n y=" + ((decimal)pTmp.Y).ToString("F8") + "\r\n z= " + ((decimal)pTmp.Z).ToString("F8");
                    //labelPointInfoDisplay.Content += "\r\n\r\nCamera:";
                    //labelPointInfoDisplay.Content += ("\r\n LookDirection=" + camera.LookDirection.ToString());
                    //labelPointInfoDisplay.Content += ("\r\n FarPlaneDistance=" + camera.FarPlaneDistance.ToString());
                    //labelPointInfoDisplay.Content += ("\r\n UpDirection=" + camera.UpDirection.ToString());
                    //labelPointInfoDisplay.Content += ("\r\n NearPlaneDistance=" + camera.NearPlaneDistance.ToString());
                    //labelPointInfoDisplay.Content += ("\r\n Position=" + camera.Position.ToString());
                    //labelPointInfoDisplay.Content += ("\r\n FieldOfView=" + camera.FieldOfView.ToString());
                    ////labelPointInfoDisplay.Content += "\r\n\r\nTrackballDecorator:";
                    ////labelPointInfoDisplay.Content += ("\r\n ActualHeight=" + toolsTrackballDecorator.ActualHeight.ToString());
                    ////labelPointInfoDisplay.Content += ("\r\n ActualWidth=" + toolsTrackballDecorator.ActualWidth.ToString());
                    ////labelPointInfoDisplay.Content += ("\r\n FlowDirection=" + toolsTrackballDecorator.FlowDirection.ToString());
                    ////labelPointInfoDisplay.Content += ("\r\n LayoutTransform.value=" + toolsTrackballDecorator.LayoutTransform.Value.ToString());
                    ////labelPointInfoDisplay.Content += ("\r\n Width=" + toolsTrackballDecorator.Width.ToString());
                    //labelPointInfoDisplay.Content += "\r\n\r\nClick Face Vertex A:";
                    //labelPointInfoDisplay.Content += ("\r\n A.x=" + pa3D.X.ToString() + "\r\n A.y=" + pa3D.Y.ToString() + "\r\n A.z= " + pa3D.Z.ToString());
                    //labelPointInfoDisplay.Content += "\r\n\r\nClick Face Vertex B:";
                    //labelPointInfoDisplay.Content += ("\r\n B.x=" + pb3D.X.ToString() + "\r\n B.y=" + pb3D.Y.ToString() + "\r\n B.z= " + pb3D.Z.ToString());
                    //labelPointInfoDisplay.Content += "\r\n\r\nClick Face Vertex C:";
                    //labelPointInfoDisplay.Content += ("\r\n C.x=" + pc3D.X.ToString() + "\r\n C.y=" + pc3D.Y.ToString() + "\r\n C.z= " + pc3D.Z.ToString());



                    //if (bPointPaintKey)
                    //    ShowClickPoint(pTmp, pa3D, pb3D, pc3D, TrajGlobalParam.dHigh);
                    ////ShowClickPoint(pTmp);

                    //labelPointInfoDisplay.Content += "\r\n\r\nPointXYZR:";
                    //labelPointInfoDisplay.Content += ("\r\n PointXYZR.x=" + pStart.pX.ToString() + "\r\n PointXYZR.y=" + pStart.pY.ToString() + "\r\n PointXYZR.z= " + pStart.pZ.ToString() + "\r\n PointXYZR.Rx=" + pStart.pRx.ToString() + "\r\n PointXYZR.Ry=" + pStart.pRy.ToString() + "\r\n PointXYZR.Rz= " + pStart.pRz.ToString());
                }
                var visual3D = rawresult.VisualHit; //使用visual3D作为命中的模型
                if (visual3D != null)               //如果不为空,即确实命中了某一个模型
                {
                    //开启点选,选择当前点击的三角序号
                    //if (TrajGlobalParam.SelectClickPaint3D)
                    //{
                    //    for (int i = 0; i < 1500; i++)
                    //    {
                    //        if (MVpaint3Ds[i] == visual3D)
                    //        {
                    //            if (TrajGlobalParam.SelectClickCtrlDown)
                    //            {
                    //                //添加当前点选的序号到列表中
                    //                TrajGlobalParam.SelectedIndexList.Add(i);
                    //                ShowPointsSelectted(TrajGlobalParam.SelectedIndexList);

                    //                ListView.SelectedItems.Clear();
                    //                List<int> listPcTmp = new List<int>(TrajGlobalParam.SelectedIndexList);
                    //                for (int j = 0; j < listPcTmp.Count; j++)
                    //                {
                    //                    //listPcTmp[j] = listPcTmp[j];
                    //                    ListView.SelectedItems.Add(ListView.Items[listPcTmp[j]]);
                    //                }
                    //            }
                    //            else
                    //            {
                    //                ListView.SelectedIndex = i;
                    //            }
                    //            //messageShow(i.ToString());
                    //        }
                    //    }
                    //    //button_SelectDoorPic.Content = "点选";
                    //    //GlobalParam.SelectClickPaint3D = false;

                    //    //if (vp.FindName("BoxTita10_1") == visual3D) //用FindName方法进行检索。如果相等,执行一些事件
                    //    //{
                    //    //    MessageBox.Show("BoxTita10_1");
                    //    //}

                    //    /*
                    //     * 可以根据自行添加
                    //     */
                    //}
                    return(HitTestResultBehavior.Stop);
                }
            }
            return(HitTestResultBehavior.Continue);
        }
Пример #37
0
        HitTestResultBehavior CollectAllVisuals_Callback(HitTestResult result)
        {
            if (result == null || result.VisualHit == null)
                return HitTestResultBehavior.Stop;

            hitTestList.Add(result.VisualHit);
            return HitTestResultBehavior.Continue;
        }
Пример #38
0
 HitTestResultBehavior HitTestResultCallback(HitTestResult res)
 {
     return HitTestResultBehavior.Continue;
 }
Пример #39
0
 /// <summary>
 /// Callback for hit test results.
 /// </summary>
 /// <param name="result"></param>
 /// <returns></returns>
 private HitTestResultBehavior ResultCallback(HitTestResult result)
 {
     if (result != null)
     {
         visualHit = result.VisualHit;
     }
     return HitTestResultBehavior.Stop;
 }
Пример #40
0
        private HitTestResultBehavior HitTestCallBack(HitTestResult result)
        {
            IntersectionDetail intersectionDetail =
             (result as GeometryHitTestResult).IntersectionDetail;

            Polygon resulting = result.VisualHit as Polygon;

            if (resulting != null && intersectionDetail == IntersectionDetail.Intersects)
            {
                hitlist.Add(resulting);
            }
            else if (resulting != null && intersectionDetail == IntersectionDetail.FullyContains)
            {
                hitlist.Add(resulting);
            }
            else if (resulting != null && intersectionDetail == IntersectionDetail.FullyInside)
            {
                hitlist.Add(resulting);
            }
            return HitTestResultBehavior.Continue;
        }
Пример #41
0
        // Return the result of the hit test to the callback.
        public HitTestResultBehavior MyHitTestResult(HitTestResult result)
        {
            // Add the hit test result to the list that will be processed after the enumeration.
            if (!hitResultsList.Contains(result.VisualHit))
            {
                hitResultsList.Add(result.VisualHit);
            }

            // Set the behavior to return visuals at all z-order levels.
            return HitTestResultBehavior.Continue;
        }
Пример #42
0
 private static HitTestResultBehavior _HitTestResult(HitTestResult result)
 {
     HitTestResults.Add(result);
     return HitTestResultBehavior.Continue;
 }
Пример #43
0
        /// <summary>
        /// Hit test Result
        /// </summary>
        /// <param name="rawresult">Result Parameter</param>
        /// <returns></returns>
        private HitTestResultBehavior HTResult(HitTestResult rawresult)
        {
            RayHitTestResult rayResult = rawresult as RayHitTestResult;

            if (rayResult != null)
            {
                RayMeshGeometry3DHitTestResult rayMeshResult = rayResult as RayMeshGeometry3DHitTestResult;

                if (rayMeshResult != null && rayMeshResult.VisualHit.GetType().Name == "ModelVisual3D")
                {
                    hitgeo = rayMeshResult.ModelHit as GeometryModel3D;

                    joint = Session.CurrentSession.CurrentProject.CurrentModel3D.Joints.FindJointByMatrix(hitgeo.Transform.Value);

                    if (joint != null)
                    {
                        targetModel = Session.CurrentSession.CurrentProject.CurrentModel3D.Content.Find(hitgeo);

                        BaseOffsetX = hitgeo.Transform.Value.OffsetX;
                        BaseOffsetY = hitgeo.Transform.Value.OffsetY;
                        BaseOffsetZ = hitgeo.Transform.Value.OffsetZ;
                    }
                    else
                        hitgeo = null;
                }
                else
                    hitgeo = null;
            }
            return HitTestResultBehavior.Stop;
        }
Пример #44
0
 private static HitTestResultBehavior _HitTestResultGeometry(HitTestResult result)
 {
     IntersectionDetail intersectionDetail = ((GeometryHitTestResult)result).IntersectionDetail;
     switch (intersectionDetail)
     {
         case IntersectionDetail.FullyContains:
             HitTestResults.Add(result);
             return HitTestResultBehavior.Continue;
         case IntersectionDetail.Intersects:
             HitTestResults.Add(result);
             return HitTestResultBehavior.Continue;
         case IntersectionDetail.FullyInside:
             HitTestResults.Add(result);
             return HitTestResultBehavior.Continue;
         default:
             return HitTestResultBehavior.Stop;
     }
 }
Пример #45
0
            internal HitTestResultBehavior HitTestResult(HitTestResult result)
            {
                _hitResult = result;

                return HitTestResultBehavior.Stop;
            }
Пример #46
0
        /// <summary>
        /// 点击命中测试事件
        /// </summary>
        /// <param name="rawresult"></param>
        /// <returns></returns>
        public HitTestResultBehavior HTResult(System.Windows.Media.HitTestResult rawresult)
        {
            RayHitTestResult rayResult = rawresult as RayHitTestResult;

            if (rayResult != null)
            {
                //rayResult.ModelHit
                RayMeshGeometry3DHitTestResult raymeshresult = rayResult as RayMeshGeometry3DHitTestResult;
                var     visual3D = rayResult.ModelHit; //使用visual3D作为命中的模型
                Point3D hitPoint = rayResult.PointHit;
                if (visual3D != null)                  //如果不为空,即确实命中了某一个模型
                {
                    //if (hitPoint != null &&
                    //    (Keyboard.IsKeyDown(Key.LeftCtrl) || Keyboard.IsKeyDown(Key.RightCtrl)))
                    //{
                    //    MoveControl(hitPoint);

                    //}
                    //else
                    //{
                    //if (viewport.FindName("Box009") == visual3D) //用FindName方法进行检索。如果相等,执行一些事件
                    //{
                    //    AxisRatationEvent(axisRotation, raymeshresult, new Vector3D(-1, 0, -1));//此处执行了一个小动画,可以根据需要进行修改。
                    //}
                    //else if (viewport.FindName("Box013") == visual3D)
                    //{
                    //    //MainWindow
                    //    ScaleEvent(scaleControl);
                    //}
                    //else if (viewport.FindName("Box014") == visual3D)
                    //{
                    //    AxisRatationEvent(axisRotation1, raymeshresult, new Vector3D(-1, 0, 0));
                    //}
                    //else if (viewport.FindName("Box015") == visual3D)
                    //{
                    //    AxisRatationEvent(axisRotation2, raymeshresult, new Vector3D(-1, 0, 1));
                    //}


                    //}
                    if (mode == ControlMode.Set && !string.IsNullOrEmpty(visual3D.GetName()))
                    {
                        InitSetShow(mouseP, visual3D.GetName());
                        GeometryModel3D v  = visual3D as GeometryModel3D;
                        string          xx = v.GetName();
                        if (v != null)
                        {
                            setModelColor(v, new SolidColorBrush(Colors.Red));
                        }
                    }
                    else
                    {
                        if (!string.IsNullOrEmpty(visual3D.GetName()) &&
                            (Keyboard.IsKeyDown(Key.LeftCtrl) || Keyboard.IsKeyDown(Key.RightCtrl)))
                        {
                            InitInfoShow(mouseP, visual3D.GetName());
                        }
                    }
                    return(HitTestResultBehavior.Stop);
                }
                else
                {
                    if (show != null)
                    {
                        show.Close();
                        show = null;
                    }
                    if (locset != null)
                    {
                        locset.Close();
                        locset = null;
                    }
                }
            }
            return(HitTestResultBehavior.Continue);
        }