Tải bản đầy đủ (.pdf) (6 trang)

Vi du ve lap trinh ve banh dai det

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (217.66 KB, 6 trang )

Ví dụ về lập trình Autolisp vẽ bánh đai dẹt (mặt cắt đứng – xem hình 1)
1. Các số liệu cần nhập
- Đường kính bánh đai (Dbd)
- Chiều rộng bánh đai (Bbd)
- Đường kính trục (dt)
2. Các thông số khác (hình 1) tính theo các điều kiện
về kết cấu:
- Đường kính moayo : dm = 1.8*dt
- Chiều dài moayo: Lm = 1.5*dt
- Chiều dày vành: vr = 0.02*Dbd + 3
- Chiều dày nan hoa: nh = vr + 0.02B
- Phần nhô tối thiểu của moayo so với nan hoa
(phía bên trái): gap = 0.8*vr
- Bán kính các góc lượn: R = 0.5*gap
- Phần nhô của moayo so với mặt ngoài bánh
đai: nho ≥ 2
(kích thước “nho” được” tính theo điều kiện ưu
tiên nan hoa ở giữa, nếu không đạt thì làm lệch
nan hoa, nếu vẫn không đạt thì tăng chiều dài
moayo để luôn có nho ≥ 2)
3. Cách tiến hành vẽ:
- Lưu các biến hệ thống
- Đặt lại biến hệ thống để tránh sai sót khi vẽ
- Đánh số các điểm (hình 2)
- Vẽ đường tâm c1-c2
- Vẽ lần lượt các đường bao
phần mặt cắt bằng lệnh
pline (4p-tp-tt-4t; 4t-5-6-7
và fillet với bán kính R; 72-3-7p; 7p-6p-5p-4p và
fillet). Đưa các đường này
vào nhóm chọn ss (để dùng


lấy đối xứng + gạch mặt
cắt)
- Lấy đối xứng nhóm chọn
qua c2-c2
- Gạch mặt cắt với đường bao
đã tạo
- Vẽ thêm các đường khác (71; tt-t1; tp-t2; 7p-4) và lấy
đối xứng qua c1-c2
4. Khôi phục lại các biến hệ thống
cũ.

Hình 1. Các kích thước bánh đai

5. Dưới đây là phần code của
chương trình:
Hình 2. Các điểm đặc trưng trên bánh đai


(defun c:bddet (/ bbd dbd dtruc

dm lm vr dlo dnh gap nho bp rr osmode color)

;; init (cac goc hay dung)
(setq

g0 0

g90 (* pi 0.5)
g180 pi
g270 (* pi 1.5)

)
;; luu giu cac bien he thong
(setq osmode (getvar "osmode"))
(setvar "osmode" 0) ;; tat OSMODE
(setq color (getvar "cecolor"))
;; Nhap cac thong so banh dai
;; so lieu demo D = 400, B = 40, dtruc = 30 ;;;
(prompt "\n...Nhap thong so banh dai det...")
(initget 6)
(setq dbd (getreal "\n Duong kinh banh dai D <400>: "))
(if (null dbd) (setq dbd 400))
(initget 6)
(setq bbd (getreal "\n Chieu rong banh dai B <50>: "))
(if (null bbd) (setq bbd 50))
(initget 6)
(setq dtruc (getreal "\n Duong kinh truc dt <30>: "))
(if (null dt) (setq dtruc 30))
;; thong so khac (dkinh mayo, vanh...)
(setq

dm (fix (* dtruc 1.8))

; dmayo = dtruc*1.8

vr (fix (+ (* dbd 0.02) 3))

; vanh = 0.02*Dbd + 3

gap (fix (* 0.8 vr))


; mat mayo den nan hoa

nh (+ vr (fix (* 0.02 bbd))) ; chieu day nan hoa
lm (fix (* dtruc 1.5))

; chieu dai mayo sobo

)
;; tinh kich thuoc <nho> voi cac uu tien da noi va <nho> toi thieu = 2


(setq

bp (fix (- (* bbd 0.5) (* nh 0.5)))

nho (- lm gap nh bp)
)
(if (< nho 2)
(setq nho 2
bp (- lm gap nh nho)
)
)
(if (< bp gap)
(setq bp gap
lm (+ bp gap nh nho)
)
)
(setq rr (* gap 0.5))

; goc luon


;;; ve banh dai
(setq

t2 (getpoint
"\nChon diem tam banh dai tren mat mut nho (mat phai) cua moayo: "

)
t1 (polar t2 g180 lm)
p1 (polar t2 g180 (+ bbd nho))
c1 (polar p1 g180 gap)
c2 (polar t2 g0 gap)
)
(setvar "CECOLOR" "1"); dat mau duong tam thanh RED
(command ".pline" c1 c2 "")

; ve duong tam

(setvar "CECOLOR" color); tra lai mau hien hanh
;; tinh toa do cac diem khac
(setq

p2 (polar p1 g90 (* dbd 0.5))

p7 (polar p2 g270 vr)
p7p (polar p7 g0 bbd)
p6p (polar p7p g180 bp)
p6p (polar p6p g270 (* bp (sin 0.122))) ;nghieng 7deg



p6 (polar p6p g180 nh)
p3 (polar p2 g0 bbd)
p4 (polar p3 g270 (* 0.5 (- dbd dm)))
tt (polar t1 g90 (* dtruc 0.5))
tp (polar tt g0 lm)
p4t (polar t1 g90 (* dm 0.5))
p4p (polar p4t g0 lm)
p5p (polar p4 g180 bp)
p5 (polar p5p g180 nh)
)
; ve duong bao phan mat cat
(setq ss (ssadd))

;tao ss rong de tao mat cat sau nay

(command ".pline" p4t tt tp p4p "")
(ssadd (entlast) ss)

; dua duong vua ve vao nhom chon ss

(command ".pline" p4t p5 p6 p7 "")
(command ".fillet" "r" rr "")
(command ".fillet" "p" "l")
(ssadd (entlast) ss)
(command ".pline" p7 p2 p3 p7p "")
(ssadd (entlast) ss)
(command ".pline" p4p p5p p6p p7p "")
(command ".fillet" "p" "l")
(ssadd (entlast) ss)
;; lay doi xung

(setq ss1 (ss-mirror ss c1 c2 1))
;; hatching = mau do
(setvar "CECOLOR" "1"); dat mau mat cat thanh RED
(command ".-hatch" "p" "" 25 "" "s" ss ss1 "" "")
(setvar "CECOLOR" color); tra lai mau hien hanh
;; ve cac duong khac
(command ".pline" p1 p7 "")
(command ".mirror" "l" "" c1 c2 "")
(command ".pline" p4 p7p "")


(command ".mirror" "l" "" c1 c2 "")
(command ".pline" t1 tt "")
(command ".mirror" "l" "" c1 c2 "")
(command ".pline" t2 tp "")
(command ".mirror" "l" "" c1 c2 "")
;; Khoi phuc cac bien he thong ban dau
(setvar "osmode" osmode); tra lai che do OSmode
(princ)
)
;; ham doi <do> thanh <radian>
;; khong dung trong chuong trinh nay
(defun d2r (deg / rad)
(setq rad (/ (* pi deg) 180.0))
rad
)
;; ham lay doi xung cac doi tuong trong nhom chon <ss> qua cac duong
;; flag = 0: xoa cac doi tuong ban dau
;; flag <> 0: khong xoa cac doi tuong ban dau
(defun ss-mirror (ss p1 p2 flag / ent ss1 num ind)

(if (null ss)
(setq ss1 NIL)
(progn
(if (= flag 0)
(progn
(command "._mirror" ss "" p1 p2 "y")
(setq ss1 ss)
)
(progn
(setq ss1 (ssadd))
(setq num (sslength ss))
(setq ind 0)


(while (< ind num)
(setq ent (ssname ss ind))
(command "._mirror" ent "" p1 p2 "n")
(ssadd (entlast) ss1)
(setq ind (1+ ind))
) ;while
) ;progn
) ;if flag..
) ;progn
) ;if ss not null
ss1
) ;defun

;ket qua tra ve




×