библиотека
В AutoCAD LT можно программировать! ( II часть ) Библиотека материалов
Владимир Свет
(Опубликовано в журнале AUTOCAD <
MAGAZIN № 4/05, Германия. перевод Dr. Heinz-Joachim Schulc)
Многим пользователям хотелось бы, чтобы текст размещался в
специализированном слое без переключения в него. Другими словами, текущим
должен оставаться тот рабочий слой, в котором в данный момент рисуются
объекты. Но если понадобилось ввести текст, то последний автоматически
попадал бы в предназначенный для него слой. Будем считать; что слой с
именем "Текст" в вашем чертеже уже создан. Таким образом, напрашиваются
два пути решения задачи.
Первый путь:
- 1. Временно вызвать и сделать текущим слой "Текст"
- 2. Напечатать нужный текст
- 3. Вернуть прежний слой в качестве текущего
Второй
путь:
- 1. Напечатать текст в текущем (рабочем) слое
- 2. Перевести готовый текст в слой с именем "Текст"
Первый
путь связан с запоминанием имени того (рабочего) слоя, который являлся
текущим на момент, предшествующий вызову слоя "Текст". Эта задача легко
решается в полной версии AutoCAD при помощи функции LISP Setq, которая
может быть введена в макро. В AutoCAD LT, как известно; LISP не работает.
Поэтому мы используем 2-ой путь, и результат будет таким же. Что такое
слой? Это одно из свойств объекта; такое же, как цвет или тип линии. Надо
найти команду; которая бы изменяла свойства объекта с командной строки,
без вызова диалогового окна. Имя нужной нам команды - CHANGE.
(Изменить)
Примечание: В AutoCAD много команд. Не все из них
выведены на кнопки или в падающие меню. Даже в казалось бы, полном перечне
команд, который можно увидеть в диалоговом окне Customize (см. вкладку
Commands, пункт All Commands), перечислены далеко не все
команды. Составляя макросы, вы часто будете заглядывать в HELP.
Постепенно вы узнаете много новых, ранее неизвестных команд и системных
переменных.
Сейчас мы опробуем команду CHANGE. Предварительно
создайте новый слой, имя которого "Текст", но не делайте его текущим.
Пусть цвет слоя для объектов, размещенных в нем, будет отличным от цвета
текущего слоя. В текущем слое (любом другом) командой MTEXT напишите
любое слово или предложение. (Как уже говорилось в первой части, если
AutoCAD локализован, перед именем команды, если она вводится на английском
языке, должен стоять знак подчеркивания. Впрочем; можно вводить команды и
составлять макросы и на русском языке.) Возьмем команду _CHANGE:
Command: _CHANGE
Команда: Изменить
Select objects: _Last
Выдели объект: Последний
тем самим мы даем понять AutoCAD, что хотим изменить последний,
сделанный до ввода команды CHANGE, объект, то есть MTEXT. Specify change point or [Properties]: _P
Покажите точку изменения или [Свойства]:
Вводим опцию _Properties, или сокращенно, _P Enter property to Change [Color/Elev/LAyer/LType/ltScale/LWeight/Thickness]: _ La
Введите свойство; которое надо изменить [перечисление на русском]: Слой
Enter new Layer name <…>: Text ї
Введите имя нового слоя <имя текущего слоя>:Текст
Enter property to Change [Color/Elev/LAyer/LType/ltScale/LWeight/Thickness]:
Введение здесь второго Enter показывает AutoCAD, что больше никаких
изменений не требуется. Ваш текст приобрел новое свойство - его слой
теперь "Текст"!! После такой подготовительной работы несложно составить
макро: ^C^C_Mtext;\\_Change:_Last;;_P;_La;Text;
Здесь две обратные наклонные черты служат для задания окна редактора
многострочного текста (вспомните первую часть-ручной ввод данных),
остальные знаки - точки с запятой (заменяют Enter), имена команд и опций
полностью соответствут порядку, в котором вручную выполнялась команда
CHANGE.
Не правда-ли, это не кажется трудным? Надо сначала
отработать последовательность выполнения команд вручную, с командной
строки, одновременно ведя запись на бумаге, а затем точно переписать эту
последовательность в соответствующее поле окна Customize. Но не все
получается сразу. Попробуйте создать аналогичную команду для однострочного
текста, и сразу появятся трудности. Для самостоятельной работы подскажу:
вместо команды Dtext следует использовать команду -ТЕХТ (с минусом). Опять
редкая команда, и работает необычно. Зато каждая строка при этом является
самостоятельным, не связанным внутренними узами с другими строками
объектом, и ее можно перевести в нужный слой прежде, чем будет написана
следующая строка. И еще, не забудьте про звездочку в начале макроса,
которая позволит работать команде строка за строкой.
Одной из
самых привлекательных команд была-бы такая, которая сможет создавать
размеры в специализированном слое. Давайте ее сделаем. Скопируйте на новую
кнопку созданный выше макрос для многострочного текста. Замените _Мтехт на
_Dimlinear и добавьте еще одну обратную косую черту (ведь для простановки
линейного размера требуется трижды щелкнуть левой кнопкой мышки). Замените
имя слоя на "Размеры"
Кнопка готова. Остается нарисовать на ней
красивую картинку и определить в нужную панель.
Специальные символы, применяемые для записи макрокоманд
Символ |
Наименование |
; или ^M, или пробел |
Соответствует нажатию <Enter> |
\ Backslash Обратная косая черта |
Пауза для ручного ввода данных мышкой или с
клавиатуры |
/ Косая черта |
Служит в записи путей доступа к файлам, если таковые
используются в макросах, вместо обратной косой черты. |
_ Знак подчеркивания |
Применяется в локализованных (иностранных) версиях
AutoCAD, предворяя имя команды на английском языке |
@ |
Символ последней указанной на экране точки. |
^C^C |
Эквивалент дважды нажатой клавиши <Esc>. Почти
все макросы начинаются с этих символов. |
* |
Префикс ( * ) служит для бесконечного повторения
макроса. Выход из команды осуществляется нажатием клавиши
<Esc> |
' Апостроф |
Применяется перед вводом "прозрачной" команды,
например, '_Ortho |
$, $M= |
Специальный символ, служащий для ввода выражений,
написанных на языке DIESEL. |
^Z |
Подавляет автоматическое добавление пробела,
появляющееся на конце макроса. |
( ) |
В скобках записываются выражения, написанные на
языках LISP и DIESEL. Применяются также для записи вложенных
выражений калькулятора в полной версии AutoCAD |
библиотека
|
|