Exemple #1
0
 private static void _mainPallet_StateChanged(object sender, PaletteSetStateEventArgs e)
 {
     if (e.NewState == StateEventIndex.Hide)
     {
         _mainPallet           = null;
         _algorythimRepository = null;
         _partRepository       = null;
     }
 }
Exemple #2
0
        public static void ShowPallet()
        {
            if (_mainPallet != null)
            {
                return;
            }
            _mainPallet = InitializeMainPallet();
            _mainPallet.StateChanged += _mainPallet_StateChanged;
            _algorythimRepository     = new AlgorythimRepository();
            _partRepository           = new PartRepository();

            var especificationsView = new Views.EspecificationsControl(_partRepository);
            var algorythimView      = new Views.AlgorythimControl(_partRepository, _algorythimRepository);
            var partsView           = new Views.PartsListControl(_partRepository);
            var helper = new BuildingProcessHelper();
            var prop   = new SlabProperties {
                Algorythim = algorythimView.ViewModel, Parts = especificationsView.ViewModel
            };

            especificationsView.ViewModel.WhenAnyValue(x => x.SelectedModulation).Subscribe(m => algorythimView.ViewModel.SelectedModulation = m);
            especificationsView.ViewModel.DrawSlab.Subscribe(async _ =>
            {
                try
                {
                    prop.MaxPoint   = helper.GetMaxPoint(especificationsView.ViewModel.SelectedOutline);
                    prop.StartPoint = helper.GetStartPoint(especificationsView.ViewModel.SelectedOutline, especificationsView.ViewModel.SpecifyStartPoint);

                    using (var builder = new SlabBuilder(_partRepository, prop))
                        await builder.Start();
                }
                catch (OperationCanceledException) { }
                catch (Autodesk.AutoCAD.Runtime.Exception e)
                {
                    MessageBox.Show($"{e.Message}\n\n{e.StackTrace}");
                }
            });

            especificationsView.ViewModel.SelectOutline.Subscribe(_ =>
            {
                try
                {
                    especificationsView.ViewModel.SelectedOutline = helper.SelectOutline();
                } catch (ArgumentException) { MessageBox.Show("Selecione um contorno válido. (Polilinha fechada)"); }
            });

            _mainPallet.Add("Especificações", GetElementHost(especificationsView));
            _mainPallet.Add("Algoritmo", GetElementHost(algorythimView));
            _mainPallet.Add("Peças", GetElementHost(partsView));
        }
Exemple #3
0
        public AlgorythimViewModel(IPartRepository partRepository, IAlgorythimRepository algorythimRepository)
        {
            _partRepository = partRepository;
            HasChanges      = false;

            Options     = algorythimRepository.Get();
            StartLpList = new ReactiveList <Part>();
            Reset       = ReactiveCommand.Create();
            Update      = this.WhenAny(x => x.HasChanges, c => c.Value).ToCommand();

            Options.Changed.Subscribe(x => HasChanges = true);
            this.WhenAnyValue(x => x.SelectedModulation).Subscribe(_ => ResetParts());
            _partRepository.PartsChanged.Subscribe(_ => ResetParts());
            Reset.Subscribe(_ => algorythimRepository.Reset());
            Update.Subscribe(_ =>
            {
                algorythimRepository.SaveChanges();
                HasChanges = false;
            });
        }
Exemple #4
0
 public AlgorythimControl(IPartRepository partRepository, IAlgorythimRepository algorythimRepository)
 {
     ViewModel   = new AlgorythimViewModel(partRepository, algorythimRepository);
     DataContext = ViewModel;
     InitializeComponent();
 }