Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Построение трехмерной модели детали

 

 

Для построения трехмерной модели детали использовались следующие команды:

 

(command "region" объекты "") - объединение объектов в регион;

(command "extrude" объекты "" высота "") - выдавливание объекта;

(command "subtract" p1 "" p2 "") - вычитание одного объекта из другого, где p1 - объект, из которого вычитают; p2 - объект, который вычитают;

(command "elev" высота "") - указание уровня;

(command "union" объекты "") - сложение объектов;

(command "shademode" опции "") - закрашивание детали.


Результаты работы программы

 

Построение двумерного изображения детали

 



Заключение

 

В данном курсовом проекте были поставлены следующие задачи:

изучить принципы создания параметрических моделей;

изучить язык программирования AutoLisp;

написать программу построения двумерного изображения детали с простановкой размеров;

написать программу построения трехмерного изображения детали.

В ходе данной работы все поставленные задачи были выполнены.

Практическую ценность проделанной работы вижу в том, что:

во-первых, мною был получен опыт создания параметрических моделей;

во-вторых, мной были изучены основы языка AutoLisp, что дает мне возможность для дальнейшего совершенствования своих знаний.


Список использованных источников

 

1. Райц Н.Р., Лимарева И.Г. Методические указания по выполнению курсового проекта по дисциплине "Компьютерная графика и геометрическое моделирование". - КарГТУ, 2005.

2. Воевода Е.П., Райц Н.Р., Лимарева Н.Г. Учебное пособие по работе в системе AutoCAD 2000. - КарГТУ, 2004.

3. Воевода Е.П., Райц Н.Р., Лимарева Н.Г. Геометрическое моделирование в системе AutoCAD 2000. - КарГТУ, 2006.


Приложение

 

(Листинг программы)

Построение двумерного изображения детали

 

(defun c: mod2d (/ d1 d2 d3 w1 w2 w3 r1 r2 r3)

(command "erase" "all" "")

(command "ortho" "on")

(setvar "cmdecho" 1)

(command "limits" "0,0" "210,297")

(command "grid" "10")

(command "snap" "1")

(command "osnap" "off")

(command "layer" "m" "osn" "l" "continuous" "osn" "lw" "0.3" "osn" "")

(command "layer" "m" "osev" "l" "center" "osev" "lw" "0.05" "osev" "")

(command "layer" "m" "vsp" "l" "continuous" "vsp" "lw" "0.05" "vsp" "")

(command "_. regen")

(command "view" "t")

(setvar "lwdisplay" 1)

(command "layer" "s" "osn" "")

(setq d1 0)

(while (or (< d1 35) (> d1 45))

(initget 6)

(setq d1 (getreal "Введите наибольший диаметр детали <40>"))

(if (= d1 nil) (setq d1 40)))

(setq d2 0)

(while (or (< d2 26) (> d2 37))

(initget 6)

(setq d2 (getreal " Введите средний диаметр детали <32>"))

(if (= d2 nil) (setq d2 32)))

(setq d3 0)

(while (or (< d3 15) (> d3 25))

(initget 6)

(setq d3 (getreal " Введите наименьший диаметр детали <20>"))

(if (= d3 nil) (setq d3 20)))

(setq w1 0)

(while (or (< w1 17) (> w1 27))

(initget 6)

(setq w1 (getreal " Введите максимальную ширину детали <22>"))

(if (= w1 nil) (setq w1 22)))

(setq w2 0)

(while (or (< w2 10) (> w2 20))

(initget 6)

(setq w2 (getreal " Введите расстояние от верха детали до конца среднего кольца <15> "))

(if (= w2 nil) (setq w2 15)))

(setq w3 0)

(while (or (< w3 5) (> w3 15))

(initget 6)

(setq w3 (getreal " Введите высоту верхнего кольца детали <10>"))

(if (= w3 nil) (setq w3 10)))

(setq r1 0)

(while (or (< r1 65) (> r1 75))

(initget 6)

(setq r1 (getreal "Введите диаметр, проходящий через центр фигуры и центр отверстий <70>"))

(if (= r1 nil) (setq r1 70)))

(setq r2 0)

(while (or (< r2 2) (> r2 12))

(initget 6)

(setq r2 (getreal " Введите диаметр маленьких отверстий детали <7>"))

(if (= r2 nil) (setq r2 7)))

(setq r3 0)

(while (or (< r3 3) (> r3 13))

(initget 6)

(setq r3 (getreal " Введите радиус сопряжения детали <8>"))

(if (= r3 nil) (setq r3 8)))

(setq x (list 150 150))

(command "layer" "s" "osev" "")

(setvar "ltscale" 4)

(setq h (+ (/ r1 2) (/ d1 2) r3 r3))

(setq c1 (/ d1 2))

(setq c2 (/ d2 2))

(setq c3 (/ d3 2))

(setq os1 (list (- 150 c1 3) 150)

os2 (list (+ 150 c1 3) 150)

os3 (list (- 150 (/ h 2) 33 w1) 150)

os4 (list (- 150 (/ h 2) 27) 150)

os5 (list 150 (+ 150 (/ r1 2) r3 3))

os7 (list 150 (- 150 c1 r3 3)))

(command "line" os1 os2 "")

(command "line" os3 os4 "")

(command "line" os5 x "")

(setq l1 (entlast))

(command "line" x os7 "")

(setq n1 (entlast))

(command "layer" "s" "osn" "")

(command "circle" x c1)

(command "circle" x c2)

(command "circle" x c3)

(command "layer" "s" "osev" "")

(command "circle" x (/ r1 2))

(command "layer" "s" "osn" "")

(setq b1 (list 150 (+ 150 (/ r1 2))))

(command "circle" b1 (/ r2 2))

(setq kr1 (entlast))

(command "circle" b1 r3)

(setq kr2 (entlast))

(command "array" l1 kr1 kr2 "" "P" x "2" "-120" "")

(setq mas2 (entlast))

(command "array" l1 kr1 kr2 "" "P" x "2" "120" "")

(setq mas (entlast))

(command "osnap" "tan")

(setq t1 (list (- 150 r3) (cadr b1)))

(setq t2 (list (- 150 (/ r1 2) (/ r3 2)) (- 150 c2)))

(command "line" t1 t2 "")

(setq l2 (entlast))

(setq t3 (list (car t2) (- (cadr t2) r2)))

(setq t4 (list (+ 150 (/ r1 2) (/ r3 2)) (cadr t3)))

(command "line" t3 t4 "")

(setq l3 (entlast))

(setq t5 (list (+ 150 r3) (cadr b1)))

(setq t6 (list (car t4) (cadr t2)))

(command "line" t5 t6 "")

(setq l4 (entlast))

(command "trim" l2 l3 l4 "" kr2 mas2 mas "")

(command "erase" mas "" "")

(command "fillet" "r" "8")

(command "fillet" l2 l3 "")

(setq arc1 (entlast))

(command "trim" l3 "" n1 "")

(command "lengthen" "de" "3" n1 "")

(command "lengthen" "de" (+ 40 h) l3 "")

(command "osnap" "int")

(setq ss (list (car t3) (- (cadr t3) 2)))

(setq os8 (list (car os4) (cadr b1)))

(setq os9 (list (- (car os8) 6 (- w1 w2)) (cadr b1)))

(command "layer" "s" "osev" "")

(command "line" os8 os9 "")

(command "layer" "s" "osn" "")

(setq k1 (list (- (car os8) 3) (+ 150 (- (/ r1 2) (/ r2 2)))))

(setq k2 (list (- (car k1) (- w1 w2)) (cadr k1)))

(command "line" k1 k2 "")

(setq k3 (list (car k1) (+ 150 (/ r1 2) (/ r2 2))))

(setq k4 (list (car k2) (cadr k3)))

(command "line" k3 k4 "")

(setq k5 (list (car k1) (+ 150 c3)))

(setq k6 (list (- (car k1) w1) (cadr k5)))

(command "line" k5 k6 "")

(setq k7 (list (car k1) (- 150 c3)))

(setq k8 (list (car k6) (cadr k7)))

(command "line" k7 k8 "")

(setq a1 (list (car k1) (- 150 (/ r1 2))))

(setq a2 (list (car k2) (cadr a1)))

(setq a3 (list (car k2) (- 150 c1)))

(setq a4 (list (- (car k1) (- w1 w3)) (cadr a3)))

(setq a5 (list (car a4) (cadr t2)))

(setq a6 (list (car k6) (cadr t2)))

(setq a7 (list (car k6) (+ 150 c2)))

(setq a8 (list (car a4) (cadr a7)))

(setq a9 (list (car a4) (+ 150 c1)))

(setq a10 (list (car k2) (cadr a9)))

(setq a11 (list (car k2) (- (cadr os5) 3)))

(setq a12 (list (car k1) (cadr a11)))

(command "line" a1 a2 "")

(setq l5 (entlast))

(command "line" a2 a3 "")

(setq l6 (entlast))

(command "line" a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 "")

(command "line" a12 a1 "")

(setq l7 (entlast))

(command "trim" l7 l6 arc1 "" l3 "")

(command "trim" l7 l3 "" l7 l6"")

(command "erase" l5 "" "")

(command "trim" arc1 l7 "" ss "")

(setq m1 (list (- (car os4) 4) (+ (cadr k1) 1)))

(setq m2 (list (car m1) (+ (cadr k3) 1)))

(setq m3 (list (car m1) (- (cadr k7) 1)))

(command "layer" "s" "vsp" "")

(command "bhatch" "p" "ansi31" "0.5" "0" m1 "")

(command "bhatch" "p" "ansi31" "0.5" "0" m2 "")

(command "bhatch" "p" "ansi31" "0.5" "0" m3 "")

(command "style" "Марьяна" "isocpeur" "2.5" "1" "15" "n" "n" "y")

(setvar "dimtxsty" "Марьяна")

(command "dimstyle" "s" "Марьяна" "y")

(command "dimstyle" "r" "Марьяна")

(setq raz1 (list (- 150 (/ h 2) w1 40) 150))

(setq raz2 (list (- (car raz1) 7) 150))

(setq raz3 (list (- (car raz1) 14) 150))

(setq raz4 (list (+ (car raz1) 10) (- (cadr raz1) c2 10)))

(setq raz5 (list (- 150 (/ h 2) (- w1 w2) 40) (- 150 c2 17)))

(setq raz6 (list (car raz4) (- (cadr raz5) 7)))

(setq raz7 (list 150 (- (cadr a11) r3)))

(setq raz8 (list (+ 150 c3) (cadr k5)))

(setq raz9 (list 145 (+ (cadr raz7) r3)))

(setq raz10 (list (- 150 c3) (cadr a11)))

(setq raz11 (list 150 (+ 150 (/ r1 3))))

(setq raz12 (list (car t3) (cadr t3)))

(setq raz13 (list (- 150 (/ r1 2) r3 10) 150))

(setq raz14 (list 150 (+ (cadr b1) (/ r2 2))))

(setq raz15 (list (car raz8) (+ (cadr b1) r3)))

(command "dimlinear" k7 k5 "m" "%%c<>" raz1)

(setq p_raz9 (osnap raz9 "nea"))

(setq p_raz14 (osnap raz14 "tan"))

(command "dimlinear" a5 a8 "m" "%%c<>" raz2)

(command "dimlinear" a3 a10 "m" "%%c<>" raz3)

(command "dimlinear" a5 k8 raz4)

(command "dimlinear" a3 k8 raz5)

(command "dimlinear" k7 k8 raz6)

(command "dimdiameter" raz7 raz8)

(command "dimradius" p_raz9 raz10)

(command "dimangular" raz11 raz12 raz13)

(command "dimradius" p_raz14 raz15)

(command "line" "20,5" "205,5" "")

(command "line" "205,5" "205,292" "")

(command "line" "205,292" "20,292" "")

(command "line" "20,292" "20,5" "")

(command "line" "20,60" "205,60" "")

(command "_. zoom" "e")

)


Построение трехмерного изображения детали

 

(defun c: mod3d (/ d1 d2 d3 w1 w2 w3 r1 r2 r3)

(command "erase" "all" "")

(setvar "cmdecho" 1)

(command "limits" "0,0" "210,297")

(command "snap" "1")

(command "layer" "m" "osn" "l" "continuous" "osn" "lw" "0.3" "osn" "")

(command "_. regen")

(command "view" "t")

(setvar "lwdisplay" 1)

(setq d1 0)

(while (or (< d1 35) (> d1 45))

(initget 6)

(setq d1 (getreal "Введите наибольший диаметр детали <40>"))

(if (= d1 nil) (setq d1 40)))

(setq d2 0)

(while (or (< d2 26) (> d2 37))

(initget 6)

(setq d2 (getreal " Введите средний диаметр детали <32>"))

(if (= d2 nil) (setq d2 32)))

(setq d3 0)

(while (or (< d3 15) (> d3 25))

(initget 6)

(setq d3 (getreal " Введите наименьший диаметр детали <20>"))

(if (= d3 nil) (setq d3 20)))

(setq w1 0)

(while (or (< w1 17) (> w1 27))

(initget 6)

(setq w1 (getreal " Введите максимальную ширину детали <22>"))

(if (= w1 nil) (setq w1 22)))

(setq w2 0)

(while (or (< w2 10) (> w2 20))

(initget 6)

(setq w2 (getreal " Введите расстояние от верха детали до конца среднего кольца <15> "))

(if (= w2 nil) (setq w2 15)))

(setq w3 0)

(while (or (< w3 5) (> w3 15))

(initget 6)

(setq w3 (getreal " Введите высоту верхнего кольца детали <10>"))

(if (= w3 nil) (setq w3 10)))

(setq r1 0)

(while (or (< r1 65) (> r1 75))

(initget 6)

(setq r1 (getreal "Введите диаметр, проходящий через центр фигуры и центр отверстий <70>"))

(if (= r1 nil) (setq r1 70)))

(setq r2 0)

(while (or (< r2 2) (> r2 12))

(initget 6)

(setq r2 (getreal " Введите диаметр маленьких отверстий детали <7>"))

(if (= r2 nil) (setq r2 7)))

(setq r3 0)

(while (or (< r3 3) (> r3 13))

(initget 6)

(setq r3 (getreal " Введите радиус сопряжения детали <8>"))

(if (= r3 nil) (setq r3 8)))

(setq x (list 150 150))

(setq h (+ (/ r1 2) (/ d1 2) r3 r3))

(setq c1 (/ d1 2))

(setq c2 (/ d2 2))

(setq c3 (/ d3 2))

(command "layer" "s" "osn" "")

(setq b1 (list 150 (+ 150 (/ r1 2))))

(command "circle" b1 (/ r2 2))

(setq kr1 (entlast))

(command "circle" b1 r3)

(setq kr2 (entlast))

(command "array" kr2 "" "P" x "2" "-120" "")

(setq mas2 (entlast))

(command "array" kr1 "" "P" x "2" "-120" "")

(setq mas22 (entlast))

(command "array" kr2 "" "P" x "2" "120" "")

(setq mas (entlast))

(command "array" kr1 "" "P" x "2" "120" "")

(setq mass (entlast))

(command "osnap" "tan")

(setq t1 (list (- 150 r3) (+ 150 (/ r1 2))))

(setq t2 (list (- 150 (/ r1 2) (/ r3 2)) (- 150 c2)))

(command "line" t1 t2 "")

(setq l2 (entlast))

(setq t3 (list (car t2) (- (cadr t2) r2)))

(setq t4 (list (+ 150 (/ r1 2) (/ r3 2)) (cadr t3)))

(command "line" t3 t4 "")

(setq l3 (entlast))

(setq t5 (list (+ 150 r3) (+ 150 (/ r1 2))))

(setq t6 (list (car t4) (cadr t2)))

(command "line" t5 t6 "")

(setq l4 (entlast))

(command "trim" l2 l3 l4 "" kr2 mas2 mas "")

(command "erase" mas "" "")

(command "fillet" "r" r3)

(command "fillet" l2 l3)

(setq arc1 (entlast))

(command "circle" x c3)

(setq rad3 (entlast))

(entdel kr1)

(entdel mass)

(entdel mas22)

(entdel rad3)

(setq h1 (- w1 w2))

(command "region" "all" "")

(command "extrude" "all" "" h1 "")

(setq reg1 (entlast))

(entdel kr1)

(command "extrude" kr1 "" h1 "")

(setq en1 (entlast))

(entdel mass)

(command "extrude" mass "" h1 "")

(setq en2 (entlast))

(entdel mas22)

(command "extrude" mas22 "" h1 "")

(setq en3 (entlast))

(command "subtract" reg1 "" en1 en2 en3 "")

(command "elev" h1 "")

(command "circle" x c1)

(setq rad1 (entlast))

(setq h2 (- w2 w3))

(command "extrude" rad1 "" h2 "")

(setq kol1 (entlast))

(command "elev" (+ h1 h2)"")

(command "circle" x c2)

(setq rad2 (entlast))

(command "extrude" rad2 "" w3 "")

(setq kol2 (entlast))

(command "union" reg1 kol1 kol2 "")

(setq reg2 (entlast))

(command "elev" "0" "")

(entdel rad3)

(command "extrude" rad3 "" w1 "")

(setq cil (entlast))

(command "subtract" reg2 "" cil "")

(command "shademode" "F" "")

(command "_. zoom" "e")

)

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...