Реклама i
ФОТОТЕХ








В AutoCAD LT можно программировать! ( II часть )

Добавлено: 25 Дек 2009
Многим пользователям хотелось бы, чтобы текст размещался в специализированном слое без переключения в него. Другими словами, текущим должен оставаться тот рабочий слой, в котором в данный момент рисуются объекты. Но если понадобилось ввести текст, то последний автоматически попадал бы в предназначенный для него слой.

Будем считать; что слой с именем "Текст" в вашем чертеже уже создан. Таким образом, напрашиваются два пути решения задачи.

Первый путь:

  • 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, или пробел Соответствует нажатию
\
Backslash
Обратная косая черта
Пауза для ручного ввода данных мышкой или с клавиатуры
/
Косая черта
Служит в записи путей доступа к файлам, если таковые используются в макросах, вместо обратной косой черты.
_
Знак подчеркивания
Применяется в локализованных (иностранных) версиях AutoCAD, предворяя имя команды на английском языке
@ Символ последней указанной на экране точки.
^C^C Эквивалент дважды нажатой клавиши . Почти все макросы начинаются с этих символов.
* Префикс ( * ) служит для бесконечного повторения макроса. Выход из команды осуществляется нажатием клавиши
'
Апостроф
Применяется перед вводом "прозрачной" команды, например, '_Ortho
$, $M= Специальный символ, служащий для ввода выражений, написанных на языке DIESEL.
^Z Подавляет автоматическое добавление пробела, появляющееся на конце макроса.
( ) В скобках записываются выражения, написанные на языках LISP и DIESEL. Применяются также для записи вложенных выражений калькулятора в полной версии AutoCAD

 

Владимир Свет
(Опубликовано в журнале AUTOCAD MAGAZIN № 4/05, Германия. перевод Dr. Heinz-Joachim Schulc) 

 

Внимание! Запрещается перепечатка данной статьи или ее части без согласования с автором. Если вы хотите разместить эту статью на своем сайте или издать в печатном виде, свяжитесь с автором.


Комментарии

Комментарии 1-2 из 2
hwd
, 05 мая 2010 в 18:17
#1
Интересная статья (мне понравилась). Однако имеется пара не реализованных нюансов:
1. Согласно ГОСТ, текст на чертежах должен иметь высоту, принятую из чётко обозначенного в нормативном документе перечня допустимых высот. Т.о. желательно, чтобы команда создания текстового объекта предоставляла пользователю возможность указания высоты текста из уже сформированного списка, соответствующего требованиям ГОСТ.
2. Толщина линии текста зависит от его высоты (Требование ГОСТ).
3. Текст должен создаваться определённым текстовым стилем, который, в свою очередь, должен быть построен на базе заранее оговорённого шрифта (требование стандартов). Если текстовый стиль отсутствует - он должен автоматически создаваться. Если отсутствует нужный шрифт - должен использоваться тот, который установлен по умолчанию.
hwd
, 05 мая 2010 в 18:19
#2
п.с. Пропустил уточнение, что это для версии LT - в таком случае перечисленные мною пункты вряд ли можно реализовать (в отличие от обычного AutoCAD).
Комментарии могут оставлять только зарегистрированные участники
Авторизоваться
Размещение рекламы