Beispiel #1
0
        /// <summary>
        /// Установка настроек
        /// </summary>
        public void SetOptions(InsOptions options, out bool needUpdate)
        {
            // Если изменился регион, то требуется обновление
            needUpdate = options?.Region?.Latitude != Options?.Region?.Latitude;
            // Если изменился проект - обновление объектов для связывания
            var needUpdateHousesDbSel = Options?.Project != options?.Project;

            Options    = options;
            HasProject = Options?.Project != null;

            if (needUpdateHousesDbSel)
            {
                UpdateHousesDbSel();
            }
        }
Beispiel #2
0
        /// <summary>
        /// Общие действия и при создании нового расчета и при загрузке существующего
        /// Обязательно запускать после создания расчета
        /// </summary>
        public void Initialize(Document doc)
        {
            Doc = doc;

            // Дефолтные настройки
            if (Options == null)
            {
                Options = InsOptions.Default();
            }
            // Сервис расчета
            DefineCalcService();

            // Загрузка карты
            if (Map == null)
            {
                Map = new Map(this);
                Map.BuildingAdded    += Map_BuildingAdded;
                Map.BuildingErased   += Map_BuildingErased;
                Map.BuildingModified += Map_BuildingModified;
                Map.InsPointAdded    += Map_InsPointAdded;
            }
            Map.Update();

            // Создание расчета елочек
            if (Tree == null)
            {
                Tree = new TreeModel();
            }
            Tree.Initialize(this);

            // Расчет фронтов
            if (Front == null)
            {
                Front = new FrontModel();
            }
            Front.Initialize(this);
            LoadPoints();

            // Расчет площадок
            if (Place == null)
            {
                Place = new PlaceModel();
            }
            Place.Initialize(this);

            doc.Database.BeginSave += Database_BeginSave;
        }
Beispiel #3
0
        /// <summary>
        /// Загрузка расчета из документа (если он был там сохранен)
        /// Без инициализации!!!
        /// </summary>
        /// <param name="doc">Документ</param>
        /// <returns>Расчет инсоляции или null</returns>
        public static InsModel LoadIns(Document doc)
        {
            InsModel model = null;

            // Загрузка словаря модели
            var dicModel = InsExtDataHelper.LoadFromNod(doc, "InsModel");

            if (dicModel == null)
            {
                return(model);
            }

            // список значений самой модели
            var recModel = dicModel.GetRec("InsModelRec");
            // Настройки
            var opt = new InsOptions();

            opt.SetExtDic(dicModel.GetInner("InsOptions"), doc);
            // Расчет елочек
            var tree = new TreeModel();

            tree.SetExtDic(dicModel.GetInner("TreeModel"), doc);
            // Расчет фронтов
            var front = new FrontModel();

            front.SetExtDic(dicModel.GetInner("FrontModel"), doc);
            // Расчет площадок
            var place = new PlaceModel();

            place.SetExtDic(dicModel.GetInner("PlaceModel"), doc);

            model     = new InsModel();
            model.Doc = doc;
            model.SetDataValues(recModel?.Values, doc);
            model.Tree  = tree;
            model.Front = front;
            model.Place = place;
            bool needUpdate; // Тут не нужно обновлять расчет

            model.SetOptions(opt, out needUpdate);
            //model.Initialize(doc);

            return(model);
        }