- •Утверждено
- •Программирование на языке AutoLisp
- •1. Переменные языка AutoLisp
- •1.1 Системные переменные пакета AutoCad
- •1.2 Переменные языка AutoLisp определенные пользователем
- •2. Типы данных языка AutoLisp
- •3. Функции присвоения
- •4.2 Работа со строками, функции преобразования, проверки типов данных.
- •4.3 Логические функции Автолиспа.
- •5. Работа со списками
- •6. Использование функции get для ввода данных.
- •7. Работа с геометрическими описаниями объектов
- •8. Условное ветвление программ
- •9. Организация циклов
- •10. Вызов команд Автокада из программы на языке AutoLisp
- •11. Управление отображением
- •12. Вывод данных в командную строку
- •13. Файловый ввод - вывод
- •14. Определение функции
- •15. Отладка программы.
- •16. Доступ к примитивам и средствам Автокада
- •Функции AutoLisp Математические функции
- •Логические функции Автолиспа.
- •Работа со списками
- •Использование функции get для ввода данных.
- •Работа с геометрическими описаниями объектов
- •Условное ветвление программ
- •Организация циклов
- •Вызов команд Автокада из программы на языке AutoLisp
- •Управление отображением
- •Вывод данных в командную строку
- •Файловый ввод - вывод
- •Доступ к примитивам и средствам Автокада
- •Insert (block)
- •Vertex (pline)
10. Вызов команд Автокада из программы на языке AutoLisp
Ввод данных в программу на AutoLISP и вспомогательные вычисления над ними призваны служить автоматизации проектирования. Поэтому в AutoLISP не есть средство, позволяющее обращаться к командам Автокада из программ пользователя. Таким средством является функция языка AutoLisp COMMAND:
(command аргумент1 аргумент2 . . .)
Эта функция выполняет команду AutoCAD из AutoLisp и всегда возвращает nil. Аргументы представляют собой команды AutoCAD и их опции; каждый аргумент вычисляется и посылается в AutoCAD как ответ на соответствующий запрос. Имена команд и опции представляются как строковые константы, двухмерные и трехмерные точки - как списки из двух или трех действительных чисел соответственно. Пустая строка функции COMMAND равносильна нажа-тию пробела на клавиатуре. Вызов COMMAND без аргументов равносилен нажатию CTRL С с клавиатуры и прерывает большинство команд п. AutoCAD.
Например:
(command “redraw”) - будет выполнена команда п.AutoCAD REDRAW.
(command “zoom” “p”) - будет выполнен переход к предыдущему изображению экрана (если оно существует!).
Если переменная Автокада CMDECHO установлена в 0 то при выполнении этой функции на экран не будут выводиться информационные строки выполнение команды. На использование этой функции налагаются некоторые ограничения:
Функции семейства GET не могут быть вложены в функцию COMMAND. Следует присваивать все необходимые значения переменным заранее.
С помощью функции COMMAND нельзя работать с такими командами п. AutoCAD, как, DTEXT, DROW, PLOT, а также с командами, объявленными пользователем
(defun С:команда)
Нельзя использовать восклицательный знак для указания команде п. AutoCAD значения переменной.
Например: (setq pt1 (getpoint”Enter first point\n”)
(setq pt2 (getpoint”Enter second point\n”)
(command “line” pt1 pt2 “ “)
(command “erase” “l“ “ “)
Команда LINE строит отрезок прямой между точками pt1 и pt2 определенными ранее, “ “ - прерываем команду. Команда ERASE с опцией “last” (последний) убирает построенный отрезок. Если в строке аргументов команды, вызываемой функцией COMMAND, встречается ключевое слово Pause, то функция COMMAND приостановит свое действие, чтобы пользователь непосредственно ввел значение (или произвел отслеживание). В этот момент можно выполнить прозрачную команду, после чего выполнение функции COMMAND возобновится. Это позволяет, в частности, в процессе выполнения функции COMMAND использовать команду ZOOM. Пауза будет длиться до тех нор, пока не будет введен допустимый аргумент и пока не выполнятся все прозрачные команды. При этом если функция COMMAND требует ввода, запрос может быть удовлетворен с помощью меню. Для приостановления действия меню следует указать обратную косую черту.
Например: (command “zoom” pt1 pause) Одна угловая точка “окна” pt1, определена ранее, для ввода другой угловой точки AutoLisp приостанавливает свое действие, инициализируя запрос “Other corner”.