private void LoadBase_Click(object sender, RoutedEventArgs e)
        {
            flag_base_model = true;
            double         H_floor = Convert.ToDouble(h_level_floor.Text);
            FloorplanModel m1      = new FloorplanModel();

            m1.Apartments = Model_Floor_1.Apartsments();
            m1.Points     = Model_Floor_1.Points();
            m1.Walls      = Model_Floor_1.Walls();
            double Door_w    = Convert.ToDouble(weightDoor.Text);
            double Window_w  = Convert.ToDouble(weightWindow.Text);
            double Door_h    = Convert.ToDouble(Door_he.Text);
            double Window_h  = Convert.ToDouble(h_Window.Text);
            double Window_l  = Convert.ToDouble(lev_Window.Text);
            double Location  = Convert.ToDouble(Location_O.Text);
            int    Col_Level = Convert.ToInt32(Col_level.Text);

            InfoSave = FileUtils.CreateData(
                m1,
                H_floor,
                Door_w,
                Window_w,
                Door_h,
                Window_h,
                Window_l,
                Location,
                Col_Level);
            RenderLines(m1);
            flagCount = true;
        }
        private void GenerOpening_Click(object sender, RoutedEventArgs e)
        {
            double H_floor   = Convert.ToDouble(h_level_floor.Text);
            double Door_w    = Convert.ToDouble(weightDoor.Text);
            double Window_w  = Convert.ToDouble(weightWindow.Text);
            double Door_h    = Convert.ToDouble(Door_he.Text);
            double Window_h  = Convert.ToDouble(h_Window.Text);
            double Window_l  = Convert.ToDouble(lev_Window.Text);
            double Location  = Convert.ToDouble(Location_O.Text);
            int    Col_Level = Convert.ToInt32(Col_level.Text);

            if (flag_base_model == true)
            {
                flag_doors_windows = true;
                FloorplanModel m1 = new FloorplanModel();
                m1.Apartments = Model_Floor_1.Apartsments();
                m1.Points     = Model_Floor_1.Points();
                m1.Walls      = Model_Floor_1.Walls();
                InfoSave      = FileUtils.CreateData(
                    m1,
                    H_floor,
                    Door_w,
                    Window_w,
                    Door_h,
                    Window_h,
                    Window_l,
                    Location,
                    Col_Level);
                RenderOpening(InfoSave);
            }
            else if (flag_custom_model == true && InputData != null)
            {
                InfoSave = FileUtils.CreateData(
                    InputData,
                    H_floor,
                    Door_w,
                    Window_w,
                    Door_h,
                    Window_h,
                    Window_l,
                    Location,
                    Col_Level);
                flag_doors_windows = true;
                RenderOpening(InfoSave);
                //CreateOpening(modelfloor);
            }
        }
        private async void Save_Click(object sender, RoutedEventArgs e)
        {
            SaveInfo InfoS = new SaveInfo();

            InfoS = InfoSave;

            progbar.Maximum = InfoS.MyMesh.Positions.Count + InfoS.MyMesh.TextureCoordinates.Count + InfoS.myWalls.Count;
            progbar.Value   = 0;

            Microsoft.Win32.SaveFileDialog dlg = new Microsoft.Win32.SaveFileDialog();
            dlg.FileName   = "FloorModel";
            dlg.DefaultExt = ".obj";
            dlg.Filter     = "3D model format (.obj)|*.obj";

            Nullable <bool> result = dlg.ShowDialog();

            if (result == true)
            {
                string filename = dlg.FileName;
                if (flag_base_model == true)
                {
                    FloorplanModel m1 = new FloorplanModel();
                    m1.Apartments = Model_Floor_1.Apartsments();
                    m1.Points     = Model_Floor_1.Points();
                    m1.Walls      = Model_Floor_1.Walls();

                    var progress = new Progress <double>(s => progbar.Value = s);

                    await FileUtils.CreateObj(filename, InfoS, progress);

                    //await Task.Factory.StartNew(
                    //                           () => FileUtils.CreateObj(filename, InfoS, progress),
                    //                           TaskCreationOptions.AttachedToParent);
                }
                else if (flag_custom_model == true)
                {
                    var progress = new Progress <double>(s => progbar.Value = s);

                    await Task.Factory.StartNew(
                        () => FileUtils.CreateObj(filename, InfoS, progress),
                        TaskCreationOptions.AttachedToParent);
                }
                MessageBox.Show(filename + "Модель успешно сохранена");
            }
        }