Esempio n. 1
0
        /// <summary>
        /// Расчет инсоляции в файле
        /// </summary>
        public void Calc()
        {
            var docIns = InsCompare.GetDocumentOrOpen(calcFile);
            var dbIns  = docIns.Database;

            // Очистка инс объектов
            InsCompare.GetInsObjects(calcFile, a =>
            {
                a.UpgradeOpen();
                a.Erase();
                Debug.WriteLine($"Erase - {a}");
            });

            using (docIns.LockDocument())
                using (var t = dbIns.TransactionManager.StartTransaction())
                {
                    //InsService
                    var insModel = InsModel.LoadIns(docIns);
                    insModel.Tree.IsVisualTreeOn   = true;
                    insModel.Tree.IsVisualIllumsOn = true;
                    insModel.Front.Groups?.ToList().ForEach(g => g.IsVisualFrontOn = true);
                    insModel.Place.Places?.ToList().ForEach(p => p.IsVisualPlaceOn = true);
                    insModel.Place.IsEnableCalc = true;

                    insModel.Update(docIns);

                    // Визуализация на чертеже всех расчетов
                    insModel.Tree.DrawVisuals();
                    insModel.Front.DrawVisuals();
                    insModel.Place.DrawVisuals();

                    t.Commit();
                }
        }
Esempio n. 2
0
        /// <summary>
        /// Включение отключение расчета для текущего документа
        /// </summary>
        /// <param name="onOff">Включение или выключение расчета</param>
        private static void ActivateIns(bool onOff)
        {
            Inspector.Clear();
            var doc = Application.DocumentManager.MdiActiveDocument;

            if (insViewModel == null)
            {
                return;
            }

            if (doc == null || doc.IsDisposed)
            {
                insViewModel.Model = null;
                return;
            }

            var insModel = GetInsModel(doc);

            // Включение расчета для текущего документа
            if (onOff)
            {
                if (insModel == null)
                {
                    // Новый расчет
                    // Загрузка сохраненного расчета в чертеже (если он есть)
                    insModel = InsModel.LoadIns(doc);
                    if (insModel == null)
                    {
                        // Создание нового расчета
                        insModel = new InsModel();
                    }
                    insModels.Add(doc, insModel);
                    // Инициализация расчета
                    //insModel.Initialize(doc);
                    //insModel.Map.UpdateVisual();// Т.к. расчет не обновляется, то визуализация домов на карте (без отдельной визуализации домов во фронтах.)

                    // Не обновлять расчет - пусть вручную обновляют
                    //try
                    //{
                    //    insModel.Update();
                    //}
                    //catch(UserBreakException)
                    //{
                    //}
                    // лог включения инсоляции для текущего чертежа
                    Logger.Log.Info($"Включение расчета инсоляции для чертежа - {doc.Name}");
                }
                //else
                //{
                //    insModel.Initialize(doc);
                //    insModel.UpdateVisual();
                //}
                insModel.IsEnabled = true;
                insModel.Update();
            }
            // Отключение расчета для текущего документа
            else
            {
                if (insModel != null)
                {
                    insModel.ClearVisual(); // Очистка визуализаций
                    insModel.IsEnabled = false;
                    // лог отключения инсоляции для текущего чертежа
                    Logger.Log.Info($"Отключение расчета инсоляции для чертежа - {doc.Name}");
                }
            }
            // Переключение на модель (или на null)
            insViewModel.Model = insModel;
            Inspector.Show();
        }