Работа с графическими объектами AutoCAD с использованием языка AutoLISP. Учебно-методическое пособие
.pdf
4
5
6
21
7
8
9
22
10
11
12
23
13
14
15
24
16
17
18
25
19
20
21
26
22
23
24
27
Лабораторная работа №4 Циклические операции
Задание: На языке AutoLISP написать программу рисования примитивов (см. рис.). Число повторений, точку вставки и основные размеры задавать в командной строке.
Цикл REPEAT
Рисование ряда окружностей
(setq ptc |
(getpoint "\nНачальная точка:") |
r |
(getdist ptc "\nr=") |
dx |
(getdist ptc "\nРасст. между окружностями:") |
x(car ptc)
y(cadr ptc)
) |
|
(repeat |
10 |
(command "_CIRCLE" (list x y) r) |
|
(setq |
x (+ x dx) ) |
) |
|
(princ) |
|
Цикл REPEAT вложенный
Рисование рядов окружностей
28
(setq ptc |
(getpoint "\nНачальная точка:") |
r |
(getdist ptc "\nr=") |
dx |
(getdist ptc "\nГор. расст. между окружн.:") |
dy |
(getdist ptc "\nВерт. расст. между окружн.:") |
xn |
(car ptc) |
y |
(cadr ptc) |
x |
xn |
) |
|
(repeat 3 |
|
(repeat |
10 |
(command "_CIRCLE" (list x y) r) |
|
(setq |
x (+ x dx) ) |
) ; end repeat |
|
(setq x xn |
|
y (+ y dy) |
|
)
) ;end repeat (princ)
Зигзаг
(setq ptc (getpoint "\nНачальная точка:")
n |
(getint "\nЧисло повторений") |
dx |
(getdist ptc "\ndx=") |
dy |
(getdist ptc "\ndy=") |
znak 1.0
x(car ptc)
y(cadr ptc)
)
(repeat n
(setq pt1 (list x y)
x(+ x dx)
y(+ y (* dy znak)) znak (* -1.0 znak) pt2 (list x y)
29
)
(command "_LINE" pt1 pt2 "")
)
3D фигура
(command "_-view" "_swiso") (command "_vscurrent" "_R") (command "_OSNAP" "_NON")
(setq ptc (getpoint "\nНачальная точка:") n (getint "\nЧисло повторений")
dx (getdist ptc "\ndx=") shape 1
x(car ptc)
y(cadr ptc)
r(/ dx 3)
h(* dx 0.7)
)
(repeat n (repeat 3
(if (= shape 1) (command "_cone" ptc r h)) (if (= shape 2) (command "_sphere" ptc r)) (if (= shape 3)
(progn
(command "_cylinder" ptc r h) (setq shape 0)
) |
|
) |
|
(setq x |
(+ x dx) |
ptc |
(list x y) |
shape (+ shape 1)
)
); end repeat ) ; end repeat
30
