예제 #1
0
        private void UpdateSelection(Point startPoint, Point endPoint)
        {
            Rect rubberBand = new Rect(startPoint, endPoint);

            foreach (ISelectable item in ItemsSource)
            {
                DependencyObject container = ItemContainerGenerator.ContainerFromItem(item);

                Rect itemRect   = VisualTreeHelper.GetDescendantBounds((Visual)container);
                Rect itemBounds = ((Visual)container).TransformToAncestor(_drawingCanvas).TransformBounds(itemRect);

                if (rubberBand.Contains(itemBounds))
                {
                    if (!item.IsSelected)
                    {
                        item.IsSelected = true;
                        SelectedModels.Add(item);
                    }
                }
                else
                {
                    if (!(Keyboard.IsKeyDown(Key.LeftCtrl) || Keyboard.IsKeyDown(Key.RightCtrl)))
                    {
                        SelectedModels.Remove(item);
                        item.IsSelected = false;
                    }
                }
            }
        }
예제 #2
0
        private void _drawingCanvas_MouseLeftMouseDown(object sender, MouseButtonEventArgs e)
        {
            OnMouseLeftButtonDown(e);

            Keyboard.Focus(_drawingCanvas);

            _originMouseStartPoint = _previousPosition = e.GetPosition(_drawingCanvas);
            //if we are source of event, we are rubberband selecting
            if (e.Source == _drawingCanvas)
            {
                if (!IsDrawing && !(Keyboard.IsKeyDown(Key.LeftCtrl) || Keyboard.IsKeyDown(Key.RightCtrl)))
                {
                    ClearSelections();
                }

                if (_propEditorViewModel.DrawingPanelViewModel.IsDrawing)
                {
                    AddLightCommand.Execute(_originMouseStartPoint);
                    //ClearSelections();
                }

                _isSelecting = false;
                e.Handled    = true;
            }
            else if (!IsDrawing && e.Source is Path)
            {
                var p = e.Source as Path;
                var l = p.DataContext as ISelectable;
                if (l != null)
                {
                    _isSelecting = true;


                    if (!(Keyboard.IsKeyDown(Key.LeftCtrl) || Keyboard.IsKeyDown(Key.RightCtrl)))
                    {
                        if (!l.IsSelected)
                        {
                            ClearSelections();
                            SelectedModels.Add(l);
                            l.IsSelected = true;
                        }
                    }
                    else
                    {
                        if (l.IsSelected)
                        {
                            l.IsSelected = false;
                            SelectedModels.Remove(l);
                        }
                        else
                        {
                            SelectedModels.Add(l);
                            l.IsSelected = true;
                        }
                    }
                }
                e.Handled = true;
            }
        }
 private void BtnAdd_Click(object sender, EventArgs e)
 {
     foreach (var item in lstApiServices.CheckedItems)
     {
         SelectedApiServices.Add(item as Utilities.ClassModel);
     }
     foreach (var item in lstServices.CheckedItems)
     {
         SelectedServices.Add(item as Utilities.ClassModel);
     }
     foreach (var item in lstModels.CheckedItems)
     {
         SelectedModels.Add(item as Utilities.ClassModel);
     }
     foreach (var item in lstDialogs.CheckedItems)
     {
         SelectedDialogs.Add(item as Utilities.ClassModel);
     }
 }
예제 #4
0
        public CodeModel SelectModels(CodeModelArgs args)
        {
            string GetCodeSp = "pk_atm_sp_code";

            try{
                SelectedModels = Ctx.Query <dynamic>(GetCodeSp,
                                                     new { P_GROUP_ID = args.Gropu_Id, P_WHERE = args.Where == "" ? null : args.Where },
                                                     commandType: CommandType.StoredProcedure)
                                 .Select(r =>
                                         new CodeModel {
                    CODE = r.CODE == null ?  r.코드 : r.CODE,
                    NAME = r.NAME == null ? r.이름 : r.NAME
                }
                                         ).ToList <CodeModel>();
            }
            catch (Exception ex) {
                SelectedModels.Add(new CodeModel {
                    Err = ex.Message
                });
            }
            return(SelectModel);
        }
        /// <summary>
        ///     OnElementMouseDown: Click Event for each geometric element
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        /// <param name="watch3DNode"></param>
        private void OnElementMouseDown(object sender, MouseButtonEventArgs e, Watch3DNode watch3DNode)
        {
            // 1-CLick event
            if (e.LeftButton != MouseButtonState.Pressed)
            {
                return;
            }

            // Get sender
            var element         = sender as ModelUIElement3D;
            var geometryModel3D = element?.Model as GeometryModel3D;

            if (geometryModel3D == null)
            {
                return;
            }

            // Check Type
            // If it is already selected ... Deselect
            if (SelectedModels.Contains(geometryModel3D))
            {
                // var geo = geometryModel3D.Clone();
                // geo.Material = geometryModel3D.BackMaterial;
                geometryModel3D.Material = geometryModel3D.BackMaterial;
                SelectedModels.Remove(geometryModel3D);
            }
            // If not ... Select!
            else
            {
                SelectedModels.Add(geometryModel3D);
                // var geo = geometryModel3D.Clone();
                // geo.Material = _selectionMaterial;
                geometryModel3D.Material = _selectionMaterial;
            }

            // Get the id of the selected model
            var reslist = new List <Guid>();

            if (SelectedModels != null && SelectedModels.Count > 0)
            {
                foreach (var item in _fallBackGeometry)
                {
                    foreach (var item_2 in SelectedModels)
                    {
                        if (Equals(item_2.Geometry, item.Model3D.Geometry))
                        {
                            reslist.Add(item.Id);
                        }
                    }
                }
            }

            string modelId   = null;
            string projectId = null;

            if (InputPorts[0].Data.GetType() == typeof(ModelInfo))
            {
                var input = InputPorts[0].Data as ModelInfo;
                if (input != null)
                {
                    modelId   = input.ModelId;
                    projectId = input.ProjectId;
                }
            }
            else if (InputPorts[0].Data.GetType() == typeof(BaseRelation))
            {
                var input = InputPorts[0].Data as BaseRelation;
                if (input != null)
                {
                    modelId   = input.ModelId.ToString();
                    projectId = input.ProjectId.ToString();
                }
            }
            else
            {
                return;
            }

            var res = new ModelInfo(projectId, modelId, reslist, ModelType.BimPlusModel);

            OutputPorts[0].Data = res;
            // Set selected models to Output ...

            e.Handled = true;
        }