예제 #1
0
        public void lb1_napolnenie()//наполнение листбокса
        {
            try
            {
                log.Add("lb1_napolnenie старт");
                treespis        Treespis = lb2.SelectedItem as treespis;
                List <Models3d> modeli   = new List <Models3d>();
                log.Add("Преобразовали в класс");
                foreach (string elem in Directory.GetDirectories(dir3ds_user + "\\" + Treespis.name, "*", SearchOption.TopDirectoryOnly))
                {
                    try
                    {
                        string name = elem.Split('\\').Last();
                        log.Add("парсим элемент " + name);
                        var asdasd = Directory.GetFiles(elem, "*.3ds", SearchOption.TopDirectoryOnly);
                        if (!(asdasd.Length > 0))
                        {
                            return;
                        }
                        string path         = asdasd.First();
                        string jpg_path     = elem + "\\teh\\prev.jpg";
                        string jpg_ugo      = elem + "\\teh\\ugo.jpg";
                        string pathcategory = elem;
                        string confjson     = elem + "\\teh\\conf.json";



                        Models3dJSON zyx;


                        if (File.Exists(confjson))
                        {
                            using (StreamReader fstream = new StreamReader(confjson, System.Text.Encoding.Default))
                            {
                                zyx = JsonConvert.DeserializeObject <Models3dJSON>(fstream.ReadToEnd());
                            }
                        }
                        else
                        {
                            try
                            {
                                Model3D dmodel3ds = (new HelixToolkit.Wpf.ModelImporter()).Load(path);

                                zyx = new Models3dJSON()
                                {
                                    x = dmodel3ds.Bounds.SizeX.ToString("0"),
                                    z = dmodel3ds.Bounds.SizeY.ToString("0"),
                                    y = dmodel3ds.Bounds.SizeZ.ToString("0")
                                };
                            }
                            catch
                            {
                                zyx = new Models3dJSON()
                                {
                                    x = "100", y = "100", z = "100"
                                };
                            }



                            //генерируем JSON файл
                            string output = JsonConvert.SerializeObject(zyx);
                            using (FileStream fs = new FileStream(confjson, FileMode.OpenOrCreate))
                            {
                                // преобразуем строку в байты
                                byte[] array = System.Text.Encoding.Default.GetBytes(output);
                                // запись массива байтов в файл

                                fs.Write(array, 0, array.Length);
                            }
                        }



                        BitmapImage btmap;



                        if (!File.Exists(jpg_path))
                        {
                            jpg_path = "/TreeCadN;component/Foto/nofoto.jpg";

                            btmap = new BitmapImage(new Uri(jpg_path, UriKind.RelativeOrAbsolute));
                        }
                        else
                        {
                            btmap = new BitmapImage();
                            btmap.BeginInit();
                            btmap.UriSource   = new Uri(jpg_path);
                            btmap.CacheOption = BitmapCacheOption.OnLoad;
                            btmap.EndInit();
                        }



                        // img.Source = btmap;



                        modeli.Add(new Models3d
                        {
                            name         = name,
                            path         = path,
                            jpg_path     = jpg_path,
                            jpg_ugo      = jpg_ugo,
                            pathcategory = pathcategory,
                            x            = zyx.x,
                            y            = zyx.y,
                            z            = zyx.z,
                            bitmap_prev  = btmap
                        });
                    }
                    catch (Exception ex)
                    {
                        log.Add("фатал ошибка: " + ex.Message);
                    }
                }
                log.Add("Закончили цикл");

                //test
                lb1.ItemsSource = modeli;
                lb1.Items.Refresh();

                try
                {
                    object selitem = lb1.Items[lb1_selitem];


                    lb1.ScrollIntoView(selitem);
                    lb1.SelectedItem = (selitem);
                }
                catch
                {
                    lb1.ScrollIntoView(null);
                    lb1.SelectedItem = (null);
                }
            }
            catch (Exception ex)
            {
                log.Add("фатал ошибка: " + ex.Message);
            }
        }
        private void Button_Click_2(object sender, RoutedEventArgs e)
        {
            try
            {
                string nazv = tb4.Text;
                log.Add("название " + nazv);
                if (!(File.Exists(tb1.Text) && tb1.Text != ""))
                {
                    MessageBox.Show("Ошибка 3d файла не существует"); return;
                }
                if (!(File.Exists(tb2.Text) || tb2.Text == ""))
                {
                    MessageBox.Show("Ошибка Картинка не существует"); return;
                }
                if (!(File.Exists(tb3.Text) || tb3.Text == ""))
                {
                    MessageBox.Show("Ошибка Картинка УГО не существует"); return;
                }
                if (!(tx.Text != "" || ty.Text != "" || tz.Text != ""))
                {
                    MessageBox.Show("Габариты не могут быть пустыми"); return;
                }

                if (nazv.Equals(""))
                {
                    nazv = tb1.Text.Split('\\').Last().Split('.').First();
                }
                if (model == null)
                {
                    alt_nazv = nazv;
                }

                string pathcategory = Environment.CurrentDirectory + @"\3dsObject\User\" + category.name;
                string path_copy    = pathcategory + @"\" + alt_nazv;

                Directory.CreateDirectory(path_copy + @"\teh");
                log.Add("создаём директорию по пути1-" + path_copy);

                string path3ds    = path_copy + @"\" + tb1.Text.Split('\\').Last();
                string pathjpg    = path_copy + @"\teh\prev." + tb2.Text.Split('.').Last();
                string pathjpgugo = path_copy + @"\teh\ugo." + tb3.Text.Split('.').Last();
                string pathconf   = path_copy + @"\teh\conf.json";

                //копируем все файлы
                if (File.Exists(tb1.Text))
                {
                    if (!tb1.Text.Equals(path3ds))
                    {
                        File.Copy(tb1.Text, path3ds, true);
                        log.Add("скопировали какой то файл");
                    }
                }
                else
                {
                    path3ds = "";
                }
                if (File.Exists(tb2.Text))
                {
                    if (!tb2.Text.Equals(pathjpg))
                    {
                        File.Copy(tb2.Text, pathjpg, true);
                        log.Add("если сущ скопировали какой то файл");
                    }
                }
                else
                {
                    pathjpg = "";
                }
                if (File.Exists(tb3.Text))
                {
                    if (!tb3.Text.Equals(pathjpgugo))
                    {
                        log.Add("скопировали какой то файл2");
                        File.Copy(tb3.Text, pathjpgugo, true);
                    }
                }
                else
                {
                    pathjpgugo = "";
                }


                foreach (string elem in spisdop_fiel.Items)
                {
                    string namefile = elem.Split('\\').Last();
                    if (File.Exists(elem) && !elem.Equals(path_copy + @"\" + namefile))
                    {
                        File.Copy(elem, path_copy + @"\" + namefile, true);
                    }
                }



                //генерируем JSON файл
                Models3dJSON modeljson = new Models3dJSON(tx.Text, ty.Text, tz.Text);
                string       output    = JsonConvert.SerializeObject(modeljson);
                File.Delete(pathconf);
                using (FileStream fs = new FileStream(pathconf, FileMode.OpenOrCreate))
                {
                    // преобразуем строку в байты
                    byte[] array = System.Text.Encoding.Default.GetBytes(output);
                    // запись массива байтов в файл

                    fs.Write(array, 0, array.Length);
                }


                //удалим все реаннее сгенерированные файлы для обновления модели
                var asdsadd = Directory.EnumerateFiles(path_copy, "*.*", SearchOption.AllDirectories)
                              .Where(s => s.EndsWith(".DR3D") || s.EndsWith(".DRG1"));
                foreach (string elem in asdsadd)
                {
                    if (File.Exists(elem))
                    {
                        File.Delete(elem);
                    }
                }


                if (model != null && !path_copy.Equals(pathcategory + @"\" + nazv))
                {
                    //  MessageBox.Show(path_copy+"  "+ pathcategory + @"\" + nazv);
                    Directory.Move(path_copy, pathcategory + @"\" + nazv);
                }

                /*
                 *              if (model == null)
                 *              {
                 *
                 *                  BD.conn("INSERT INTO `import3ds` (`nazv`, `path3ds`, `pathjpg`, `pathjpgugo`, `x`, `y`, `z`, category) VALUES ('" +
                 *                  nazv + "','" +
                 *                  path3ds + "','" +
                 *                  pathjpg + "','" +
                 *                  pathjpgugo + "','" +
                 *                  tx.Text + "','" +
                 *                  ty.Text + "','" +
                 *                  tz.Text + "', '" +
                 *                  category.id + "')");
                 *
                 *                 // MessageBox.Show("Объект успешно добавлен");
                 *              }
                 *              else
                 *              {
                 *                  BD.conn("UPDATE `import3ds` SET `nazv`='" + nazv + "',  `path3ds`='" + path3ds + "', `pathjpg`='" + pathjpg + "', `pathjpgugo`='" + pathjpgugo + "', `x`='" + tx.Text + "', `y`='" + ty.Text + "', `z`='" + tz.Text + "'  WHERE id=" + model.id);
                 *                //  MessageBox.Show("Объект успешно изменён");
                 *
                 *              }
                 */



                ctx.lb1_napolnenie();

                Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message + " " + ex.TargetSite);
                MessageBox.Show(ex.Message + ", попробуйте указать другое имя модели");
            }
        }