Міністерство
освіти і науки України
НТУУ “КПІ”
Практична робота №3
Синтез модуля САПР засобами
мови AutoLISP в AutoCAD
Виконав: студент IV курса
групи ОМ
Перевірив:
м. Київ 2014 р
1.
Назва:
Синтез
модуля САПР
засобами
мови
AutoLISP
в AutoCAD
2. Мета: розробка параметризованого модуля САПР - зображення геометричного контуру з можливістю зміни параметрів перерізу, як формоутворуючого елемента стержня з осьовим навантаженням, засобами мови програмування ALISP системи AutoCAD
3. Задачі.
3.1. Розробити параметризовану схему поперечного перерізу стержня за варіантом заданого геометричного контуру.
3.2. За вхідними даними виконати інженерні розрахунки: площі поперечного перерізу, діючих напружень розтягнення або стиснення, запасу міцності. Розрахувати раціональне значення площі поперечного перерізу за умови досягнення запасу міцності 1,4.
3.3. Розробити блок-схему алгоритму та програму мовою ALISP функціонування модулю САПР в автоматичному режимі з виконанням наступних дій:
- розрахунків: площі поперечного перерізу; діючих напружень розтягнення або стиснення; запасу міцності; раціонального значення площі поперечного перерізу за умови досягнення запасу міцності 1,4;
- побудови зображення поперечного перерізу за початковими розмірами (з початковою площою);
- побудови скоректованого зображення за умови досягнення раціонального значення площі поперечного перерізу стержня ( раціональне значення площі поперечного перерізу відповідає умові досягнення запасу міцності 1,4).
3.4. Розробити сценарний файл формування необхідного середовища AutoCAD з автозапуском програми ALISP. Реалізувати сценарний файл та програму в середовищі AutoCAD на ЕОМ.
4. Інформаційне забезпечення: методичні вказівки, навчальна програма-аналог, IBM PC.
5. Способи введення точки за допомогою команд AutoCAD та функцій AutoLISP
(порівняльна таблиця).
Способи введення точки за допомогою команд ACAD
|
Способи введення точки за допомогою функцій ALISP (розширена інформація –в Додатку) |
1. Введення точки за допомогою клавіатури або маніпулятора "миша" |
1.Застосування функцій типу GET: (GETPOINT "Підказка:")
|
2. Введення числового значення координат: a) в абсолютній системі координат,наприклад: 100,100; б) в відносній @100,100; в) в полярній @100<25 (відстань від попередньої точки до поточної 100, кут = 25 градусів. |
2. Застосувуання функцій: POLAR (точка1 кут_рад відстань) INTERS (точ1 точ2 точ3 точ4 ознакА)
|
3. Введення точки за допомогою об'єктних привязок командою OSNAP з модами NEA, INT, MID, TAN, PER, CEN.
|
3. Застосування функції LIST для об'єднання атомів у список. Формат: (LIST A1 A2) Приклад: (SETQ P3 (LIST (CAR P1) (CADR P2))) |
Розширена інформація про мову програмування AutoLISP наведення в ДОДАТКУ.
7. Розробка креслення символьної параметризації
На рис. 1 зображено геометричний контур за варіантом для якого необхідно розробити креслення символьної параметризації. Контур зображення складається з таких графічних примітивів, як дуги та прямолінійні відрізки.
Крім того контур зображення є симетричним відносно горизонтальної осі.
Рис.1 Зображення геометричного контуру
Побудову такого зображення в середовищі AutoCAD зручно вести таким способом:
За допомогою команди зображення графічного примітива “pline” (полілінія) будується одна з симетричних частин зображення;
За допомогою команди редагування “mirror”, дзеркально відобразивши раніше побудовану частину зображення, отримуємо повне зображення геометричного контуру.
Після отримання зображення проводиться розмітка характерних вузлових точок (точок, необхідних для побудови зображення), а також визначаються координати x,y відносно глобальної системи координат (0,0).
На рис.2 показані розмітка та символьна параметризація характерних точок для написання програми побудови зображення геометричного контуру перерізу
Рис.2. Cимвольна параметризація зображення
8. Інженерні розрахунки: площі поперечного перерізу, діючих напружень розтягнення або стиснення, запасу міцності. Визначення раціонального значення площі поперечного перерізу за умови досягнення запасу міцності 1,4.
Допустиме
напруження з урахуванням запасу міцності
1,4 визначається, наприклад для сталі
45
Обчислення
площі проведено відповідно
до рис.2 за формулами
,
За заданим допустимим напруженням σдоп=300 МПа і розрахованою за геометричними розмірами варіантута формулами (1) визначено зовнішнє навантаження
Приймаємо
Н
9. Блок-схема алгоритму та програма мовою ALISP функціонування модулю САПР в автоматичному режимі з реалізацією алгоритма
У відповідності до поставлених задач блок-схема алгоритма повинна влючати основні блоки:
- розрахунків площі поперечного перерізу; діючих напружень розтягнення або стиснення; запасу міцності; раціонального значення площі поперечного перерізу за умови досягнення запасу міцності 1,4;
- побудови зображення поперечного перерізу за початковими розмірами (з початковою площою);
- побудови скоректованого зображення за умови досягнення раціонального значення площі поперечного перерізу стержня ( раціональне значення площі поперечного перерізу відповідає умові досягнення запасу міцності 1,4).
За поставленими задачами і за проведеним аналізом структури і функцій програми-аналогу прозроблена блок-схема алгоритму реалізації модуля САПР (рис.3)
Рис.3
На основі блок-схеми алгоритму розроблена програма мовою AutoLISP
Sapr_plk.Lsp
;====== Побудова зображення контура геометричного
;====== та обчислення площі контура
;====== SAPR_OKS.LSP
;===============================================================
;====== Функція введення незмінних вхідних даних
(defun WANT_CONST()
;Присвоєння значень
(setq an 0 ) ; допоміжне позначення кута в 0 радіан
(setq N (expt 10 7) ; осьове зовнішнє навантаження на стержень
sigma_d 300. ; допустиме напруження в МПа
)
(print "N=")
(print N)
(print "sigma_d=")
(print sigma_d)
(setq Fd (/ N sigma_d))
(print "Fd=")
(print Fd)
);WANT_CONST
(defun WANT_VAR(K); введення варіативних геометричних параметрів перерізу
;Присвоєння значень
(setq R1 (* K 23) R2 (* K 54) R3 (* K 12) R4 (* K 29) d (* K 24))
(setq an 0 )
);WANT_VAR
;===============================================================
;========= Функція розрахунку координат вузлових точок
(defun CALC1()
(setq p1 (polar p0 pi (+ R1 R2))
p2 (polar p0 an R1) p3 (polar p0 (/ pi 2) (+ R1 R2)) p4 (polar p1 an (/ d 2))
p5 (polar p4 pi d) p6 (polar p1 (/ pi 2) R1)
p7 (polar p1 pi R1) p8 (polar p2 (/ pi 2) R3)
p9 (polar p2 pi R3) p10 (polar p8 an R4) p11 (polar p3 an (/ d 2))
p12 (polar p11 pi d)
p13 (list (car p2) (cadr p3))
p14 (polar p13 pi (* 2 R1))
p15 (list (car p6) (cadr p14)) p16 (list (car p10) (cadr p13))
p17 (polar p16 (- (/ pi 2)) R4)
p18 (polar p2 an (+ R4 5)) p19 (polar p1 pi (+ 5 R1))
p20 (polar p19 (/ pi 2) (+ R1 R2 R1 10))
p21 (polar p18 (- (/ pi 2)) (+ R1 R2 R1 10))
p22 (list (car p3) (cadr p20))
p23 (list (car p0) (cadr p21))
p24 (polar p1 (/ pi 2) (/ d 2))
);setq
);CALC1
(defun CALC2()
(setq F1 (+ (/ (* 3 PI R1 R1) 4) (* (+ R1 R2) (+ R2 R1 R4)))
F2 (+ (/ (* 3 PI d d) 8) (/ (* PI (+ (* R2 R2) (* R3 R3) (* R4 R4))) 4) (* R4 R3))
Fc (- F1 F2) Fc (* 2 Fc)
)
(print Fc)
); calc2
;====== Функція побудови контуру
(defun GRAPH()
(command "LAYER" "S" "KONT" ""
"PLINE" p13 "w" "1" "" "A" "CE" p3 p14 ""
"PLINE" p17 p10 ""
"PLINE" p13 "A" "CE" p16 p17 ""
"PLINE" p6 "A" "CE" p15 p14 ""
"PLINE" p6 "A" "CE" p1 p7 ""
"PLINE" p11 "A" "CE" p3 p12 "CL" ""
"PLINE" p8 "A" "CE" p2 p9 ""
"PLINE" p8 p10 ""
"PLINE" p4 "A" "CE" p1 p5 ""
"MIRROR" "C" VK NK "" P0 P1 "" ""
"HATCH" "u,o" "135" "2" "" "c" VK NK ""
"LAYER" "S" "AXIS" "" "LINE" p19 p18 "" "LINE" p22 p23 ""
"LINE" p11 p12 "" "LINE" p8 p2 "" "LINE" p24 p1 ""
"MIRROR" "C" P2 p8 "" P0 P1 "" ""
"MIRROR" "C" P11 P3 "" P0 P1 "" ""
"MIRROR" "C" P24 P1 "" P0 P1 "" ""
)
);GRAPH
; Функція логічної обробки інфформації з максимальним наближенням до
; раціональних параметрів
(defun LOGIC()
(setq sigma (/ N Fc))
(print "sigma=")
(print sigma)
(IF (>= sigma sigma_d)
;(setq K_log 1.1)
;(setq K_log 0.9)
(varia_1)
(varia_2)
)
(print "K_log =")
(print K_log)
(print "sigma_d=")
(print sigma_d)
)
(defun varia_1()
(WHILE (>= sigma sigma_d) ; Початок циклу
(setq K_log 1.1)
(want_var
K) ;введення вхідних
даних
(calc1) ;розрахунок координат
(calc2)
(setq sigma (/ N Fc))
(print sigma)
(graph) ;зображення контура
(command "DELAY" "1000" "ERASE" "C" VK NK "")
(setq K (* K K_log))
(setq VK (list (- (car p20) 10) (+ (cadr p20) 10)) NK (list (+ (car p21) 10) (- (cadr p21) 10)))
(command "ZOOM" "A")
) ;WHILE
)
(defun varia_2()
(WHILE (< sigma sigma_d) ; Початок циклу
(setq K_log 0.9)
(want_var K) ;введення вхідних даних
(calc1) ;розрахунок координат
(calc2)
(setq sigma (/ N Fc))
(print sigma)
(graph) ;зображення контура
(command "DELAY" "1000" "ERASE" "C" VK NK "")
(setq K (* K K_log))
(setq VK (list (- (car p20) 10) (+ (cadr p20) 10)) NK (list (+ (car p21) 10) (- (cadr p21) 10)))
(command "ZOOM" "A")
) ;WHILE
)
;======================================================
;====== Головна функція
(defun C:SAPR_PLK()
(setvar "cmdecho" 0) ;відміна еха команд
(setvar "blipmode" 0);відміна маркерування точок примітивів
(setq VK (list 25 400) NK (list 290 80))
(setq p0 (getpoint"\nEnter base point"))
(setq K 1) ; Заданий початковий масштаб
(want_const)
(want_var K)
(calc2)
(logic)
(graph)
(prin1) ;"тихий вихід" з програми
)
10.
Сценарний
файл формування необхідного
середовища AutoCAD
з автозапуском програми ALISP.
units 2 1 1 0 0
style ukr times new roman
limits 0,0 297,420
zoom all
snap 1
ltscale 15
layer new ramka,kont,axis,dim
ltype continuous ramka,kont,dim
ltype center axis
color red ramka,kont
color green axis
color blue dim
set ramka
dim
dimtih
off
dimtoh
off
dimtad
dimtol
off
dimaso
on
dimtofl
on
dimtix
off
dimsoxd
off
dimasz
5
dimtxt
5
dimzen
3
dimexe
3
dimexo
0
dimdli
8
dimtvp
1
exit
osnap none
zoom a
layer set kont
(load "sapr_plk")
SAPR_PLK
