Донецкий национальный
            технический университет

      укр | нем | англ| ДонНТУ | Магистры
библиотека

В 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


библиотека
главная |украинский | немецкий | английский | ДонНТУ | портал магистров