public GeologyHatchLayersViewModel(Document doc)
        {
            acceptCommand = new RelayCommand(new Action <object>(Accept));

            string initialPath = defaultExcelPath == null?Path.GetDirectoryName(doc.Name) : defaultExcelPath;

            excelPathVM = new FileNameInputViewModel("Excel Files|*.xls;*.xlsx;", "Укажите путь к файлу Excel");

            сolumnNumberVM = new NumericUpDownViewModel(defaultColumnNumber, 1, 1, formatting: "f0");

            rowNumberVM = new NumericUpDownViewModel(defaultRowNumber, 1, 1, formatting: "f0");


            excelPathVM.FileNameChanged += OnFileNameChanged;
            //excelPathVM.FileNameChanged += SomethingDifferent;
            сolumnNumberVM.ValueChanged += SomethingDifferent;
            rowNumberVM.ValueChanged    += SomethingDifferent;


            excelPathVM.FileName = initialPath;

            if (defaultLayoutName != null)
            {
                DataTable item = Layouts.ToList().Find(dt => dt.TableName.Equals(defaultLayoutName));
                SelectedLayout = item;
            }
        }
示例#2
0
        public GeologyHatch3dViewModel(Document doc, PaletteSet ps)
        {
            this.doc = doc;
            this.ps  = ps;

            using (Transaction tr = doc.Database.TransactionManager.StartTransaction())
            {
                standardTxtStyle = Utils.GetStandardTextStyle(doc.Database, tr);
                tr.Commit();
            }

            //временная графика - http://adn-cis.org/forum/index.php?topic=4279.msg15946#msg15946, http://adn-cis.org/forum/index.php?topic=8909.0
            ps.StateChanged += PaletteSet_StateChanged;



            specifyAlignmentPolyCommand
                = new RelayCommand(new Action <object>(SpecifyAlignmentPoly));
            specifySoilHatchCommand
                = new RelayCommand(new Action <object>(SpecifySoilHatch));
            specifyElevBasePointCommand
                = new RelayCommand(new Action <object>(SpecifyElevBasePoint));
            create3dProfileCommand
                = new RelayCommand(new Action <object>(Create3dProfile));


            horScalingVM    = new NumericUpDownViewModel(1, 0.1, 0);
            vertScalingVM   = new NumericUpDownViewModel(1, 0.1, 0);
            baseElevationVM = new NumericUpDownViewModel(0, 0.1, formatting: "f3");
            baseElevationVM.ValueChanged += BaseElevationChanged;
        }
        public GeologyTrueScalingProfileViewModel(Document doc, PaletteSet ps)
        {
            this.doc = doc;
            this.ps  = ps;

            specifyGroundSurfPolyCommand
                = new RelayCommand(new Action <object>(SpecifyGroundSurfPoly));
            specifySoilHatchCommand
                = new RelayCommand(new Action <object>(SpecifySoilHatch));
            createProfileCommand
                = new RelayCommand(new Action <object>(CreateProfile));

            startHorScalingVM      = new NumericUpDownViewModel(2, 0.1, 0);
            startVertScalingVM     = new NumericUpDownViewModel(0.2, 0.1, 0);
            startVertSoilScalingVM = new NumericUpDownViewModel(0.1, 0.1, 0);

            endHorScalingVM  = new NumericUpDownViewModel(1, 0.1, 0);
            endVertScalingVM = new NumericUpDownViewModel(1, 0.1, 0);
        }
示例#4
0
        public ConfigureNetworkCreationViewModel(Document doc, CivilDocument cdoc, Window thisWindow)
        {
            this.doc        = doc;
            this.cdoc       = cdoc;
            this.thisWindow = thisWindow;

            //команды
            addBlockStructureMappingPairCommand
                = new RelayCommand(new Action <object>(AddBlockStructureMappingPair));
            selectSurfaceCommand = new RelayCommand(new Action <object>(SelectSurface));
            acceptConfigsCommand = new RelayCommand(new Action <object>(AcceptConfigs));

            openReferenceDocCommand  = new RelayCommand(new Action <object>(OpenReferenceDoc));
            openExcelSampleCommand   = new RelayCommand(new Action <object>(OpenExcelSample));
            createPipeNenworkCommand = new RelayCommand(new Action <object>(CreatePipeNenwork));

            //Выбор слоев
            ObservableCollection <SelectLayerUserControl.Model> layers = SelectLayerUserControl.ViewModel.GetLayers(doc);

            GridLayerVM            = new SelectLayerUserControl.ViewModel(doc, thisWindow, layers, defaultGridLayer);
            StructuresLayerVM      = new SelectLayerUserControl.ViewModel(doc, thisWindow, layers, defaultStructuresLayer);
            StructureLabelsLayerVM = new SelectLayerUserControl.ViewModel(doc, thisWindow, layers, defaultStructureLabelsLayer);

            SameDepth = defaultSameDepth;
            RimElevationCorrection = defaultRimElevationCorrection;

            //combo box populate
            //как правильно связать выбранный элемент в combo box и заданный PartsList для SelectPartSizeViewModel (можно через события)
            //нужно DependencyProperty в классе SelectPartSizeView?
            Database            db             = doc.Database;
            PartsListCollection partListColl   = cdoc.Styles.PartsListSet;
            PartsList           startSelection = null;

            using (Transaction tr = db.TransactionManager.StartTransaction())
            {
                foreach (ObjectId plId in partListColl)
                {
                    //defaultPartsList
                    PartsList pl = (PartsList)tr.GetObject(plId, OpenMode.ForRead);
                    PartsLists.Add(pl);
                    if (plId.Equals(defaultPartsList))
                    {
                        startSelection = pl;
                    }
                }
                tr.Commit();
            }
            if (startSelection != null)
            {
                SelectedPartsListItem = startSelection;
            }

            //datagrid populate
            blocks = SelectBlockUserControl.ViewModel.GetBlocks(doc);
            BlocksStructuresMappingColl = new ObservableCollection <BlockStructureMappingPairModel>();
            if (defaultBlockStructureTable != null)
            {
                //есть сохраненная таблица блоков
                using (Transaction tr = db.TransactionManager.StartTransaction())
                {
                    foreach (KeyValuePair <ObjectId, SelectedPartTypeId> kvp in defaultBlockStructureTable)
                    {
                        try
                        {
                            BlockTableRecord btr = tr.GetObject(kvp.Key, OpenMode.ForRead) as BlockTableRecord;
                            if (btr != null)
                            {
                                string   blockName = btr.Name;
                                ObjectId famId     = ObjectId.Null;
                                ObjectId sizeId    = ObjectId.Null;
                                if (kvp.Value != null)
                                {
                                    famId  = kvp.Value.PartFamId;
                                    sizeId = kvp.Value.PartSizeId;
                                }

                                BlockStructureMappingPairModel item
                                    = new BlockStructureMappingPairModel(doc, thisWindow, blocks, SelectedPartsList, famId, sizeId, blockName);
                                HandleDataGridItemInput(item);
                                BlocksStructuresMappingColl.Add(item);
                            }
                        }
                        catch (Exception)
                        {
                            BlocksStructuresMappingColl.Clear();
                            defaultBlockStructureTable = null;//удалить сохраненную таблицу блоков. Пусть создается 1 дефолтная строчка
                            break;
                        }
                    }

                    tr.Commit();
                }
            }



            if (defaultBlockStructureTable == null)
            {
                //нет сохраненной таблицы блоков
                BlockStructureMappingPairModel defItem = new BlockStructureMappingPairModel(doc, thisWindow, blocks, SelectedPartsList, ObjectId.Null, ObjectId.Null)
                {
                    BlockVM = new SelectBlockUserControl.ViewModel(doc, thisWindow, blocks, DEFAULT_STRUCTURE_BLOCK)
                };
                HandleDataGridItemInput(defItem);//для каждой строки в datagrid должен добавляться обработчик событий
                BlocksStructuresMappingColl.Add(defItem);
            }


            ObjectId startPipeFam  = ObjectId.Null;
            ObjectId startPipeSize = ObjectId.Null;

            if (defaultPipeType != null)
            {
                startPipeFam  = defaultPipeType.PartFamId;
                startPipeSize = defaultPipeType.PartSizeId;
            }

            pipeVM = new SelectPartSizeViewModel(doc, SelectedPartsList, PartType.Pipe
                                                 //| PartType.Wire | PartType.Channel | PartType.Conduit | PartType.UndefinedPartType
                                                 , startPipeFam, startPipeSize);


            communicationDepthVM = new NumericUpDownViewModel(defaultCommunicationDepth, 0.5, 0, 100);

            wellDepthVM = new NumericUpDownViewModel(defaultWellDepth, 0.5, 0, 100);

            string initialPath = defaultExcelPath == null?Path.GetDirectoryName(doc.Name) : defaultExcelPath;

            excelPathVM = new FileNameInputViewModel("Excel Files|*.xls;*.xlsx;", "Укажите путь к файлу Excel")
            {
                FileName = initialPath
            };

            communicationLayerVM = new SelectLayerUserControl
                                   .ViewModel(doc, thisWindow, layers, defaultCommunicationLayer);


            if (defaultTinSurface != null)
            {
                using (Transaction tr = db.TransactionManager.StartTransaction())
                {
                    try
                    {
                        TinSurface tinSurface = tr.GetObject(defaultTinSurface.Value, OpenMode.ForRead) as TinSurface;
                        if (tinSurface != null)
                        {
                            SelectedTinSurface = tinSurface;
                        }
                    }
                    catch { }

                    tr.Commit();
                }
            }

            //Подпись на события, которые оповещают о том, что пользовательские настройки изменились
            //(можно было использовать стандартное событие INotifyPropertyChanged вместо специально созданного SelectionChanged)
            BlocksStructuresMappingColl.CollectionChanged += EnableCreateNetworkBtn;
            BlocksStructuresMappingColl.CollectionChanged += EnableAcceptBtn;
            GridLayerVM.SelectionChanged            += EnableCreateNetworkBtn;
            GridLayerVM.SelectionChanged            += EnableAcceptBtn;
            StructuresLayerVM.SelectionChanged      += EnableCreateNetworkBtn;
            StructuresLayerVM.SelectionChanged      += EnableAcceptBtn;
            StructureLabelsLayerVM.SelectionChanged += EnableCreateNetworkBtn;
            StructureLabelsLayerVM.SelectionChanged += EnableAcceptBtn;
            PipeVM.SelectionChanged               += EnableCreateNetworkBtn;
            ExcelPathVM.FileNameChanged           += EnableCreateNetworkBtn;
            ExcelPathVM.FileNameChanged           += EnableAcceptBtn;
            CommunicationLayerVM.SelectionChanged += EnableCreateNetworkBtn;
            CommunicationLayerVM.SelectionChanged += EnableAcceptBtn;

            OnPropertyChanged(nameof(AcceptBtnIsEnabled));
            OnPropertyChanged(nameof(CreateNetworkBtnIsEnabled));

            //Сохранить введенные данные в окно при любом закрытии
            thisWindow.Closing += SaveInput;
        }