VetCAD

Довольно мощный автонумератор и не только.

    7 оценок

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
-----------------
Довольно мощный автонумератор и не только.1

Комментарии

Комментарии могут оставлять только зарегистрированные участники
Авторизоваться
Комментарии 91-100 из 120
jackart , 10 июля 2014 в 12:14
#91
Отличное приложение. Спасибо огромное автору!
adu , 18 июля 2014 в 12:48
#92
Отличная программа, активно ею пользовался пока не установил acad 2015 :(
При попытке применить команду после выбора объектов выдает следующую ошибку:
Run-time error '438':
Object doesn't support this property or method

Редактор VBA показывает ошибку в данном условии:
ReDim Preserve TxtStr(3, tx)
TxtStr(0, tx) = tStr: TxtStr(1, tx) = Xpos: TxtStr(2, tx) = ((Ypos: TxtStr(3, tx) = Entry.ObjectID32))
tx = tx + 1
End If

Взял в двойные скобки участок, который помечается редактором VBA как ошибка.

Помогите пожалуйста (((
RooTKiT , 12 декабря 2014 в 10:44
#93
Цитата:
Сообщение #92 от adu
Отличная программа, активно ею пользовался пока не установил acad 2015 :(
При попытке применить команду после выбора объектов выдает следующую ошибку:
Run-time error '438':
Object doesn't support this property or method

Редактор VBA показывает ошибку в данном условии:
ReDim Preserve TxtStr(3, tx)
TxtStr(0, tx) = tStr: TxtStr(1, tx) = Xpos: TxtStr(2, tx) = ((Ypos: TxtStr(3, tx) = Entry.ObjectID32))
tx = tx + 1
End If

Взял в двойные скобки участок, который помечается редактором VBA как ошибка.

Помогите пожалуйста (((

Нужно заменить метод ObjectID32 на ObjectID во всем скрипте
allar8 , 29 декабря 2014 в 18:50
#94
Нужно заменить метод ObjectID32 на ObjectID во всем скрипте. Спасибо огромное
RAD24 , 06 мая 2015 в 09:26
#95
Можете дать файл автонумератора dvb с исправленной ошибкой (где заменен метод ObjectID32 на ObjectID во всем скрипте) ?
Ilez , 02 октября 2015 в 16:55
#96
Большое спасибо за программу - действительно функциональная вещь.
В лиспе я вставил
(defun c:Number ()
(vla-runmacro (vlax-get-acad-object) "Number")
(princ)
)
чтобы мог делать предварительный выбор, но команда тогда не запускается, пишет в командной строке:
; ошибка: no function definition: VLAX-GET-ACAD-OBJECT
может кто знает в чём проблема?
mvartem , 14 ноября 2015 в 07:01
#97
хорошая программа! Можно ли сделать так, чтобы работала с мультивыносками?
Krovlaf , 27 марта 2016 в 16:24
#98
В 16 CAD'е не работает. Выдает ошибку в коде. Можно ли поправить?
KEHT , 25 мая 2016 в 12:28
#99
Да очень нужно под autocad 2016.
P.S. ОС win10 х64 может еще в ней проблема?
VladimirMozharov , 01 октября 2016 в 22:58
#100
Для того, чтобы заработало в 2017 я просто поудалял все места, на которые он жаловался и соответственно заменил ObjectID32 на ObjectID во всем скрипте, как здесь упоминалось ранее.
Если что, стучите в личку, поделюсь. А вообще конечно жаль, что с такими глюками работает в новых версиях AutoCAD.
zip

0.1 МБ

СКАЧАТЬ