
- •Содержание
- •Основные принципы настройки
- •Основные возможности настройки
- •Организация программных и вспомогательных файлов
- •Коротко об организации файлов
- •Работа с несколькими конфигурациями
- •Хранение чертежей в нескольких папках
- •Настройка шаблонов Интернет-публикаций
- •Создание пользовательских команд
- •Описание внешних команд
- •Псевдоимена команд
- •Настройка типов линий
- •Обзор описаний типов линий
- •Создание простых типов линий
- •Текстовые объекты в пользовательских типах линий
- •Формы в пользовательских типах линий
- •Пользовательские образцы штриховки
- •Коротко об описании образцов штриховки
- •Образцы штриховки из прерывистых линий
- •Образцы штриховки из составных линий
- •Настройка интерфейса пользователя
- •Обзор диалогового окна "Настройка интерфейса пользователя"
- •Термины, используемые при настройке
- •Изменения в настройке
- •Обзор редактора настройки интерфейса пользователя
- •Фильтр отображения элементов настройки
- •Работа с файлами настройки
- •Основные сведения о файлах настройки
- •Перенос и передача настроек
- •Создание и загрузка частичного файла НПИ
- •Создание корпоративного файла НПИ
- •Команды настройки
- •Создание, редактирование и повторное использование команд
- •Имена команды "Найти" и строки поиска
- •Управление отображением имен команд
- •Создание изображений для команд
- •Создание подсказок в строке состояния
- •Создание макросов
- •Использование в макросах специальных управляющих символов
- •Пауза для пользовательского ввода
- •Поддержка иностранных языков в макросах
- •Повторение команд в макросе
- •Метод выбора объектов "Единственный"
- •Использование макроса для перестановки элементов интерфейса пользователя
- •Использование условных выражений в макросах
- •Использование 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-файлах
- •Указатель

Отрисовывается единичный вектор вверх-вправо, затем дуга по часовой стрелке (радиусом 1 единица, начиная с октанта 3, с охватом двух октантов), и, наконец, единичный вектор вниз-вправо, как показано на чертеже.
октант 2 |
два октанта |
октант 1 |
|
(90 градусов) |
|
Код 00B: Дробная дуга
Специальный код 00B (11) инициирует отрисовку дуги, которая может начинаться и заканчиваться не на границе октанта. В описании используются 5 байт.
11,смещение_начала,смещение_конца,радиус_ст,радиус,(-)0SC
Смещение_начала и смещение_конца задают величины удаления начальной и конечной точек дуги от границ октанта. Радиус_ст - это старшие 8 бит значения радиуса; они остаются нулевыми, если радиус не превышает 255 единиц. Для того чтобы получить значение радиуса дуги, превышающего 255 единиц, нужно умножить радиус_стна 256 и добавить к полученному числу радиус. Радиуси завершающий байт задаются точно так же, как и для описанной ранее октантной дуги (код 00A).
Смещение начала определяется путем вычисления разности (в градусах) между начальной границей октанта (кратной 45 градусам) и началом дуги. Затем эта разность умножается на 256 и делится на 45. Если дуга начинается на границе октанта,
смещение_начала равно 0.
Смещение_конца вычисляется аналогичным образом, но при этом используется разность (в градусах) между последней границей октанта, пересеченной дугой, и концом дуги. Если дуга заканчивается на границе октанта, смещение_конца равно
0.
Например, дробная дуга радиусом 3 единицы, проведенная между направлениями 55 и 95 градусов, кодируется так:
11,(56,28,0,3,012)
Пояснение к значениям параметров:
смещение_начала = 56, так как ((55 - 45) * 256 / 45) = 56 смещение_конца = 28, так как ((95 - 90) * 256 / 45) = 28
радиус_ст = 0 , так как (радиус < 255)
радиус = 3
230 | Глава 8 Формы и шрифты

начальный октант = 1, так как дуга начинается в октанте 45 градусов конечный октант = 2 , так как дуга заканчивается в октанте 90 градусов
Коды 00C и 00D: Дуги, заданные прогибом
Специальные коды 00C и 00D (12 и 13) обеспечивают еще один способ включения дуговых сегментов в описания форм. Они аналогичны кодам 8 и 9 в том отношении, что позволяют задавать смещения по X-Y. Однако, в кодах 00C и 00D отрисовка дуг производится на основании коэффициента прогиба относительно вектора смещения. Код 00C отрисовывает один дуговой сегмент, а код 00D несколько дуговых сегментов (полидуг) до тех пор, пока не последует смещение (0,0).
За кодом 00C должны следовать три байта в формате:
0C,X-смещение,Y-смещение,прогиб
Смещения по X и Y и прогиб, который задает кривизну дуги, могут принимать значения от -127 до +127. Если длина смещения равна D, а стрелка прогиба (т.е. расстояние по нормали от середины вектора смещения до дуги) равна H, коэффициент прогиба определяется как ((2* H / D) * 127). Если дуга рисуется от текущего до нового положения по часовой стрелке, знак будет отрицательным.
Полукруг обладает прогибом 127 (или –127). Это - наибольшая дуга, которую можно построить с использованием этих кодов (более крупные дуги необходимо комбинировать из двух последовательно соединенных сегментов). Нулевым прогибом описывается прямолинейный сегмент. Однако следует отметить, что предпочтительнее представлять такие сегменты кодом 8, т.к. это экономит один байт в описании формы.
За кодом полидуги (00D, или 13) следует 0 или тройки параметров, описывающих элементарные дуговые сегменты. Полидуга заканчивается смещением (0,0). Значение прогиба после нулевого смещения задавать не требуется. Например, букву S можно описать так:
13,(0,5,127),(0,5,-127),(0,0)
Создание файлов описаний форм | 231

Сегменты с нулевым прогибом удобны для включения прямолинейных участков в описания полидуг. Это более эффективно, чем завершение полидуги, вставка отдельного прямолинейного сегмента и начало новой полидуги.
Использование числа -128 в дуговых сегментах и полидугах не допускается.
Код 00E: Флаг вертикального текста
Специальный код 00E (14) используется только в описаниях текстовых шрифтов двойной ориентации (горизонтальной и вертикальной). Когда этот код встречается в описании символа, поведение программы по отношению к следующему коду определяется тем, как ориентирован текст. Если выбрана вертикальная ориентация, следующий код обрабатывается; если горизонтальная — пропускается.
В горизонтальном тексте начальной точкой каждого символа является левый конец его базовой линии. В вертикальном тексте начальной точкой является центр верхней линии символа. В конце каждого символа, как правило, выполняется подъем пера и переход к начальной точке следующего символа. В горизонтальном тексте переход происходит вправо, в вертикальном - вниз. Специальный код 00E (14) предназначен прежде всего для учета различий начальных и конечных точек, что позволяет применять одно и то же описание символа как для горизонтальной, так и для вертикальной ориентации текста. Например, следующее описание прописной буквы D может быть использовано в любой ориентации:
*68,22,ucd
2,14,8,(-2, 6),1,030,012,044,016,038,2,010,1,06C,2,050, 14,8,(-4,-3),0
начало
начало |
конец |
конец |
горизонтальные вертикально
232 | Глава 8 Формы и шрифты