den001
размещено: 03 Января 2007
обновлено: 13 Октября 2011
Программа на VBA для автоматической нумерации (или автоматического изменения значений) текстовых строк, изменяющихся по некоторой закономерности, в т.ч. и не самой простой (напр: TE11-S, TE12-S, TE21-S, TE22-S, TE31-S, TE32-S). Также включает дополнительные возможности для работы с текстом (добавление префиксов/суффиксов, удаление крайних пробелов).
Работает с заранее созданными текстом, мтекстом и атрибутами блоков (если в блоке несколько атрибутов, то с первым). Новые объекты не создаются.
Есть сортировка прямая и обратная по одной и по 2-м координатам, возможность работы с таблицами (ACAD 2005 и выше).
Текст1 (верхняя строка) - текст, помещаемый перед номером (если не нужен, то пустой)
Текст2 (нижняя строка) - текст, помещаемый за номером (если не нужен, то пустой)
Введенные значения сохраняются в виде списка, чтобы снова не набирать.
Number - число, изменяющееся от заданного значения на Приращение после нумерации количества объектов, заданного Числом проходов.
Прим.: Number = 1, Приращение = 1, Число Проходов = 3
Number принимает значения: 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4...
Проход - число, циклически изменяющееся от 1 до Числа проходов с нумерацией каждого объекта.
Прим.: Число проходов = 3
Проход принимает значения: 1, 2, 3, 1, 2, 3, 1, 2, 3...
Delta - вспомогательная величина; число, добавляемое к Number'у или Проходу в зависимости от режима.
Строка - текстовое значение выбранного объекта
В названии режима указано, какие из перечисленных величин и в какой последовательности задействуются при работе программы.
Самое простое - 1, 2, 3, 4... получается при Number = 1, Приращение = 1, Число проходов = 1, Delta = 0 в режиме Текст1 + Number + Текст2 (по умолчанию).
Чтобы получить пример, приведенный в начале описания, устанавливаем
Текст1 = "TE", Текст2 = "-S"
Number = 1, Приращение = 1, Число проходов = 2, Delta = 0
Режим - Текст1 + Number + Проход + Текст2
_________________
Пример: Number = 10, Приращение = 3, Число проходов = 2
Текст1 и Текст2 - пустые.
Выбрано 6 объектов (примитивов).
---
Delta = 0
Режим: Текст1 + Number + Текст2
Результат: 10, 10, 13, 13, 16, 16
Режим: Текст1 + Number + Проход + Текст2
Результат: 101, 102, 131, 132, 161, 162
---
То же, Delta = 1
Режим: Текст1 + Number + Текст2
Результат: 10, 11, 13, 14, 16, 17
Режим: Текст1 + Number + Проход + Текст2
Результат: 102, 103, 132, 133, 162, 163
______________
Настройка - для произвольной последовательности Текст1, Текст2, Number, Проход, и т.д., если шибко замороченая закономерность (! Проход здесь считается как Проход + Delta, а Delta, если выбрана, то просто как текст)
______________
Удалить крайние пробелы - " АБВ " -> "АБВ"
______________
Плюс/минус Number
Добавляет Number (может быть отрицательным) к числу, заключенному между Текст1 и Текст2 (если Текст1, Текст2 пустые, то просто к числу)
Пример:
Текст1 = "1-", Текст2 = "X", Number = 10
Выбраны текстовые объекты:
"1-101X", "1-215X"
Результат: "1-111X", "1-225X"
______________
Текст1 + строка + Текст2
Просто добавить к выбранной строке Текст1 и/или Текст2
Пример:
Текст1 = "1-", Текст2 = "X"
Выбраны: "101", "АБВ"
Результат: "1-101X", "1-АБВX"
______________
Сортировка.
Значения присваиваются объектам с учетом их расположения, в соответсвии с режимом сортировки (по Y сортируется "вниз"). Если Нет - то в последовательности выбора. Если поднят флажок "Inv" - то в обратном порядке. Допуск отклонения по одной координате для двухкоординатной сортировки - высота текста.
X
1 2 3
Y
1
2
3
XY
1 2 3
4 5 6
YX
1 4
2 5
3 6
XY+Inv
6 5 4
3 2 1
YX+Inv
6 3
5 2
4 1
______________
Префикс/Суффикс.
Полученная строка не заменяет значение выбранного объекта, а добавляется в начало/конец, соответственно.
______________
Таблица.
Работа с таблицей. Предлагает сначала выбрать таблицу (объект Table), затем, если установлен режим сортировки - то регион (несколько ячеек рамкой), если нет - то произвольную последовательность ячеек. Полученные результаты записываются, как значения ячеек.
===============
Кнопка "Очистить текст"
Присваивает Текст1, Текст2 пустые значения
Кнопка "Сбросить все"
Приводит форму в исходный вид
================
Добавлено 06.03.07
Добавил RunNumber.lsp. Позволяет пользоваться Number'ом, как обычной акадовской командой. Загрузить его вместе с Number.dvb (или Number2004.dvb), запуск из командной строки: Number, макрос для кнопки ^C^CNumber
=================
-----------------
Добавлено 13.10.2011
Добавил Number x64 для 64-битных версий
Соответственно, загружать его вместо Number.dvb
-----------------
0.1 МБ
СКАЧАТЬ
Комментарии
Авторизоваться
- если при выборке помимо текста попадаются прочие примитивы, - нумерация может пройти некорректно;
- была бы полезна опция, позволяющая менять цвет у обработанных текстовых строк, например, когда надо вычесть или прибавить одно и тоже число из выборки. (Может кто разобрался куда именно надо строчку кода вставить?)
Работает во всех AutoCAD'ах х64.
Выдает ошибку 438 "object does not support this property or method".
Попробуй почитать комментарии в этой теме. Где-то в районе №90
Цитата:Сообщение #118 от Elf8
Выдает ошибку 438 "object does not support this property or method".
Попробуй почитать комментарии в этой теме. Где-то в районе №90
Поделитесь пожалуйста исправленным файлом