- •Содержание
- •Основные принципы настройки
- •Основные возможности настройки
- •Организация программных и вспомогательных файлов
- •Коротко об организации файлов
- •Работа с несколькими конфигурациями
- •Хранение чертежей в нескольких папках
- •Настройка шаблонов Интернет-публикаций
- •Создание пользовательских команд
- •Описание внешних команд
- •Псевдоимена команд
- •Настройка типов линий
- •Обзор описаний типов линий
- •Создание простых типов линий
- •Текстовые объекты в пользовательских типах линий
- •Формы в пользовательских типах линий
- •Пользовательские образцы штриховки
- •Коротко об описании образцов штриховки
- •Образцы штриховки из прерывистых линий
- •Образцы штриховки из составных линий
- •Настройка интерфейса пользователя
- •Обзор диалогового окна "Настройка интерфейса пользователя"
- •Термины, используемые при настройке
- •Изменения в настройке
- •Обзор редактора настройки интерфейса пользователя
- •Фильтр отображения элементов настройки
- •Работа с файлами настройки
- •Основные сведения о файлах настройки
- •Перенос и передача настроек
- •Создание и загрузка частичного файла НПИ
- •Создание корпоративного файла НПИ
- •Команды настройки
- •Создание, редактирование и повторное использование команд
- •Имена команды "Найти" и строки поиска
- •Управление отображением имен команд
- •Создание изображений для команд
- •Создание подсказок в строке состояния
- •Создание макросов
- •Использование в макросах специальных управляющих символов
- •Пауза для пользовательского ввода
- •Поддержка иностранных языков в макросах
- •Повторение команд в макросе
- •Метод выбора объектов "Единственный"
- •Использование макроса для перестановки элементов интерфейса пользователя
- •Использование условных выражений в макросах
- •Использование AutoLISP в макросах
- •Настройка панелей инструментов
- •Создание и редактирование панелей инструментов
- •Добавление или замена элементов управления панели инструментов
- •Создание раскрывающихся и контекстных меню
- •Создание раскрывающегося меню
- •Создание контекстного меню
- •Создание подменю
- •Обращение к раскрывающимся и контекстным меню
- •Подстановка и вставка раскрывающихся меню
- •Задание клавиш быстрого вызова и временной замены
- •Создание операции при двукратном нажатии
- •Настройка кнопок мыши
- •Ввод координат в меню кнопок
- •Настройка элементов интерфейса предыдущей версии
- •Создание планшетных меню
- •Настройка кнопок планшета
- •Создание экранных меню
- •Создание меню мозаики изображений
- •Загрузка файла AutoLISP
- •Настройка рабочего пространства
- •Вопросы и ответы по настройке интерфейса пользователя
- •DIESEL
- •Настройка строки состояния
- •Системная переменная MODEMACRO
- •Присвоение значений MODEMACRO
- •Выражения DIESEL в макросах
- •USERS1-5 Каталог функций языка DIESEL
- •+ (сложение)
- •- (вычитание)
- •* (умножение)
- •/ (деление)
- •= (равно)
- •< (меньше)
- •> (больше)
- •!= (не равно)
- •<= (меньше или равно)
- •>= (больше или равно)
- •angtos
- •edtime
- •eval
- •getenv
- •getvar
- •index
- •rtos
- •strlen
- •substr
- •upper
- •Сообщения об ошибках языка DIESEL
- •Слайды и командные сценарии
- •Создание слайдов
- •Коротко о слайдах
- •Просмотр слайдов
- •Создание и просмотр библиотек слайдов
- •Создание файлов сценариев
- •Коротко о файлах сценариев
- •Вызов сценария при загрузке программы
- •Демонстрация слайдов с помощью сценариев
- •Введение в интерфейсы программирования
- •ActiveX Automation
- •Коротко об ActiveX
- •Запуск приложения из командной строки
- •Запуск приложения из меню или с помощью панели инструментов
- •AutoCAD VBA
- •Основные сведения о AutoCAD VBA
- •Использование приложений AutoCAD VBA
- •Автоматическая загрузка и выполнение проектов VBA
- •AutoLISP и Visual LISP
- •Коротко об AutoLISP и Visual LISP
- •Работа с приложениями AutoLISP
- •Автоматическая загрузка и выполнение процедур AutoLISP
- •Файл ACAD.LSP
- •Файл ACADDOC.LSP
- •MNL-файл и AutoLISP-функции для меню
- •Предотвращение ошибок AutoLISP при выполнении файлов автозагрузки
- •Функция S::STARTUP: выполнение после завершения инициализации чертежа
- •ObjectARX
- •Коротко об ObjectARX
- •Работа с приложениями ObjectARX
- •Обзор .NET
- •Формы и шрифты
- •Коротко о файлах форм
- •Создание файлов описаний форм
- •Описания форм
- •Коды длин и направлений векторов
- •Специальные коды
- •Коды 0, 1 и 2: Конец формы и управление режимом построения
- •Коды 3 и 4: Управление размером
- •Коды 5 и 6: Сохранение и восстановление позиции
- •Код 7: Субформа
- •Коды 8 и 9: Смещения по X-Y
- •Код 00A: Октантная дуга
- •Код 00B: Дробная дуга
- •Коды 00C и 00D: Дуги, заданные прогибом
- •Код 00E: Флаг вертикального текста
- •Описания текстовых шрифтов
- •Файлы-образцы
- •Расширенный одноштриховой Roman
- •Расширенный стандартный шрифт UNICODE
- •Описания больших шрифтов
- •Описание большого шрифта
- •Создание файла расширенного большого шрифта
- •Использование большого шрифта в чертежах
- •Использование большого шрифта для создания специальных символов
- •Описания шрифтов Unicode
- •Верхние и нижние индексы в SHX-файлах
- •Указатель
Настройка строки состояния
С помощью переменной MODEMACRO данные можно отобразить в строке состояния.
Системная переменная MODEMACRO
В строке состояния отображаются важные информационные сведения; они служат дополнением к основному диалогу с пользователем. Системная переменная MODEMACRO управляет отображением пользовательской информации в строке состояния. Вычисленное значение системной переменной MODEMACRO выводится слева в поле строки состояния, которая расположена в нижней части окна AutoCAD®. Начальным значением переменной является пустая строка; это значение устанавливается при запуске AutoCAD. Переменная не сохраняется нигде — ни в чертеже, ни в файле настройки.
Количество символов, которое может быть отображено в строке состояния, ограничено лишь размером окна AutoCAD и возможностями используемого монитора. Если значение переменной MODEMACRO имеет достаточно большую длину, все остальные элементы строки состояния смещаются вправо. В принципе, они могут даже скрываться за пределами экрана.
С помощью переменной MODEMACRO можно отобразить в строке состояния большинство данных, воспринимаемых программой AutoCAD. Использование этой переменной таит в себе богатые возможности для конфигурирования строки состояния в соответствии с нуждами пользователя.
Значение переменной MODEMACRO задается пользователем. Ей можно присвоить любое строковое значение. Максимальная длина строки - 4095 символов. Для задания значения переменной MODEMACRO можно воспользоваться командой УСТПЕРЕМ или ввести modemacro в командной строке. Модификация значения MODEMACRO, выполняемая вручную, удобна для экспериментов с различными форматами строки состояния; однако, при этом можно ввести не более 255 символов.
Если MODEMACRO присвоена пустая строка (для этого пользователь должен ввести точку в ответ на запрос значения), AutoCAD отображает стандартную строку состояния.
Присвоение значений MODEMACRO
Для отображения пользовательской информации в строке состояния можно использовать обычные текстовые строки и функции языка DIESEL.
Значение переменной MODEMACRO определяет, что должно отображаться в строке состояния. Простейший пример переменной MODEMACRO представляет собой постоянное текстовое значение, однако, в этом случае результативность переменной
176 | Глава 5 DIESEL
минимальна. Например, чтобы в строке состояния выводилось название фирмы, которой принадлежит экземпляр программы, можно сделать так:
Команда: modemacro
Новое значение MODEMACRO, или . если нет <"">: Greg's Bank and Grill
В этом случае MODEMACRO всегда отображает один и тот же текст; строка состояния не содержит никаких данных об изменениях внутреннего состояния AutoCAD. Информация обновляется только при следующей модификации
MODEMACRO.
Для того чтобы в строке состояния отображались какие-либо текущие параметры AutoCAD, нужно включить в нее макровыражения на языке DIESEL. Макровыражения записываются в следующем формате:
$(функция, арг1, арг2, ...)
Здесь функция это имя DIESEL-функции (аналогичное имени функции AutoLISP), а арг1, арг2 и т.д. ее аргументы, интерпретируемые в соответствии с определением функции. В отличие от функций AutoLISP, макровыражения DIESEL оперируют только одним типом данных - строками. Макросы, которые работают с числами, выражают их в виде строк, преобразуя по мере необходимости.
Описание функций языка DIESEL можно найти в разделе “USERS1-5 Каталог функций языка DIESEL” на стр.183.
Создадим более содержательную строку состояния, например, с информацией об имени текущего текстового стиля:
Команда: modemacro
Новое значение MODEMACRO, или . если нет <"">: Стиль: $(getvar, textstyle)
■Стиль: это текстовая строка, которая будет отображаться в строке состояния.
■$(getvar,textstyle) DIESEL-функция (getvar) с аргументом, который извлекает имя текущего текстового стиля из системной переменной TEXTSTYLE.
ПРИМЕЧАНИЕ В тексте некоторых примеров выражения MODEMACRO перенесены на следующую строку из-за своей большой длины. При их вводе, однако, никаких переносов делать не следует.
Чтобы получить значение какой-либо системной переменной, нужно воспользоваться функцией $(getvar, имя_переменной ). Текущее значение переменной при этом заменяет то, которое отображалось ранее. При смене текстового стиля инициируется пересчет MODEMACRO. В результате имя нового текущего стиля появляется в строке состояния.
Выражения могут быть вложенными и достаточно сложными. Рассмотрим еще один пример. Пусть в строке состояния требуется отобразить текущий интервал и угол
Настройка строки состояния | 177
(в градусах) шаговой привязки. Преобразование угла из радиан в градусы и отсечение дробной части может быть осуществлено с помощью вложенных выражений.
Команда: modemacro
Новое значение MODEMACRO, или . если нет <"">: Шаг: $(getvar, snapunit) $(fix,$(*,$(getvar,snapang),$(/,180,3.14159)))
Другой вариант — отображение значений в текущих линейных и угловых форматах единиц.
Команда: modemacro
Новое значение MODEMACRO, или . если нет <"">: Шаг: $(rtos,$(index,0, $(getvar,snapunit))),$(rtos,$(index,1,$(getvar,snapunit))) $(angtos, $(getvar,snapang))
$(getvar,snapang)) DIESEL передает все введенные данные непосредственно на выход, пока не встретит знак доллара ($) или строку в кавычках. Строки в кавычках можно использовать для подавления вычисления последовательности символов, которые без кавычек интерпретировались бы как DIESEL-функции. Если требуется использовать кавычки внутри таких строк, нужно повторять их дважды. В следующем примере текущим слоем является LAYOUT, а MODEMACRO иллюстрирует, как происходит получение значения переменной CLAYER:
Команда: modemacro
Новое значение MODEMACRO, или . если нет <"">:?"$(getvar,clayer)=
"""$(getvar,clayer)""""
В строке состояния выводится:
$(getvar,clayer)="LAYOUT"
Присвоение значений MODEMACRO в
AutoLISP
Приведенные здесь образцы процедур можно скопировать в файл формата ASCII, который должен загружаться функцией AutoLISP load.
В следующей команде, написанной на AutoLISP, определяется выражение для MODEMACRO, которое несет в себе ту же информацию, что и стандартная строка состояния. Так как в AutoLISP нет возможности переносить строки, для объединения отдельных выражений в одну строку MODEMACRO используется функция AutoLISP strcat.
(defun C:ACADMODE ( ) (setvar "modemacro" (strcat
"Слой $(substr,$(getvar,clayer),1,8)" "$(if,$(getvar,orthomode), Орто)" "$(if,$(getvar,snapmode), Шаг)" "$(if,$(getvar,tabmode), Планшет)" "$(if,$(=,$(getvar,tilemode),0)," "$(if,$(=,$(getvar,cvport),1), P)"
178 | Глава 5 DIESEL
")"
)
)
)
Эту AutoLISP-процедуру можно записать в файл с именем acadmode.lsp. При его загрузке будет создаваться строка состояния, являющаяся аналогом стандартной строки. Данный пример не является особо полезным применением возможностей MODEMACRO; он включен в руководство лишь в иллюстративных целях.
В следующем образце файла acad.lsp используется функция S::STARTUP для присвоения переменной MODEMACRO значения, определяемого в файле mode1.lsp.
;;;Образец файла acad.lsp, использующий S::STARTUP для загрузки
;;;файла MODE1.LSP, где определяется строка для MODEMACRO (defun S::STARTUP ( )
(load "mode1") (princ)
)
;;;Далее могут определяться и загружаться другие ;;; AutoLISP-файлы
;;;загружены здесь
Если загружен файл AutoLISP (mode1.lsp), системная переменная MODEMACRO используется для определения содержимого строки состояния, в которой отображается приведенная далее последовательность. L: первые восемь символов имени слоя, имя чертежа и часть пути, а также первая буква имени каждого текущего режима. Независимо от длины имени слоя, положение имени чертежа остается неизменным.
;;; MODE1.LSP
;;;
(setvar "modemacro" (strcat
"L:$(substr,$(getvar,clayer),1,30)"
"$(substr, ,1,$(-,30,$(strlen,$(getvar,clayer)))) " ;; ^^^^^^^^ Здесь записано 8 пробелов
"<.." "$(if,$(eq,$(getvar,dwgname),UNNAMED),UNNAMED," "$(substr,$(getvar,dwgname)," "$(if,$(>,$(strlen,$(getvar,dwgprefix)),29)," "$(-,$(strlen,$(getvar,dwgprefix)),29),1"
")," "$(strlen,$(getvar,dwgname))" ")"
")"
">"
"$(if,$(getvar,orthomode), O, )"
"$(if,$(getvar,snapmode), S, )"
"$(if,$(getvar,tabmode), T, )" "$(if,$(and,"
"$(=,$(getvar,tilemode),0),$(=,$(getvar,cvport),1)),P)"
)
)
Настройка строки состояния | 179