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); } }
public RawEntityViewModel(RawEntity2D rawEntity) { Entity = rawEntity; }