Bộ môn GCVL&DCCN - Đồ án tốt nghiệp - CTM K39 Chơng trình Autolisp ;; ;; Subroutine: thân khai ;; dùng để vẽ biên dạng thân khai ;; tham số: tâm: tọa độ tâm bánh cần vẽ ;; r0: bán kính sở ;; Rmin va Rmax: bán kính chân đỉnh ;; (defun thankhai ( tam r0 Rmin Rmax / phi phi1 phi2 step i ) (setq ptlist nil num 5) (if (> r0 Rmin) (progn (setq phi1 (/ (setq l (sqrt (- (* r0 r0) (* rmin rmin)))) rmin)) (setq phi1 (- (atan (/ l rmin)) phi1)) (setq ptlist (append ptlist (list (polar tam phi1 rmin) (polar tam r0) ) ) ) (setq step (/ (- rmax r0) num 1.0) rtk r0) ) (setq ptlist (append ptlist (list (polar tam rmin))) step (/ (- rmax rmin) num 1.0) rtk rmin) ) (princ step) (princ "***") (repeat num (princ (setq rtk (+ rtk step))) (princ " ") (setq phi1 (/ (setq l (sqrt (- (* rtk rtk) (* r0 r0)))) r0)) (setq phi2 (atan (/ l r0)) phi (- phi1 phi2)) (setq ptlist (append ptlist (list (polar tam phi rtk)))) ) ptlist ) Bộ môn GCVL&DCCN - Đồ án tốt nghiệp - CTM K39 ;; ;; C:GEAR - dùng để vẽ bánh với m, z (anfa) ;; cho vào từ bàn phím ;; (defun c:gear ( / pts1 dc de di d0 anfa z m zve tam pts phi1 phi2 s1 s2 ) (setq tam (getpoint "\nTâm: ") m (getreal "\nModun: ") z (getint "\nSố răng: ") b (getdist "\nBề rộng: ") anfa (getreal "\nGóc áp lực: ") zve (getint "\nSố cần vẽ: ") ) (setq dc (* m z) de (+ dc m m) di (- dc (* 2.25 m)) d0 (* dc (cos (/ (* pi anfa) 180.0)))) (setq pts (thankhai tam (/ d0 2.0) (/ di 2.0) (/ de 2.0))) (command ".pline") (foreach pt pts (command pt)) (command "") (setq s1 (entlast) ang (/ pi z)) (setq phi1 (/ (setq l (sqrt (- (* (/ dc 2.0) (/ dc 2.0)) (* (/ d0 2.0) (/ d0 2.0)) ) ) ) (/ d0 2.0) ) ) (setq phi2 (atan (/ l (/ d0 2.0))) phi (- phi1 phi2) ) (setq pt2 (polar tam (+ phi ang) (/ dc 2.0))) (command ".mirror" s1 "" tam pt2 "n") (setq s2 (entlast) pts2 nil) (while (setq s2 (entnext s2)) (setq ent (entget s2)) (if (= (cdr (assoc ent)) "VERTEX") (setq pts2 (append pts2 (list (cdr (assoc 10 ent))))) ) ) (setq s2 (entlast)) (setq ang1 (angle tam (car pts))) (if (> ang1 pi) (setq ang1 (- ang1 (* pi)))) (setq ang2 (* 2.0 (- (+ phi ang) ang1))) (setq ang3 (+ ang2 (- (/ (* pi) z) ang2))) (command ".arc" (car pts2) "e" (polar tam (+ ang1 ang3) (/ di 2.0)) "r" (/ di 2.0)) (setq s3 (entlast)) (command ".arc" (last pts) "e" (last pts2) "r" (/ de 2.0)) (setq s4 (entlast)) (command ".array" s1 s2 s4 s3 "" "p" tam zve (* (/ 360.0 z) (1- zve)) "") (if (< zve z) Bộ môn GCVL&DCCN - Đồ án tốt nghiệp - CTM K39 (progn (setq goc (cdr (assoc 50 (entget (entlast))))) (entdel (entlast)) (command "line" (car pts) tam (polar tam goc (/ di 2.0)) "") ) ) (command ".pedit" s1 "j" "all" "" "x") ; (command ".extrude" "l" "" b "") ) ;; ;; C:PHAYDIA - dùng để mô trình gia công ;; phơng pháp chép hình ;; (dao phay đĩa modun) ;; (defun c:phaydia ( ) (command "undo" "m") (setvar "cmdecho" 0) (setq tam (getpoint "\nTâm quay phôi: ") m (getreal "\nModun bánh cần gia công: ") z (getint "\nSố bánh răng: ") ) (princ "\n***********************************") (princ "\n Hãy chọn phôi: ") (setq s1 (car (entsel))) (princ "\n Hãy chọn dao phay đĩa: ") (setq s2 (car (entsel))) (setq pt1 '(0 0) step (getdist "\nBớc dịch dao (theo Z) để gia công hết bề dày răng: ") Nd (getint "\nSố lần dịch dao: ") Zgc (getint "\nSố rãnh cần gia công: ") pt2 (list (car pt1) (cadr pt1) (+ (last pt1) step)) ) (initget "C K") (setq ans (getkword "\nBạn có muốn tạo ảnh không ? /C: ")) (if (= "C" ans) (progn (initget) (setq i (getint "\nSố thứ tự tệp ảnhđầu tiên: ")) ) ) (setq Rc (/ (* m z) 2.0) phando (/ 360.0 z)) (setq chieu (getint "\nChiều quay theo kim đồng hồ (-1) hay ngợc lại (+1) ? /-1: ")) (if (