Môn học tự động hóa thiết kế là một môn tự chọn tự do nằm trong chương trình đào tạo cho hệ kỹ sư của trường Đại học Bách Khoa Hà Nội từ năm 2010 đến nay. Nội dung cuốn sách là dùng ngôn ngữ lập trình autolisp để thiết kế các chi tiết cơ khí.... qua phần mềm tương tác là auto cad
Ví dụ lập trình Autolisp vẽ bánh đai dẹt (mặt cắt đứng – xem hình 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) Các thông số khác (hình 1) tính theo điều kiện 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 + - Chiều dày nan hoa: nh = vr + 0.02B - Phần nhô tối thiểu moayo so với nan hoa (phía bên trái): gap = 0.8*vr - Bán kính góc lượn: R = 0.5*gap - Phần nhô moayo so với mặt bánh đai: nho ≥ (kích thước “nho” được” tính theo điều kiện ưu tiên nan hoa giữa, không đạt làm lệch nan hoa, không đạt tăng chiều dài moayo để có nho ≥ 2) Cách tiến hành vẽ: - Lưu biến hệ thống - Đặt lại biến hệ thống để tránh sai sót vẽ - Đánh số điểm (hình 2) - Vẽ đường tâm c1-c2 - Vẽ đường bao phần mặt cắt lệnh pline (4p-tp-tt-4t; 4t-5-6-7 fillet với bán kính R; 72-3-7p; 7p-6p-5p-4p fillet) Đưa đường 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 đường khác (71; tt-t1; tp-t2; 7p-4) lấy đối xứng qua c1-c2 Khôi phục lại biến hệ thống cũ Hình Các kích thước bánh đai Dưới phần code chương trình: Hình Các điểm đặc trưng 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 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 : ")) (if (null dbd) (setq dbd 400)) (initget 6) (setq bbd (getreal "\n Chieu rong banh dai B : ")) (if (null bbd) (setq bbd 50)) (initget 6) (setq dtruc (getreal "\n Duong kinh truc dt : ")) (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 + 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 voi cac uu tien da noi va toi thieu = (setq bp (fix (- (* bbd 0.5) (* nh 0.5))) nho (- lm gap nh bp) ) (if (< nho 2) (setq nho 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 RED (command ".pline" c1 c2 "") ; ve duong tam (setvar "CECOLOR" color); tra lai mau hien hanh ;; tinh toa 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)) (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 (command ".pline" p4t tt 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 (setvar "CECOLOR" "1"); dat mau mat cat 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 "") (command ".mirror" "l" "" c1 c2 "") ;; Khoi phuc cac bien he thong ban dau (setvar "osmode" osmode); tra lai che OSmode (princ) ) ;; ham doi ;; khong dung chuong trinh (defun d2r (deg / rad) (setq rad (/ (* pi deg) 180.0)) rad ) ;; ham lay doi xung cac doi tuong nhom chon 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 ... (polar p5p g180 nh) ) ; ve duong bao phan mat cat (setq ss (ssadd)) ;tao ss rong de tao mat cat sau (command ".pline" p4t tt p4p "") (ssadd (entlast) ss) ; dua duong vua ve vao nhom chon ss (command... (polar p1 g180 gap) c2 (polar t2 g0 gap) ) (setvar "CECOLOR" "1"); dat mau duong tam RED (command ".pline" c1 c2 "") ; ve duong tam (setvar "CECOLOR" color); tra lai mau hien hanh ;; tinh toa cac... doi ;; khong dung chuong trinh (defun d2r (deg / rad) (setq rad (/ (* pi deg) 180.0)) rad ) ;; ham lay doi xung cac doi tuong nhom chon qua cac duong ;; flag = 0: xoa