dr_t_j
размещено: 29 Июля 2026
Утилита ищет и заменяет текст в чертеже по шаблону (маске), причём за один
проход можно выполнить сразу несколько разных замен. Все выполненные
операции пишутся в журнал, откуда любую из них можно отменить по отдельности,
не трогая остальные.
Написано на чистом AutoLISP с диалогом на DCL, без внешних библиотек и
дополнительных установок. Один файл.
ЧТО ОБРАБАТЫВАЕТ
- однострочный текст (TEXT) и многострочный (MTEXT);
- атрибуты вхождений блоков и определения атрибутов (ATTDEF);
- размеры — переопределение размерного текста (измеренное значение
не трогается);
- мультивыноски (MLEADER);
- старые выноски (LEADER) — текст берётся из связанной аннотации;
- ячейки таблиц (ACAD_TABLE);
- поля (fields) — замена в коде поля, не в кэшированном значении;
- по отдельному флажку — содержимое определений блоков, то есть замена
сразу во всех вхождениях блока.
Каждый тип объектов включается своим флажком, лишнее можно отключить.
ОБЛАСТЬ ПОИСКА
- весь чертёж;
- текущее пространство (лист или модель);
- выбранные объекты — кнопка выбора временно убирает диалог, набор
запоминается.
МАСКА
Использован собственный механизм сопоставления, а не только штатный wcmatch,
поэтому шаблон ищется внутри строки, а не только по всему тексту целиком.
Поддерживаются:
* любое количество любых символов
? один любой символ
# одна цифра
@ одна буква (латиница и кириллица)
. один не буквенно-цифровой символ
[абв] один символ из набора
[~абв] один символ вне набора
[а-я] диапазон
` экранирование спецсимвола
Отдельные флажки: учитывать регистр и «текст целиком» (в этом режиме
сравнивается вся строка объекта, и при совпадении она заменяется полностью).
Если маска выключена, идёт обычный буквальный поиск, спецсимволы
экранируются автоматически.
Важно: обратных ссылок на найденные фрагменты (вида \1) нет — заменяется
весь найденный фрагмент целиком. Поэтому маска удобна там, где переменная
часть в результате не нужна, либо в режиме «текст целиком».
Примеры:
Найти: ГОСТ 21.1101-2009 Заменить: ГОСТ 21.1101-2013 (маска выключена)
Найти: *ТУ 16-705.* Заменить: новое обозначение (маска + целиком)
Найти: КЛ-0,4 Заменить: КЛ-0.4 (маска выключена)
СПИСОК ЗАДАЧ
Замены собираются в список и выполняются сверху вниз за один проход по
чертежу. У каждой задачи собственные флажки маски, регистра и режима
«целиком». Кнопки: добавить, обновить, удалить, вверх, вниз, очистить.
Порядок имеет значение — результат первой задачи попадает под действие
следующей. Если список пуст, отрабатывают текущие поля ввода.
У полей поиска и замены есть выпадающие списки с историей последних
двадцати значений.
ЖУРНАЛ И ОТМЕНА ОТДЕЛЬНОЙ ОПЕРАЦИИ
Каждая задача с ненулевым результатом даёт строку журнала: номер, время,
что на что менялось, сколько объектов изменено.
Откат работает не через штатный UNDO, а точечно. Для каждой замены
сохраняются дескриптор объекта, вид свойства (TextString, TextOverride,
ячейка таблицы, конкретная DXF-пара поля) и прежнее значение. При отмене
текущее значение сверяется с тем, что записала программа: если объект
успели изменить позже или он удалён, эта позиция пропускается, о чём
сообщается в статусе. Благодаря этому можно отменить, например, вторую
операцию, оставив третью.
Журнал живёт в текущем сеансе AutoCAD, поэтому предусмотрен экспорт в CSV.
КОМАНДЫ
TREP — открыть окно (страницы «Замены» и «Журнал»)
TREPLOG — сразу журнал
-TREP — выполнить сохранённый список задач без окна
TREPUNDO — откатить последнюю операцию из командной строки
УСТАНОВКА
Загрузить файл через APPLOAD (или добавить в автозагрузку) и выполнить TREP.
DCL-файл диалога создаётся автоматически во временной папке и удаляется
после закрытия, отдельно его хранить не нужно.
Требуется Visual LISP (vl-load-com), AutoCAD 2010 и новее.
0.01 МБ
СКАЧАТЬ