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 + ", попробуйте указать другое имя модели"); } }