adfun.ru
| |
BIGLIB |
| большущая библиотека (9812 книг), можно не только прочитать но и скачать бесплатно |
|
| |
ФАНТАСТИКА |
| фентези,
фантастика, фантастические повести |
|
| |
ФИЛОСОФИЯ |
книги, которые заставляют
задуматься над окружающим тебя миром.
|
|
| |
МЕДИЦИНА |
медицинские книги,
методички,
народные лечебники |
|
| |
КУЛИНАРИЯ |
рецепты
тортов, консервирование,
все о спиртных
напитках. |
|
| |
СТИХИ |
| стихи популярных
и не очень авторов |
|
| |
ТВОРЧЕСТВО |
| народное творчество,
стихи, песни и т.д. |
|
| |
ЮМОР |
| анекдоты, приколы,
смешные истории |
|
| |
ЭРОТИКА |
| эротические рассказы,
книги о технике секса,
кама-сутра и др. |
|
|
| |
 |
(/= (cadr prev) (cadr pt))) :
:
; Изменить или сдвинуть бокс :
- 85 -
Руководство пользователя по АВТОЛИСПу
(progn :
(if (= mode 0) :
(setq center pt) :
(setq deltax (+ deltax (- (car pt) :
(car prev))))) :
(setq prev pt) :
(drawbox) ; Удалить старый блок :
:
; Ввести новый центр/размер и чертеж :
(newbox) :
))) :
((or (and (= source 6) (= pt 0)) ;lst меню клавиш(CR):
(and (= source 2) ; или клавиатура и :
(or (= pt 13) (= pt 32)))) ; CR или бланк? :
(drawbox) ;Удалить старый бокс:
(command "ZOOM" "W" ll ur) :
(setq loop nil)) ; Выход :
(T ;Любая grread переменная:
(drawbox) ;Удалить старый блок:
(setq loop nil a " ^cancel ")) ; Выход :
) :
) :
) :
:
5. 8. 8. Idle ( работать вхолостую)
Наконец, это та программа , которая иллюстрирует функции прямого
вывода на экран, также как и использование функции " ERROR".
; Команда IDLE
(defun "ERROR" (s) ; Ошибка наверху (или CTRL C)
(redraw) ; Перечерчивание на экране
(grtext) ; Повторный вызов меню/статус
; текста на экране
)
(defun C:IDLE ()
(setq vc (getvar "viewctr")) ; Вызов центральной точки на
; экран
(setq cx (car vc))
(setq cy (cadr vc))
(setq vc (/ (getvar "viewsize") 2))
(setq xmin (- cx vs)) ; Вычислить сторону квадрата
(setq xmax (+ cx vs))
(setq ymin (- cy vs))
(setq ymax (+ cy vs))
(setq xdir (/ vs 10) ydir xdir)
(setq cx (+ cx (* xdir 7)))
(setq cy (- cy (* ydir 3)))
(grclear) ; Чистый графический экран
; В статусе свободного участка
(grtext -1 " That's entertainment!')
- 86 -
Руководство пользователя по АВТОЛИСПу
; В координатах свободного участка
(grtext -2 "Press CANCEL to stop.")
; Набор начальной точки
(setq lp (list cx cy))
(while t ; Цикл навсегда ( ....до CTRL C)
(setq nx (+ cx xdir)) ; Набор конечной координаты Х
(if (or (> nx xmax) (< nx xmin))
(progn
(setq xdir (- xdir)) ; Соответствующий каталог Х
(setq nx cx)
)
)
(setq ny (+ cy ydir)) ; Набор конечной Y координаты
(if (or (> ny ymax) (< ny ymin))
(progn
(setq ydir (- ydir)) ; Соответствующий каталог Y
(setq ny cy)
)
)
(setq cx nx cy ny)
(grdraw lp (setq lp (list nx ny)) -1) ; Вычерчивание с"XOR ink"
)
)
Глава 6
УПРАВЛЕНИЕ ПАМЯТЬЮ
Эта глава применима только к системам MS-DOS/PS-DOS, базовыми си-
стемами UNIX она может быть игнорирована: в системе UNIX программы LISP
и объём данных практически неограничены .
Переменные , пользовательские определители ( user- defined) фун-
кций и стандартные функции, описанные в этом руководстве, все помещают-
ся в памяти вашего компьютера только на время сеанса редактирования в
системе AutoCAD. Когда AutoLISP загружен , он требует для себя два
больших участка памяти. Первый , называемый heap (или nodes ), это
участок , на котором хранятся все функции и переменные , больше пере-
менных и функций есть у вас (и больше комплексов ваших функций) -больший
heap space ( участок памяти) будет использован. Второй участок, назы-
ваемый stack ( стек ) , содержит аргументы функций и частично результа-
ты ; глубже "клубок" функций или больше повторений выполнения ваших фун-
кций - большая часть стека ( stack space ) использована.
По умолчанию размеры участков памяти:
heap 5.000 bytes
stack 5.000 bytes
AutoLISP, работая с AutoCADом, не может менять размеры участ-
ков памяти heap и stack. Если вы , вычисляя достачно большое количество
- 87 -
Руководство пользователя по АВТОЛИСПу
функций и переменных , израсходуете весь участок памяти heap, AutoLISP
выведет на дисплей сообщение об ошибке:
Insufficient node space
Недостаточное node пространство
и закончит выполнение текущей функции. Если недостаточно памяти , чтобы
загрузить AutoLISP , когда вы в AutoCADе , на экран дисплея будет вы-
ведено сообщение:
Insufficient memory - AutoLISP disabled
Недостаточно памяти - AutoLISP невозможен
AutoLISP не будет функционировать до тех пор, пока память не
будет предоставлена , и AutoCAD выполнится снова.
6. 1. Устанавливаемые AutoLISPом требования к памяти
Если вы опытный программист и хорошо знакомы с концепцией исполь-
зования "heap" и "stack" областей памяти в языках программирования , вы
можете по желанию использовать команду "SET" системы DOS, чтобы после
этого AutoLISP получил достаточную память для участков heap и
stack. Например, команды:
C>SET LISPHEAP=25000
C>SET LISPSTACK=10000
говорят AutoLISPу резервировать 25000 байтов памяти для участка heap,
и 10000 байтов для участка stack. Полный объем памяти для двух участков
не должен превышать 45000 байт.Если вы хотите,вы можете поместить
утверждения , подобные приведенным выше , в ваш файл " autoexec.bat",
и они будут выполняться всегда , когда вы включаете ваш компьютер.
Эти команды "SET" эффективны только в AutoLISPе , они не являются при-
чиной , того, что память вашего компьютера будет "погибшей"(" lost "),
пока AutoLISP не загружен.
6. 2. Восстанавливаемое NODE SPACE(участок памяти node)
Вы можете обнаружить, что некоторые созданные вами функции и пе-
ременные нужны вам только на некоторое время. Когда они вам бу-
дут уже не нужны, вы можете эффективно " не обнаружить" их, присваивая
им значение "nil". Например, если вы загрузились и использовали функцию
с именем SETUP , а дальше в ней не нуждаетесь , вы можете:
(setq setup nil),
чтобы избавиться от нее. Node (heap) участок памяти , используемый этой
функцией , восстановится, давая возможность использовать его другими
функциями и переменными.
Если вы хотите почистить(удалить) все функции и переменные , ко-
торые вы загрузили или определили во время этого сеанса редактирования,
это тоже легко можно сделать. AutoLISP обслуживает список с именем
ATOMLIST, который первоначально содержит имена всех системных ( system-
defined) функций и переменных. ( Если вы хотите видеть его содержание,
введите только "!atomlist" в ответ на подсказку AutoCADа "Command:")
|
adfun.ru
|
|
|
|