Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Работа с графическими объектами AutoCAD с использованием языка AutoLISP. Учебно-методическое пособие

.pdf
Скачиваний:
0
Добавлен:
12.08.2026
Размер:
879 Кб
Скачать

14

15

16

17

18

41

19

20

21

22

23

42

24

25

43

Лабораторная работа №6 Создание пространственной параметрической модели

конструкции с использованием операций циклического повторения.

Работа с пользовательскими функциями

; получение точки симметрично оси Y, ; проходящей через заданную точку

(defun sym_coor (pt_axis pt / dx x x_axis)

(setq

x_axis (car pt_axis)

 

x

(car pt)

 

dx

(- x x_axis)

 

)

 

 

 

 

(list (- x_axis dx) (cadr pt))

 

)

 

 

 

 

(defun c:sym ()

 

 

(setq

pt_ins

(getpoint "\nТочка вставки:")

l1

(getdist pt_ins "\nL1=")

l_05

(/ l1 2)

 

l2

(getdist pt_ins "\nL2=")

h

(getdist pt_ins "\nH=")

x_ins

(car pt_ins)

 

y_ins

(cadr pt_ins)

 

pt1

(list (+ x_ins l_05)

y_ins)

pt2

(list (+ x_ins l_05 l2) (+ y_ins h) )

pt1_sym (sym_coor pt_ins pt1)

pt2_sym

(sym_coor pt_ins

pt2)

)

 

 

 

 

(setvar "OSMODE" 0)

(command "_PLINE" pt1 pt2 pt2_sym pt1_sym "_C")

)

Рисование проекции шлицевой головки шурупа

(defun shlic (pt r alfa / pt1 pt2) (setq pt1 (polar pt alfa r)

44

pt2 (polar pt (+ alfa pi) r)

)

(command "_circle" pt r) (command "_line" pt1 pt2 "")

)

Функция рисования фасонки

(defun draw_fas ( ptc h l1 l2 / xc yc l1_05 l2_05 pt1 pt2 pt3 pt4)

(setq xc

(car ptc)

 

 

yc

(cadr ptc)

 

 

l1_05

(/

l1 2)

 

 

l2_05

(/

l2 2)

 

 

pt1

(list (- xc l1_05)

yc)

pt2

(list (+ xc l1_05)

yc)

pt3

(list (- xc l2_05)

(+

yc h))

pt4

(list (+ xc l2_05)

(+

yc h))

)

(command "_SOLID" pt1 pt2 pt3 pt4 "")

)

Рисование прямоугольной фермы c фасонками в узлах.

(defun c:f_orthof ( / )

(setq osmode_old (getvar "OSMODE")

pt_ins (getpoint

"\nУкажите точку вставки : ")

hf

(getdist

pt_ins "\nЗадайте высоту фермы : ")

lf

(getdist

pt_ins "\nЗадайте пролёт фермы : ")

n_ots (getint

 

"\nЗадайте число отсеков: ")

 

 

 

45

dx

(/ lf n_ots)

x_ins

(car pt_ins)

y_low

(cadr pt_ins)

y_up

(+ y_low hf)

x_cur x_ins

h_fas

(/ hf 10.0)

l1_fas

(* h_fas 0.8)

l2_fas

(* h_fas 0.4)

)

(setvar "OSMODE" 0)

; пояса

(repeat n_ots

(setq pt1_low (list x_cur y_low) pt1_up (list x_cur y_up) x_cur (+ x_cur dx) pt2_low (list x_cur y_low) pt2_up (list x_cur y_up)

)

(command "_LINE" pt1_low pt2_low "") (command "_LINE" pt1_up pt2_up "")

) ; end repeat

; стойки и фасонки

(setq x_cur x_ins ) (repeat (+ n_ots 1)

(setq pt1 (list x_cur y_low) pt2 (list x_cur y_up)

)

(command "_LINE" pt1 pt2 "" )

(draw_fas

pt1

h_fas l1_fas l2_fas)

(draw_fas

pt2

(* -1.0 h_fas) l1_fas l2_fas)

(setq x_cur (+ x_cur dx)) ) ; end repeat

(setvar "OSMODE" osmode_old ) (princ)

46

)

Задание: Рисование пространственной фермы c помощью функций. Вариант задания берем из предыдущей лабораторной работы.

Функция рисования поясов

(defun line_poys ( pt1 pt2 a b w / l ang ptc1 ptc2 ptc3 ptc4) (setq l (distance pt1 pt2)

ptc1 (list (* -0.5 a) (* -0.5 b) ) ptc2 (list (* 0.5 a) (* -0.5 b) ) ptc3 (list (* 0.5 a) (* 0.5 b) ) ptc4 (list (* -0.5 a) (* 0.5 b) )

)

(command "_UCS" "_ZAXIS" pt1 pt2)

(command "_POLYSOLID" "_H" l "_W" w ptc1 ptc2 ptc3 ptc4 "_C")

(command "_UCS" "_P")

)

Функция рисования стоек

(defun line_stoyki ( pt1 pt2 r / l) (setq l (distance pt1 pt2))

(command "_UCS" "_ZAXIS" pt1 pt2) (command "_CYLINDER" '(0 0 ) r l) (command "_UCS" "_P")

)

Рисование фермы

(command "_UCS" "_W" pt_ins)

; сохранение тек. режима объект. прив.

(setq osmode_old (getvar "OSMODE")

pt_ins (getpoint

"\nУкажите точку вставки : ")

hf

8 ;(getdist

pt_ins "\nЗадайте высоту фермы : ")

lf

40 ;(getdist

pt_ins "\nЗадайте пролёт фермы : ")

bf

6

 

 

 

47

n_ots

10 ;(getint

"\nЗадайте число отсеков: ")

al

0.6

 

bl

0.5

 

wl

0.02

 

au

0.8

 

bu

0.6

 

wu

0.03

 

r

0.15

 

dx

(/ lf n_ots)

 

)

 

 

(command "_UCS" "_O" pt_ins) (command "_UCS" "_X" 90.0) (setq

x_ins 0.0 y_low 0.0 y_up hf x_cur x_ins

)

(setvar "OSMODE" 0) ; пояса

(repeat n_ots

(setq pt1_low (list x_cur y_low 0) pt1_up (list x_cur y_up 0) pt1_lowz (list x_cur y_low bf) pt1_upz (list x_cur y_up bf) x_cur (+ x_cur dx)

pt2_low (list x_cur y_low 0) pt2_up (list x_cur y_up 0) pt2_lowz (list x_cur y_low bf) pt2_upz (list x_cur y_up bf)

)

(command "_color" "_RED") (line_poys pt1_low pt2_low al bl wl) (line_poys pt1_up pt2_up au bu wu)

48

(line_poys

pt1_lowz pt2_lowz

al bl wl)

(line_poys

pt1_upz pt2_upz

au bu wu)

; ветровые раскосы

 

(command "_color" "_GREEN")

(line_stoyki

pt1_low pt2_lowz r)

(line_stoyki

pt2_low pt1_lowz r)

(line_stoyki

pt1_up pt2_upz r)

(line_stoyki

pt2_up pt1_upz r)

) ; end repeat

 

 

; стойки

 

 

 

(setq x_cur

x_ins )

 

(repeat (+ n_ots 1)

 

(setq pt1

 

(list x_cur y_low 0)

pt2

(list x_cur y_up 0)

 

pt1z

(list x_cur y_low bf)

 

pt2z

(list x_cur y_up bf)

 

x_cur

(+ x_cur dx)

 

)

(command "_color" "_BLUE") (line_stoyki pt1 pt2 r) (line_stoyki pt1z pt2z r) (command "_color" "_GREEN") (line_stoyki pt1 pt1z r) (line_stoyki pt2 pt2z r)

) ;end repeat

(setvar "OSMODE" osmode_old ) (command "_UCS" "_W" pt_ins) (princ)

49

Задания к лабораторной работе № 6

Поперечные сечения элементов фермы

50

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]