- •Содержание
- •Основные принципы настройки
- •Основные возможности настройки
- •Организация программных и вспомогательных файлов
- •Коротко об организации файлов
- •Работа с несколькими конфигурациями
- •Хранение чертежей в нескольких папках
- •Настройка шаблонов Интернет-публикаций
- •Создание пользовательских команд
- •Описание внешних команд
- •Псевдоимена команд
- •Настройка типов линий
- •Обзор описаний типов линий
- •Создание простых типов линий
- •Текстовые объекты в пользовательских типах линий
- •Формы в пользовательских типах линий
- •Пользовательские образцы штриховки
- •Коротко об описании образцов штриховки
- •Образцы штриховки из прерывистых линий
- •Образцы штриховки из составных линий
- •Настройка интерфейса пользователя
- •Обзор диалогового окна "Настройка интерфейса пользователя"
- •Термины, используемые при настройке
- •Изменения в настройке
- •Обзор редактора настройки интерфейса пользователя
- •Фильтр отображения элементов настройки
- •Работа с файлами настройки
- •Основные сведения о файлах настройки
- •Перенос и передача настроек
- •Создание и загрузка частичного файла НПИ
- •Создание корпоративного файла НПИ
- •Команды настройки
- •Создание, редактирование и повторное использование команд
- •Имена команды "Найти" и строки поиска
- •Управление отображением имен команд
- •Создание изображений для команд
- •Создание подсказок в строке состояния
- •Создание макросов
- •Использование в макросах специальных управляющих символов
- •Пауза для пользовательского ввода
- •Поддержка иностранных языков в макросах
- •Повторение команд в макросе
- •Метод выбора объектов "Единственный"
- •Использование макроса для перестановки элементов интерфейса пользователя
- •Использование условных выражений в макросах
- •Использование 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-файлах
- •Указатель
(princ "\nДля вызова встроенной команды ШТРИХ введите ВСТРШТРИХ.\n") (command "КШТРИХ")
(princ)
)
(defun C:ВСТРШТРИХ ( ) (command ".ШТРИХ") (princ)
)
(defun-q S::STARTUP ( ) (command "нетком" "штрих")
(princ "\nПереопределение ШТРИХ на КШТРИХ!\n")
)
Перед завершением инициализации чертежа с помощью функции defun задаются новые описания команд ШТРИХ и ВСТРШТРИХ. После завершения инициализации чертежа вызывается функция S::STARTUP, которая отключает стандартное описание команды ШТРИХ.
ПРИМЕЧАНИЕ Для того чтобы функция S::STARTUP не переопределяла функции с таким же именем из других файлов, ее следует определить с помощью функции defun-q, а не defun.
Так как функция с именем S::STARTUP может быть определена в различных файлах (acad.lsp, acaddoc.lsp, файлах MNL или любых других файлах AutoLISP), то определенную ранее функцию S::STARTUP можно переопределить. В следующем примере приводится способ определения данной функции, позволяющий избежать подобных ситуаций.
(defun-q MYSTARTUP ( )
... автоматически выполняемая функция ...
)
(setq S::STARTUP (append S::STARTUP MYSTARTUP))
В результате такого определения код предыдущей загруженной функции S::STARTUP добавляется к коду новой функции S::STARTUP. Этот способ определения можно использовать независимо от ранее существовавшей функции S::STARTUP.
ObjectARX
Технология ObjectARX предоставляет средства для разработки приложений, совместно использующих данные программируемых объектов. Можно пользоваться приложениями ObjectARX от сторонних разработчиков или написать свои собственные.
216 | Глава 7 Введение в интерфейсы программирования
Коротко об ObjectARX
ObjectARX® (AutoCAD Runtime Extension) представляет собой среду программирования, позволяющую разрабатывать компилированные приложения AutoCAD. Среда программирования ObjectARX включает ряд библиотек динамической компоновки (DLL), которые работают в едином адресном пространстве с AutoCAD и взаимодействуют непосредственно с внутренними структурами данных и кодами AutoCAD. Эти библиотеки используют преимущества открытой архитектуры AutoCAD, и расширяют классы объектов и возможности AutoCAD благодяра прямому доступу к структурам баз данных AutoCAD, графической системе и ядру геометрических построений. Кроме того, с помощью библиотек DLL можно создавать новые команды, которые будут использоваться аналогично встроенным командам
AutoCAD.
Библиотеки ObjectARX можно использовать совместно с другими интерфейсами программирования AutoCAD, например, AutoLISP или VBA, обеспечивая таким образом интеграцию различных интерфейсов программирования приложений.
Описание интерфейса программирования ObjectARX приводится в документации Руководство для разработчика ObjectARX. Это руководство является частью набора ObjectARX Software Development Kit, который можно загрузить на сайте компании Autodesk, в разделе "Development Tools". Для получения дополнительной информации выберите "Дополнительные ресурсы" "Документация для разработчиков" в меню "Справка", а затем выберите ObjectARX.
Работа с приложениями ObjectARX
Для загрузки приложения ObjectARX служит параметр "Загрузить" команды ARX. После загрузки приложения все определенные в нем команды можно вызывать из командной строки AutoCAD.
Для размещения некоторых приложений ObjectARX требуется большой объем системной памяти. Поэтому после завершения использования каждого подобного приложения его можно выгрузить из памяти с помощью параметра "Выгрузить" команды ARX.
Приложения ObjectARX также можно загружать функцией arxloadязыка AutoLISP. Синтаксис функции arxload во многом идентичен синтаксису функции load, используемой для работы с файлами AutoLISP. При успешной загрузке приложения ObjectARX функция arxload возвращает имя программы. Вызов функции arxload имеет следующий синтаксис:
(arxload имя_файла [при_ошибке])
Функция arxload имеет два аргумента имя_файла и при_ошибке. Как и у функции load, аргумент имя_файла является обязательным и должен представлять собой полный путь и имя файла загружаемого приложения ObjectARX. Аргумент
ObjectARX | 217
при_ошибке является необязательным и обычно не используется при загрузке приложений ObjectARX из командной строки. В следующем примере производится загрузка приложения ObjectARX myapp.arx.
(arxload "myapp")
Как и с файлами AutoLISP, AutoCAD производит поиск указанного файла по библиотечному пути поиска. Для загрузки файла, находящегося вне папок, указанных в библиотечном пути, требуется задание полного пути к нему.
ПРИМЕЧАНИЕ Для разделения имен папок при вводе пути следует использовать одну прямую косую черту (/) или две обратных косых черты (\\). Это связано с тем, что в AutoLISP символ обратной косой черты (\\) имеет специальное назначение.
Попытка повторной загрузки уже находящегося в памяти приложения приводит к появлению ошибки. Перед использованием arxload следует с помощью функции arx проверить, нет ли приложения в списке уже загруженных.
Для выгрузки приложения с помощью AutoLISP служит функция arxunload. На следующем примере можно посмотреть, как производится выгрузка приложения myapp.
(arxunload "myapp")
Использование функции arxunload приводит к выгрузке из памяти не только приложения, но и определенных в нем команд.
См. также:
“Коротко об организации файлов” на стр.4
Автоматическая загрузка приложений
ObjectARX
Некоторые приложения ObjectARX используют файл acad.rx, в котором содержится список программных файлов ObjectARX, автоматически загружаемых при запуске
AutoCAD.
Для создания и редактирования этого файла можно использовать любой текстовый редактор или текстовый процессор, который сохраняет тексты в формате ASCII. При необходимости этот файл можно изменять, удаляя неиспользуемые или добавляя нужные имена ObjectARX-приложений. Кроме того, перечень приложений для автоматической загрузки можно выбрать с помощью команды ЗАГПРИЛ. В последнем случае редактирование файлов не требуется.
218 | Глава 7 Введение в интерфейсы программирования
Так как в AutoCAD поиск файла acad.rx производится в порядке, заданном в стандартных библиотечных путях, в каждой папке с чертежами можно хранить свой файл acad.rx. Это позволяет загружать требуемый набор ObjectARX приложений для различных типов чертежей. Пусть, например, трехмерные чертежи хранятся в папке с именем AcadJobs/3d_dwgs. Если эта папка установлена текущей, в нее можно скопировать файл acad.rx и внести в него следующие изменения:
myapp1
другие_приложения
Если поместить новый файл acad.rx в папку AcadJobs/3d_dwgs и запустить программу AutoCAD при условии, что эта папка является текущей, то все указанные в этом файле приложения ObjectARX будут загружены и станут доступными из командной строки. Поскольку исходный файл acad.rx остается в папке программных файлов AutoCAD, файл по умолчанию acad.rx будет загружен при запуске AutoCAD из другой папки, в которой отсутствует файл acad.rx.
С помощью функции arxload приложения ObjectARX можно загружать из MNL-файлов. Это позволяет при загрузке файла меню также загружать все необходимые ObjectARX-приложения, которые должны вызываться из данного меню.
Многие команды AutoCAD, содержащиеся в arx-модулях, можно загружать автоматически. Дополнительную информацию о “Коротко об автоматической загрузке процедур AutoLISP ” на стр.211 и функции autoarxload см. в руководстве Справка по AutoLISP (в меню AutoCAD "Справка" выберите "Дополнительные ресурсы" "Документация для разработчика".
См. также:
“Коротко об автоматической загрузке процедур AutoLISP ” на стр.211
.NET
В среде Microsoft .NET Framework с помощью таких языков программирования, как VB .NET и C#, можно создавать приложения, взаимодействующие с AutoCAD.
Обзор .NET
.NET Framework - это независимая от языка среда программирования, разработанная корпорацией Microsoft. Кроме среды выполнения программы в Framework существуют библиотеки классов, которые упрощают разработку безопасных взаимодействующих с другими приложений Windows и приложений на основе Интернет-технологий.
AutoCAD поддерживает разработку приложений .NET с помощью управляемых интерфейсных классов ObjectARX. Полный список доступных управляемых интерфейсных классов см. в ObjectARX SDK в разделах “AutoCAD Managed Class
.NET | 219
Reference” (Справочное руководство по управляемым классам AutoCAD) и “ObjectARX Managed Wrapper Classes” (Управляемые интерфейсные классы ObjectARX) документации Руководство разработчика ObjectARX. Дополнительную информацию о .NET Framework см. в документации Microsoft.
Управляемые интерфейсные классы поставляются для большинства пакетов ObjectARX SDK, что позволяет создавать приложения на любом языке, поддерживаемом .NET Framework, включая VB .NET и C#. Управляемые классы выполняют функцию баз данных и позволяют создавать приложения, которые могут читать и сохранять файлы чертежей в формате DWG. Они также открывают доступ к элементам пользовательского интерфейса AutoCAD, включая командную строку и функциональные диалоговые окна, редактору AutoCAD, а также к компонентам печати и публикации.
Загрузка управляемых приложений в
AutoCAD
Чтобы загрузить управляемое приложение, в командной строке AutoCAD введите NETLOAD и перейдите к требуемому файлу DLL. Управляемые приложения выгружаются только при выходе из программы AutoCAD.
220 | Глава 7 Введение в интерфейсы программирования