Обучение AutoLISP в 8 уроках



             

Обучение AutoLISP в восьми уроках - стр. 5


менять команду END, что бы она запрашивала у пользователя, сохра-
нять или нет текущее состояние рисунка перед выходом из  AutoCAD,
тем же самым способом как запрашивает пользователя команда QUIT.
 
В следующем примере, Вы будете записывать функцию AutoLISP  заме-
няющую родную команду END AutoCAD, и делающую неопределенной род-
ную команду END, чтобы AutoCAD использовал функцию AutoLISP вмес-
то нее.
 
Новая функция будет поэтому  определена  так,  что  сможет  вызы-
ваться непосредственно из командной строки AutoCAD без  включения
в круглые скобки, и будет самостоятельно вызывать местную  коман-
ду END ( независимо от того была ли команда END сделана неопреде-
ленной ) указав перед именем команды точку ".".
 
Создайте новый файл назвав его END.LSP и добавте туда эту функцию.
 
    (defun C:END (/ usr)
 
      ; Запросить пользователя и получить ответ
      (setq usr (getstring "\nReally want to END the drawing? "))
 
      ; Преобразовать его ответ в символы верхнего регистра
      (setq usr (strcase usr))
 
      ; Проверяют был ли его ответ "y" или "Y"
      (if
        (equal "Y" usr)
 
      ; Если это было, тогда завершить чертеж, иначе вывести сообщение
        (command ".END")
        (prompt "\nRemaining in drawing editor.")
      )
 
      ; тихий выход из функции
      (prin1)
    )
 
Родная команда END может отключаться командой UNDEFINE и  поэтому
может заменяться функцией AutoLISP C:END .
 
    Command: UNDEFINE
    Command name: END
 
    Command: (load "end")
    C:END
 
    Command: END
    Really want to END the drawing? n
    Remaining in drawing editor.
 
    Command: END
    Really want to END the drawing? y
 
Для эффективности и не выполненя ненужного связывания переменных,
которое может быть относительно  дорого  в  смысле  компьютерного



Содержание  Назад  Вперед