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 МБ
СКАЧАТЬ
Комментарии
Авторизоваться
Никак, только Текст1 = "0,0", Приращение = 1 и нумеровать десятками, потом текст менять.
но такая функция оказывается реализована в наборе Beruf.
Есть вопрос-предложение.
При нумерации нескольких отдельных элементов текста необходимо каждый текст выделять поэлементно. То есть если у меня в схеме 10 автоматов и соответственно 10 порядковых номеров к ним, приходится 10 раз тыкать каждый текст. Если Выделить все элементы сразу, то автоматическая нумерация отработает не корректно, и номера будут расстановлены не по порядку, а в какой то непонятной последовательности.
Возможно ли при выполнении нумерации выполнить их сортировку так, чтобы они стояли по порядку. ну или хотябы по порядку с привязкой к оси Х или У. то есть увеличение номнров по оси Х или У?
Был бы премного благодарен. елси бы Вы учли такую возможность.
Спасибо за приложение!!
Возможно ли при выполнении нумерации выполнить их сортировку так, чтобы они стояли по порядку. ну или хотябы по порядку с привязкой к оси Х или У. то есть увеличение номнров по оси Х или У?
день добрый
обратите внимание на поле сортировка. там есть возможность выставить как в прямом порядке по осям, так и в обратном
Цитата:Сообщение #88 от odinokiyklaus
Возможно ли при выполнении нумерации выполнить их сортировку так, чтобы они стояли по порядку. ну или хотябы по порядку с привязкой к оси Х или У. то есть увеличение номнров по оси Х или У?
день добрый
обратите внимание на поле сортировка. там есть возможность выставить как в прямом порядке по осям, так и в обратном
Круто! Спасибо!
А настройки последних введённых данных можно как-то сохранять??