Просмотр полной версии : Перенос объектов из маршрута в маршрут (макрос)
Всем привет!
Может, я где-то изобретаю велосипед - но, строя маршруты в МСТС, всегда хотелось иметь достаточно легкий способ собрать объекты из нескольких маршрутов в свой.
Чтобы решить проблему, сделал макрос для Excel, который умеет читать ref-файлы из любого маршрута, создавая общий список объектов.
Этот список можно править руками, используя все средства Excel.
Наконец, главное - есть возможность сгенерировать по нему новый общий .ref,
а также скопировать все упомянутые объекты в другой маршрут,
в том числе с сезонными текстурами при их наличии.
https://i123.fastpic.org/thumb/2024/0720/21/b21a8c7c8acef230c092f19cbf1c9721.jpeg (https://fastpic.org/view/123/2024/0720/b21a8c7c8acef230c092f19cbf1c9721.png.html)
Скачать и попробовать можно тут:
https://disk.yandex.ru/i/CzC2v5LyjhIJHw
Да, на втором листе в этой книге уже сразу собрал объекты из десятка маршрутов, имеющихся в даунлоаде trainsim.ru, отсмотрел их, удалил непригодное для переиспользования в русских трассах, и классифицировал все объекты по единой системе - может, не идеальной, но хотя бы общей для всех (что, кстати, оказалось значительно дольше, чем собственно запрограммировать кнопки на листе).
Have fun) :russian:
По быстродействию особо не оптимизировал, но вряд ли массовое копирование объектов будет нужно вам каждый день.
Системные требования: русскоязычный Excel 2007 и новее, МСТС.
Спасибо! А создавать ref заново, если в папке с маршрутом он удалён, сможет сделать?
В смысле, по файлам, которые нашлись в папке shapes? Пока нет, но не очень сложно будет добавить такое. Как-нибудь обновлю.
Часть информации (форма тени, группа и описание объекта, анимация как переезд) при этом, конечно, потеряется. Если этот шейп ранее был импортирован в табличку, можно будет восстановить описание по ней. А иначе "восстановленные" объекты будут уходить в группу "прочее".
А можно сделать функцию удаления неиспользованных шейпов?
В смысле, по файлам, которые нашлись в папке shapes? Да, я иногда находил нужные модели, но они не были прописаны в ref или же когда два человека одновременно делают маршрут, то ref у каждого свой получается.
Часть информации (форма тени, группа и описание объекта, анимация как переезд) при этом, конечно, потеряется. Если этот шейп ранее был импортирован в табличку, можно будет восстановить описание по ней. А иначе "восстановленные" объекты будут уходить в группу "прочее".
А напомни, где она хранится? Ее нельзя считывать откуда-то? Эксель правда может повеситься от этого...
Добавлено через 2 минуты
Я кстати всё хочу также на Экселе сделать редактор расписаний, но времени нет.
Добавлено через 3 минуты
А можно сделать функцию удаления неиспользованных шейпов?
Здесь на сайте в разделе разное есть прога древняя MSTSConv, которая чистит маршрут. Правда старожилы говорят, порой зачищает и нужное, хотя странно.
А напомни, где она хранится? Ее нельзя считывать откуда-то? Эксель правда может повеситься от этого...Это собственно то, что хранится как раз только в .ref.
Когда скачиваешь объект себе в маршрут, то в реф надо вручную добавить строки типа таких:
LevelCr ( <<< статический или анимированный
Class ( "<Level Crossings>" ) <<< имя категории (можно менять)
Shadow ( "Dynamic" ) <<< наличие тени (OR вроде игнорирует)
Filename ( DepotGatesGreen.s ) <<< имя шейпа
Description ( "Ворота депо зеленые" ) <<< описание для человека (можно менять)
)
Вот мой макрос импортирует всё это в таблицу и хранит у себя. Для него 8000 объектов из десятка маршрутов это немного))
https://i123.fastpic.org/thumb/2024/0720/af/7e7e072a115d91532d688e85776b42af.jpeg (https://fastpic.org/view/123/2024/0720/7e7e072a115d91532d688e85776b42af.png.html)
Если в маршруте есть просто .s, то по имени файла я не знаю в какую категорию его сунуть. Вместо комментария просто имя файла можно подставить.
Лишь если у меня в табличке взятого из других маршрутов найдется объект с тем же именем, тогда удастся восстановить описание.
Так-то это не беда, кататься по маршруту оно никак не помешает (только про анимацию ворот и шлагбаумов не вполне уверен). Но редактировать маршрут станет неудобно, если все в одну кучу свалится.
Добавлено через 23 минуты
А можно сделать функцию удаления неиспользованных шейпов? Теоретически можно написать и такое, раз уж разжимать и читать файлы я его научил.
Просто эта функция где-то уже была, я видел давно-давно помнится вот тут: https://www.digital-rails.com/route_riter.html .
Да, проверил, есть функция Compact Route, которая сжимает все файлы, которые можно сжать, и также выносит неиспользумое в отдельную папочку.
А если MSTSconv такое умеет из командной строки, могу сделать у себя кнопку, которая его запускает в заданный маршрут через командную строку.
Добавлено через 9 минут
О, кстати, в RouteRiter уже есть кнопочка "Make .REF" для генерации .ref, а также редактирование списка объектов в виде таблицы и ещё кое-что полезное.
Но вот грабить объекты из одного маршрута в другой он так легко не позволяет :cool:
Здесь на сайте в разделе разное есть прога древняя MSTSConv, которая чистит маршрут. Правда старожилы говорят, порой зачищает и нужное, хотя странно.
Да, есть такая, но в новых ОС-ях глючит..
Обновил макрос, советую перекачать: https://disk.yandex.ru/i/CzC2v5LyjhIJHw
- По просьбе Паштета добавлена опция генерации .REF по фактически имеющимся файлам.
Если данные об объекте были ранее импортированы в список из другого маршрута, описание берется оттуда. Все остальное летит в категорию Unclassified.
- При копировании автоматически создаются сезонные папки
- Исправлена ошибка, когда .REF читался не до конца
Пока при копировании файлов .s, сжатых при помощи zlib (таких около 5% в маршрутах), автоматически не переносятся их текстуры.
PS Понял как это прочитать, надо отбросить первые 16 байт, чтобы работал стандартный алгоритм zlib. Позже обновлю еще раз.
vBulletin® v3.8.12 by vBS, Copyright ©2000-2025, Jelsoft Enterprises Ltd. Перевод: zCarot