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


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


 
    Command: (load "box")
    C:BOX
 
    Command: BOX
    First corner: <pick>
    Other corner: <drag and pick>
    From point:
    Current line-width is 0.0000
    Arc/Close/Halfwidth/Length/Undo/Width/<Endpoint of line>:
    Arc/Close/Halfwidth/Length/Undo/Width/<Endpoint of line>:
    Arc/Close/Halfwidth/Length/Undo/Width/<Endpoint of line>:
    Arc/Close/Halfwidth/Length/Undo/Width/<Endpoint of line>: C
    Command: nil
 
BOX должен вывести замкнутую,  прямоугольную  2-мерную  полилинию
ограниченную двумя противоположными точками, которые Вы  выбрали.
Если это не случилось, отладьте программу и устанавливал  пробле-
му прежде, а затем продолжим.
 
ОЧИСТКА ИНТЕРФЕЙСА
 
Часть интерфейса BOX, отвечающая за ввод данных работает  хорошо,
но есть несколько тонкостей, которые лучше решить, чтобы  сделать
работу нашей функции более эффективной.
 
1. Нет необходимости выводить эхо и подсказки команды PLINE в ко-
мандной строке; фактически, это замедляет работу программы.
 
2. Нуль который возвращает BOX должен подавляться.
 
3. Не необходимости чертить крестики в углах прямоугольника.
 
Функции GETVAR и SETVAR используются, наряду с SETQ, для сохране-
ния значений системных переменных CMDECHO и BLIPMODE при  загруз-
ке C:BOX, изменения их значений во время выполнения C:BOX, и вос-
становления первоначальныех значений при выходе из C:BOX.
 
PRIN1 вызывается как последнее выражение в теле C:BOX  чтобы  вы-
вести пустую строку на на экран после выхода из С:BOX, для подав-
ления нуля, который будет возвращаться иначе.
 
    (defun C:BOX ()
 
          (setq old_cmdecho  (getvar "CMDECHO")
                old_blipmode (getvar "BLIPMODE")
          )
          (setvar "CMDECHO" 0)
          (setvar "BLIPMODE" 0)
 
          (setq pt1 (getpoint "\nFirst corner: "))



Начало  Назад  Вперед