Exemplo n.º 1
0
        private async void LoadFile(DxfDocument document)
        {
            // Map to LayerModel
            List <LayerViewModel> validLayers = document
                                                .CreateLayerModels()
                                                .Where(x => x.Polylines.Any())
                                                .Select(x => new LayerViewModel()
            {
                Name  = x.Name,
                Walls = new ObservableCollection <WallViewModel>(x.Polylines
                                                                 .Select(y => new WallViewModel()
                {
                    Height = App.WallHeight,
                    Points = y.Points
                }))
            })
                                                .ToList();

            // Bad scenario
            if (validLayers.Count < 1)
            {
                MessageDialog dialog = new MessageDialog(title: "Wrong file format...",
                                                         content: "There are no suitable layers in the loading file.\n" +
                                                         "See Help > Supported layers.");
                await dialog.ShowAsync();

                return;
            }

            // Good scenario
            List <LayerViewModel> selectedLayers;

            if (validLayers.Count < 2)
            {
                selectedLayers = new List <LayerViewModel> {
                    validLayers.First()
                };
            }
            else
            {
                // Ask user about layer
                var dialog = new ChooseLayerDialog(validLayers
                                                   .Select(ChooseLayerViewModel.Create));
                await dialog.ShowAsync();

                if (dialog.Result == ChooseLayerDialogResult.Canceled)
                {
                    return;
                }

                // Loading to scene
                selectedLayers = dialog.SelectedLayers;
            }

            List <WallViewModel> walls = selectedLayers
                                         .SelectMany(x => x.Walls)
                                         .ToList();

            ViewModel.Walls.Clear();
            ViewModel.Signalings.Clear();

            ViewModel.Walls.AddRange(walls);
            Sandbox.FocusCameraOn(ViewModel.Walls.Bounds());
        }