(command “linetype” “load” “Acad_ISO04w100” “acadiso.lin”
“load” "Acad_ISO02w100" “” “”)
(command “layer” “new” “contur”
“new” “center”
“new” “dim”
“new” “hidden”
“I” "Acad_ISO04w100” “center”
“I” "Acad_ISO02w100” “hidden”
“c” “red” "center”
“c” “green” “dim”
“c” “yellow” “hidden”
“s” “0” ""
)
)
;;; Функция сохранения переменной CMDECHO
(defun sysvar ()
(setq svarold (getvar “cmdecho”))
(setvar “cmdecho” 0)
)
;;; Функция установки границ экрана
(defun pole ()
(setq p1 (polar pt1 (+ pi (/ pi 4)) 15))
(setq p3 (polar pt3 (/ pi 4) 15))
(command “limits” p1 p3)
(command “zoom” “a”)
)
;;; Функция вычерчивания рамки
(defun ramka ()
(command “rectangle” pt1 pt2)
(command “rectangle” pt3 pt4)
(setq e1 (entlast))
(command "pedit" e1 "w" "0.4" "")
)
;;; Текст основных функций
(defun C:A2 ()
(sysvar)
(setq pt1 '(-20 -5))
(setq pt2 '(574 415))
(setq pt3 '(0 0))
(setq pt4 '(569 410))
(pole)
(ramka)
(sloy)
(setvar “cmdecho” svarold).
(princ)
)
(defun C:A4 ()
(sysvar)
(setq pt1 '(-20 -5))
(setq pt2 '(190 292))
(setqpt3 '(0 0))
(setq pt4 (185 287))
(pole)
(ramka)
(sloy)
(setvar "cmdecho” svarold)
(princ)
)
(defun C:SCR ()
(sysvar)
(setq pt1 '(-40 -20))
(setq a (getreal "\nВведите координату X
правой границы экрана:_”))
(setq b (* a 0.75))
(setq pt2 (list a b))
(command “limits” pt1 pt2)
(command “zoom” “a”)
(sloy)
(setvar “cmdecho” svarold)
(princ)
)
3.3.6. Автоматическая загрузка программы
Автокад позволяет любую функцию, написанную на Автолиспе и определенную форматом C:XXX, использовать в качестве встроенной команды. Ее лишь следует загрузить, например, вызовом функции Applications... из группы Tools падающих меню. Однако целый ряд программ Автокад загружает автоматически. Этим процессом управляет файл
Присвоим созданному программному файлу, имя
(autoload "formats” ‘("А0" “A1” “A2" “A3” “A4” “scr”)).
Теперь для загрузки в новый графический файл нужного формата или расширения границ экрана достаточно ввести в командную строку имя формата. В организованном поле изображения созданы пять слоев с присущими им цветами примитивов и типами линий.
В заключение необходимо отметить следующее. Описанная программа, равно как и предлагаемые далее, приведена в качестве примера программирования. В связи с этим в программах, используемых для иллюстрации, могут присутствовать структуры, не являющиеся обязательными. В частности, в программе
И еще одно замечание. Программа будет работать без сбоев лишь при определенных условиях, а именно: в чертеже должны отсутствовать загружаемые слои и типы линий и отключена автоматическая объектная привязка. Возможности создания программ, исключающих эти неудобства, рассмотрены в разделах 6.6 и 6.7.
4. ОРГАНИЗАЦИЯ ПАУЗ И ВЕТВЛЕНИЕ ПРОГРАММ
4.1. Организация пауз для ввода данных
Автолисп содержит ряд функций, объединенных общей структурой getxxx, вызывающих паузу в работе программ и ожидающих ввода запрашиваемых данных. Эти функции перечислены в табл. З.
Tаблица 3. Функции запроса данных