private void InsertMove(RawEntity2D rawEntity2D)
        {
            /*
             * in pratica ora , creo il viewModel poi inserisco.
             *
             * sarebbe più chiaro avere il model , inserirlo li poi riaggirnare parteViewModel
             */
            RawItemViewModel precMove = null;

            var entityToInsert = GetViewModel(rawEntity2D);

            if (SelectedMoveViewModel == null)
            {
                precMove = MoveListViewModels.LastOrDefault();
                MoveListViewModels.Add(entityToInsert);
            }
            else
            {
                precMove = MoveListViewModels.ElementAtOrDefault(MoveListViewModels.IndexOf(SelectedMoveViewModel));
                MoveListViewModels.Insert(MoveListViewModels.IndexOf(SelectedMoveViewModel) + 1, entityToInsert);
            }

            InitEntity(rawEntity2D, precMove.RawEntity);

            SelectedMoveViewModel = entityToInsert;

            RequestUpdateSource();
        }
        private void AddEntity(string param)
        {
            int type;

            int.TryParse(param, out type);

            RawEntity2D newEntity = null;

            switch (type)
            {
            case 1:
            {
                newEntity = new RawLine2D(_rawProfile);
            }
            break;

            case 2:
            {
                newEntity = new RawArc2D(_rawProfile);
            } break;

            default:
                break;
            }

            // qui quando inserisco deve prendere coordinate oggetto precedente,
            // faccio u metodo semplice in questa classe...
            // nel profileSolver non mi serve sapere se quota è stata messa

            /* .
             * da mi serve solo nella view un aiuto visivo per calcolare quote
             */

            InsertMove(newEntity);
        }
        public RawItemViewModel GetViewModel(RawEntity2D entity2D)
        {
            // todo , creare rispettivi viewModel
            if (entity2D is RawInitPoint2D)
            {
                var vm = new RawInitPointViewModel(entity2D as RawInitPoint2D, CurrentAxisSystem, this);
                vm.OnSourceUpdated += VmOnSourceUpdated;
                return(vm);
            }

            if (entity2D is RawLine2D)
            {
                var vm = new RawLineViewModel(entity2D as RawLine2D, CurrentAxisSystem, this);
                vm.OnSourceUpdated += VmOnSourceUpdated;
                return(vm);
            }

            if (entity2D is RawArc2D)
            {
                var vm = new RawArcViewModel(entity2D as RawArc2D, CurrentAxisSystem, this);
                vm.OnSourceUpdated += VmOnSourceUpdated;
                return(vm);
            }

            throw new NotImplementedException("ProfileEditorViewModel.GetViewModel");
        }
        protected RawItemViewModel(RawEntity2D rawEntity2D, ProfileEditorViewModel.AxisSystem axisSystem, ProfileEditorViewModel parent)
        {
            RawEntity = rawEntity2D;

            switch (axisSystem)
            {
            case ProfileEditorViewModel.AxisSystem.Xy:
            {
                XLabel       = "X";
                YLabel       = "Y";
                DeltaXLabel  = "Incre. X";
                DeltaYLabel  = "Incre. Y";
                CenterXLabel = "Center X";
                CenterYLabel = "Center Y";
            } break;

            case ProfileEditorViewModel.AxisSystem.Xz:
            {
                XLabel       = "Z";
                YLabel       = "X";
                DeltaXLabel  = "Incre. Z";
                DeltaYLabel  = "Incre. X";
                CenterXLabel = "Center X";
                CenterYLabel = "Center C";
            } break;
            }
            this.Parent = parent;
        }
        private static void InitEntity(RawEntity2D rawEntity2D, RawEntity2D precMove)
        {
            if (rawEntity2D is RawLine2D && precMove is RawLine2D)
            {
                var line     = rawEntity2D as RawLine2D;
                var precLine = precMove as RawLine2D;

                // prima devo lanciare il ricalcolo profilo qui , in modo
                // che il calculated point sia giusto..
                // todo. devo sopratutto gestire angoli
                line.X.SetValue(false, precLine.X.Value);
                line.Y.SetValue(false, precLine.Y.Value);
            }
        }
Beispiel #6
0
 public RawEntityViewModel(RawEntity2D rawEntity)
 {
     Entity = rawEntity;
 }