| |
BIGLIB |
| большущая библиотека (9812 книг), можно не только прочитать но и скачать бесплатно |
|
| |
ФАНТАСТИКА |
| фентези,
фантастика, фантастические повести |
|
| |
ФИЛОСОФИЯ |
книги, которые заставляют
задуматься над окружающим тебя миром.
|
|
| |
МЕДИЦИНА |
медицинские книги,
методички,
народные лечебники |
|
| |
КУЛИНАРИЯ |
рецепты
тортов, консервирование,
все о спиртных
напитках. |
|
| |
СТИХИ |
| стихи популярных
и не очень авторов |
|
| |
ТВОРЧЕСТВО |
| народное творчество,
стихи, песни и т.д. |
|
| |
ЮМОР |
| анекдоты, приколы,
смешные истории |
|
| |
ЭРОТИКА |
| эротические рассказы,
книги о технике секса,
кама-сутра и др. |
|
|
| |
 |
аттрибуты), просматривая аттрибуты "REVDATE". Обнаруженная переменная
аттрибутов изменится и блок введется.
5. 8. 6. Список типов линий
:
Этот пример использует функции доступа к таблице символов, чтобы :
внести в список имена и определения всех текуще-загруженных типов линий.:
- 82 -
Руководство пользователя по АВТОЛИСПу
:
:
; Пустая-полная данная строка ,которая определяет количество :
; знаков. :
:
(defun strfill (s len) :
(substr (strcat s " ") 1 len) :
) :
; Возврат переменной , связанной с отдельной группой примитива :
:
(defun fld (num lst) :
(cdr (assoc num lst)) :
:
; Список загруженных типов линий :
:
(defun C:LTYPES (/ a cl d f lt s x) :
(textscr) ; Вывод текста на экран :
(write line " Linetype Align Segs Description") :
(terpri) :
(setq cl (getvar "CELTYPE") f " ") ; Текущий тип линии, :
; "регистр" флажка :
:
; Если текущий тип линии "BYLAYER", справься о текущем уровне :
; Провести линию и изменить "регистр" флажка с"" на "L" :
:
(setq cl :
(cond ((= cl "BYBLOCK") "") :
((= cl "BYLAYER") (setq f "L ") :
(fld 6 (tblsearch "LAYER" (getvar "CLAYER")))) :
(T cl) :
)) :
(setq x (tblnext "LTYPE" T)) ; Первый тип линии :
(while x :
(setq lt (fld 2 x) ; Имя типа линии :
d (fld 3 x) ; Простое описание типа :
; линии :
a (fld 72 x) ; Выравненный код :
s (fld 73 x) ; Длина каждого штриха :
:
) :
(write line :
(strcat :
(if (=lt cl) f " ") ; Регистр флажка прими- :
; тива линии :
(strfill lt 12) ; Редактор имени :
; уровня :
(strfill (chr a) 7) ; Выравненный код :
(strfill (itoa s) 6) ; Длина черточки :
; элементов :
(substr d 1 30) ; Описание типа линии :
)) :
(if (> s 0) (progn ; Если любой отдельный :
;элемент,редактируйте его :
(setq x (member (assoc 49 x) x)) ; Введите список каждого :
; элемента :
(while x :
- 83 -
Руководство пользователя по АВТОЛИСПу
(setq s (cdar x)) ; Введите длину штриха :
(write line :
(strcat :
(strfill " " 27) :
(cond ((= s 0) "Dot") :
((> s 0) (strcat "Pen down" (rtos s 2 4))) ;
(T (strcat "Pen up" (rtos (abs s) 2:
4))) :
))) :
(setq x (cdr x)) ; Введите следующий :
; элемент :
))) :
(setq x (tblnext "LTYPE")) ; Введите следующий :
; тип линии :
) :
(terpri) :
) :
:
:
5. 8. 7. Воображаемое окошко (ZOOM Window ) :
:
Эта программа использует функции механизма доступа, который выпо-:
лняет фантазию ZOOM Window ( масштаб в окошке), позволяющую вам уста- :
новить триггер между перемещенным и измененным размером в боксе. :
:
; ZOOM Window подобен ZOOM Dynamic, исключает выполнение на те- :
; кущем дисплее без ручной клавиатуры , кроме клавиш пробел , :
; возврат и клавиши со стрелкой. :
:
(defun drawbox () ; Вычерчивание бокса :
(grdraw ll ul 1) (grdraw ul ur 1) :
(grdraw ur lr 1) (grdraw lr ll 1) :
(if (= mode 0) (cenx) (arrow) :
) :
(defun cenx () ; Определение центра Х:
(grdraw x1 x2 1) (grdraw x3 x4 1) :
) :
(defun arrow () ; Вычерчивание стрелок:
(grdraw a1 a4 1) (grdraw a2 a4 1) (grdraw a3 a4 1) :
) :
(defun newbox () ; Переопределение па- :
; раметров бокса & :
; draw :
(setq deltay (* deltax aspect)) ; Допускает , что del- :
; tax & был центр :
:
; Переустановка в более высокий уровень :
(setq xcen (car center) ycen (cadr center)) :
:
; Понижение/повышение X/Y для бокса : :
(setq lx (- xcen deltax) ux (+ xcen deltax)) :
:
(setq ly (- ycen deltay) uy (+ ycen deltay)) :
(setq ll (list lx ly) ul (list lx ly)) ; Углы бокса :
(setq ur (list ux uy) lr (list ux ly)) :
:
- 84 -
Руководство пользователя по АВТОЛИСПу
; Повышение/понижение Y перекрестия & стрелки :
(setq yp (+ ycen arm) ym (- ycen arm)) :
:
; Левый наклон стрелки :
(setq al (list (- ux arm) yp) a2 (list (-ux arm) ym)) :
:
(setq a3 (list (- ux arm arm) ycen)) ; Хвост стрелки :
:
; Правый конец всех трех :
(setq a4 (list ux ycen)) :
(setq x1 (list (- xcen arm) ym) x2 (list (+ xcen arm) yp)) :
:
; Концы по X :
(setq x3 (list (- xcen arm) yp) x4 (list (+ xcen arm) ym)) :
(drawbox) :
) :
:
(defun C:ZW (/ arm aspect center deltax inp loop mode prev :
pt sourse) :
:
; Запуск на центр экрана :
(setq center (getvar "VIEWCTR")) :
:
; Попытка переместить курсор с центра :
(setvar "LASTPOINT" (setq prev center)) :
:
(setq aspect (/ (cadr (aetq aspect (getvar "SCREENSIZE"))) :
(car aspect))) :
:
; Использование 1/4 бокса экрана :
(setq deltax (* 0.25 (getvar "VIEWSIZE"))) :
:
; Первоначальный режим движения в боксе :
(setq arm (* 0.1 deltax) mode 0 loop T) :
(newbox) :
(while loop :
(setq inp grread T)) ; Выход прослеженный :
:
; Изолирование источника и # или точки :
(setq source (car inp) pt (cadr inp)) :
(cond ((= source 3) ; "Pick"(выбрать) клавишей? :
(cenx) (arrow) ; Уничтожить Х & начертить :
; или дефекты многочисленны :
:
; Триггер в режиме бокса :
(setq mode (- 1 mode)) :
:
; Попытка переместить курсор с центра :
(setvar "LASTPOINT" center)) :
((= source 5)) ; Выслеженная точка? :
:
; Если ее сдвинуть... :
(if (or (/= (car prev) (car pt)) :
|
adfun.ru
|
|
|
|