Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Государственное образовательное учреждение высшего профессионального образования
Уфимский государственный авиационный технический университет
Кафедра вычислительной математики и кибернетики
Расчетно-графическая работа
по дисциплине
«Системы автоматизированного проектирования»
Выполнил:
студент группы: ПРО-301
Юлыев И.З.
Проверила: к.т.н., доцент
Верхотурова Г.Н.
Уфа 2013
Получение навыков по оформлению сопроводительной документации в ходе написания программы.
Задание:
Написать программу на языке AutoLISP, которая описывает в параметрическом виде разрез заданной детали и позволяет:
Жесткая параметризация режим параметрического конструирования, при котором конструктор полностью задает все необходимые связи, однозначно определяя форму геометрической модели изделия. В этом случае изменение какого-либо параметра или переопределение связей влечет за собой автоматическое изменение геометрической модели и не требует от конструктора выполнения каких-либо действий по модификации геометрической модели.
Процесс параметрического моделирования можно описать следующим образом: в ходе построения система накапливает конструкционные параметры и соотношения между ними, а также создает протокол (историю) создания геометрии, позволяя легко модифицировать и регенерировать модель.
Эскиз должен использоваться на этапе программирования как пособие для верного понимания детали и как руководство к расчету точек, необходимых для отображения детали.
Начальная точка р0, выбранная пользователем:
(setq p0 (list x y))
Расчет точек
(setq p1 (list x (+ y a1)))
(setq p2 (list (- x b1) (cadr p1)))
(setq p3 (list (car p2) (+ (cadr p2) a2)))
(setq p4 (list (+ (car p3) b2) (cadr p3)))
(setq p5 (list (car p4) (- (cadr p4) d1)))
(setq p6 (list (- (car p5) (- b2 d1)) (cadr p5)))
(setq p7 (list (car p6) (- (cadr p4) (- a2 d1))))
(setq p8 (list (+ (car p7) b1) (cadr p7)))
(setq p9 (list (car p8) (- (cadr p8) (+ a1 d1))))
(setq l0 (list (car p2) (+ (cadr p2)
(- (/ (- (cadr p3) (cadr p2)) 2.0) (/ a3 2.0)))))
(setq l1 (list (- (car l0) d2) (cadr l0)))
(setq l2 (list (car l1) (+ (cadr l1) a3)))
(setq l3 (list (+ (car l2) d2) (cadr l2)))
(setq o1 (list (car l1) (+ (cadr p2) (- (/ (- (cadr p3) (cadr p2)) 2.0) (/ r 2.0)))))
(setq o2(list (+ (car o1) (+ d1 d2)) (cadr o1)))
(setq o3 (list (car o1) (+ (cadr o1) r)))
(setq o4 (list (car o2) (cadr o3)))
(setq sht1(list (+ (car p1) 1) (+ (cadr p1) 1)))
(setq sht2(list (- (car p5) 1) (+ (cadr p5) 1)))
(setq s0 (list (+ x 50.0) y))
(setq s1 (list (car s0) (cadr p3)))
(setq s2 (list (+ (car s1) e) (cadr s1)))
(setq s3 (list (car s2) (cadr s0)))
(setq s4 (list (car s0) (cadr p1)))
(setq s5 (list (car s3) (cadr s4)))
(setq s6 (list (+(car s4)(/(- e c)2.0)) (cadr l1)))
(setq s7 (list (-(car s3)(/(- e c)2.0)) (cadr s6)))
(setq s8 (list (car s6) (cadr l2)))
(setq s9 (list (car s7) (cadr s8)))
(setq f0 (list
(+(car s0) (/(-(car s3)(car s0)) 2.0))
(+(cadr s6) (/(-(cadr s8)(cadr s6)) 2.0))
))
(setq os1 (list (car o1)(cadr f0)))
(setq os2 (list (car o4)(cadr f0)))
(setq os3 (list (car f0)(cadr s1)))
(setq os4 (list (car f0)(cadr s0)))
(setq os5 (list (car s0)(cadr f0)))
(setq os6 (list (car s3)(cadr f0)))
Прорисовка
Линия (p0 p1 p2 p3 p4 p5 p6 p7 p8 p9 p0)
Линия (l0 l1 l2 l3)
Линия (01 04)
Линия (02 03)
Линия (S0 S1 S2 S3 S0)
Линия (S4 S5)
Линия (S6 S8 S9 S7 S7)
Линия (OS1 OS2)
Линия (OS3 OS4)
Линия (OS5 OS6)
Окружность (fo,r)
Исходный текст
(defun c:q ()
(new) ;загрузка слоев
(param);получение размеров
(command "_erase" "В" "")
(setq p0 (list x y))
(setq p1 (list x (+ y a1)))
(setq p2 (list (- x b1) (cadr p1)))
(setq p3 (list (car p2) (+ (cadr p2) a2)))
(setq p4 (list (+ (car p3) b2) (cadr p3)))
(setq p5 (list (car p4) (- (cadr p4) d1)))
(setq p6 (list (- (car p5) (- b2 d1)) (cadr p5)))
(setq p7 (list (car p6) (- (cadr p4) (- a2 d1))))
(setq p8 (list (+ (car p7) b1) (cadr p7)))
(setq p9 (list (car p8) (- (cadr p8) (+ a1 d1))))
(command "_layer" "У" "Контур" "") (command ) (command )
;башенка
(setq l0
(list
(car p2)
(+ (cadr p2) (- (/ (- (cadr p3) (cadr p2)) 2.0) (/ a3 2.0)))
)
)
(setq l1 (list (- (car l0) d2) (cadr l0)))
(setq l2 (list (car l1) (+ (cadr l1) a3)))
(setq l3 (list (+ (car l2) d2) (cadr l2)))
(command "_Line" p0 p1 p2 l0 "" "_Line" l3 p3 p4 p5 p6 p7 p8 p9 p0 "")
(command "_Line" l0 l1 l2 l3 "")
(setq o1 (list (car l1) (+ (cadr p2) (- (/ (- (cadr p3) (cadr p2)) 2.0) (/ r 2.0)))))
(setq o2(list (+ (car o1) (+ d1 d2)) (cadr o1)))
(setq o3 (list (car o1) (+ (cadr o1) r)))
(setq o4 (list (car o2) (cadr o3)))
(if (< 0 r)
(command "_Line" o1 o2 "" "_Line" o3 o4 ""))
;штиховка
(setq sht1(list (+ (car p1) 1) (+ (cadr p1) 1)))
(setq sht2(list (- (car p5) 1) (+ (cadr p5) 1)))
(command "_layer" "У" "Штриховка" "") (command ) (command )
(command "-штрих" "С" "ANSI31" "1" "0" sht1 "")
(command "-штрих" "С" "ANSI31" "1" "0" sht2 "")
;второй вид
(command "_layer" "У" "Контур" "") (command ) (command )
(setq s0 (list (+ x 50.0) y))
(setq s1 (list (car s0) (cadr p3)))
(setq s2 (list (+ (car s1) e) (cadr s1)))
(setq s3 (list (car s2) (cadr s0)))
(setq s4 (list (car s0) (cadr p1)))
(setq s5 (list (car s3) (cadr s4)))
(setq s6 (list (+(car s4)(/(- e c)2.0)) (cadr l1)))
(setq s7 (list (-(car s3)(/(- e c)2.0)) (cadr s6)))
(setq s8 (list (car s6) (cadr l2)))
(setq s9 (list (car s7) (cadr s8)))
(command "_Line" s0 s1 s2 s3 s0 "" "_Line" s4 s5 "" "_Line" s6 s7 "" "_Line" s8 s9 "" "_Line" s6 s8 "" "_Line" s7 s9 "")
(setq f0 (list
(+(car s0) (/(-(car s3)(car s0)) 2.0))
(+(cadr s6) (/(-(cadr s8)(cadr s6)) 2.0))
))
(if (< 0 r)
(command "_circle" f0 (/ r 2.0) ""))
;оси
(command "_layer" "У" "Оси" "") (command ) (command)
(setq os1 (list (car o1)(cadr f0)))
(setq os2 (list (car o4)(cadr f0)))
(setq os3 (list (car f0)(cadr s1)))
(setq os4 (list (car f0)(cadr s0)))
(setq os5 (list (car s0)(cadr f0)))
(setq os6 (list (car s3)(cadr f0)))
(if (< 0 r)
(command "_Line" os1 os2 "" "_Line" os5 os6 ""))
(command "_Line" os3 os4 "" )
;размеры
(command "_layer" "У" "Размеры" "") (command ) (command )
(if (<= d1 0)
(command "РЗМЛИНЕЙНЫЙ" p4 p5 "v" (list (+(car p4) 10) (+ (cadr p5) (/ d1 2.0)) )))
(if(> a3 0)
(command "РЗМЛИНЕЙНЫЙ" l1 l2 "v" (list (-(car l1) 10) (+ (cadr l1) (/ a3 2.0)) )))
(if (> b2 0)
(command "РЗМЛИНЕЙНЫЙ" p3 p4 "h" (list (+(car p3) (/ b2 2.0)) (+ (cadr p3) 10) )))
(if (> b1 0)
(command "РЗМЛИНЕЙНЫЙ" p3 p8 "h" (list (+(car p3) (/ b1 2.0)) (+ (cadr p3) 20) )))
(if (> a1 0)
(command "РЗМЛИНЕЙНЫЙ" s0 s4 "v" (list (-(car s0) 10) (+ (cadr s0) (/ a1 2.0)) )))
(if (> a3 0)
(command "РЗМЛИНЕЙНЫЙ" s6 s8 "v" (list (-(car s6) 10) (+ (cadr s6) (/ a3 2.0)) )))
(if (> e 0)
(command "РЗМЛИНЕЙНЫЙ" s0 s3 "h" (list (+(car s0) (/ e 2.0)) (- (cadr s0) 10) )))
(if (> r 0)
(progn
(command "РЗМЛИНЕЙНЫЙ" (list (car f0) (- (cadr f0) (/ r 2.0))) (list (car f0)(+ (cadr f0) (/ r 2.0))) "v" "_mtext" "%%c<>" (list (+ (car s3) 10) (cadr f0) ))
)
)
)
(defun param ()
; ПОЛУЧЕНИЕ РАЗМЕРОВ ДЕТАЛИ от пользователя, если размеры невведены, то беруться по умолчанию
(setq x (GetReal "\nВведите начальные координаты X(110): ")) (if (= x nil) (progn (setq x 110.0) ))
(setq y (GetReal "\nВведите начальные координаты Y(50): ")) (if (= y nil) (progn (setq y 50.0) ))
(setq e (GetReal "\nВведите e - ширина (30): ")) (if (= e nil) (progn (setq e 30.0)))
(setq a1 (GetReal "\nВведите a1 - толщина нижнего основания (20): ")) (if (= a1 nil) (progn (setq a1 20.0)))
(setq b1 (GetReal "\nВведите b1 - высота 1 (58): ")) (if (= b1 nil) (progn (setq b1 58.0) ))
(setq b2 (GetReal "\nВведите b2 - высота 2 (44): ")) (if (= b2 nil) (progn (setq b2 44.0) ))
(setq a2 (GetReal "\nВведите a2 - толщина верхнего основания (42): ")) (if (= a2 nil) (progn (setq a2 42.0)))
(setq d1 (GetReal "\nВведите d1 - толщина стенки (8): ")) (if (= d1 nil) (progn (setq d1 8.0)))
(setq a3 (GetReal "\nВведите a3 - ширина башенки (26): ")) (if (or (= a3 nil)(> a3 a2) )(progn (setq a3 26.0)))
(setq c (GetReal "\nВведите c - толщина башенки (22): ")) (if (= c nil)(progn (setq c 22.0))(if (> c e)(progn (setq c e ))))
(setq d2 (GetReal "\nВведите d2 - высота башенки (8): ")) (if (= d2 nil) (progn (setq d2 8.0)))
(setq r (GetReal "\nВведите d - диаметр (14): ")) (if (or(= r nil) (> r a3) (> r c)) (progn (setq r 14.0)))
)
(defun new()
(command "_linetype" "З" " ACAD_ISO10W100" "")
(command)
(command)
(command "_linetype" "З" "JS_02_2.0" "")
(command)
(command)
(command "_linetype" "З" "Continuous" "")
(command)
(command)
(command "_layer" "С" "КОНТУР" "")
(command)
(command)
(command "_layer" "Т" "Continuous" " Контур " "")
(command)
(command)
(command "_layer" "Е" 0.8 " Контур " "")
(command)
(command)
(command "_layer" "С" "Оси" "")
(command)
(command)
(command "_layer" "Т" "ACAD_ISO10W100" " Оси " "")
(command)
(command)
(command "_layer" "Е" 0.1 " Оси " "")
(command)
(command)
(command "_layer" "С" "Размеры" "")
(command)
(command)
(command "_layer" "Т" "Continuous" " Размеры " "")
(command)
(command)
(command "_layer" "Е" 0.3 " Размеры " "")
(command)
(command)
(command "_layer" "С" "Штриховка" "")
(command)
(command)
(command "_layer" "Т" "Continuous" " Штриховка " "")
(command)
(command)
(command "_layer" "Е" 0.3 " Штриховка " "")
(command)
(command)
)