(defun pgr1(a b) (sqrt (+ (expt a 2) (expt b 2))))
(defun pgr2(a b) (sqrt (- (expt a 2) (expt b 2))))
(defun expt2 (a) (expt a 2))
(defun dtr (a) (* pi (/ a 180.0)))
(defun rtd (a) (/ (* a 180.0) pi))
(defun sin1 (a) (sin (dtr a)))
(defun cos1 (a) (cos (dtr a)))
(defun tan (a) (/ (sin a) (cos a)))
(defun tan1 (a) (/ (sin1 a) (cos1 a)))
(defun cot (a) (/ (cos a) (sin a)))
(defun cot1 (a) (/ (cos1 a) (sin1 a)))
(defun a-tan (a) (/ (* (atan a) 180.0) pi))
;——————————————————————————-
(defun c:sgear()
(graphscr)
(defun *error* (msg)
(princ “error: “)(princ msg)
(setvar “osmode” os) ; OS모드 되돌림
(princ)
);;defun *error*
(setq os(getvar “osmode”))
(setvar “cmdecho” 0)
(setvar “osmode” 32)
(setq bas (getpoint “nPick base point :”))
(setq m (getreal “nEnter Module ?:”))
(setq zz (getint “nEnter tooth of No.?:”))
(setq z (float zz))
(setq deg1 (getreal “nEnter pressure angle (14.5 or 20)?:”))
(initget 1 “S O”)
(setq type (getkword “Enter drawing type (Simple=S , Original=O)?:”))
;————————————————————————
(setq d (* m z))
(setq d1 (+ d (* 2 m)))
(setq d2 (- d (* 2.5 m)))
(setq p (/ (* pi d) z))
(setq dp (/ z d))
(setq r1 (/ d 8))
(setq deg2(/ 180 z))
(setq deg3(/ 90 z))
(setq dd1 (/ d 2))
(setq dd2 (* (cos1 deg1) (/ d 2)))
(setq dd3 (/ (- (+ (expt2 dd1) (expt2 dd2)) (expt2 r1))
(* (* 2 dd1) dd2)))
(setq dd4 (- (expt2 (/ 1 dd3)) 1))
(setq deg4(a-tan (sqrt dd4)))
(setq deg5(- deg4 deg3))
(setq dd5 (/ d1 2))
(setq dd6 (/ (- (+ (expt2 dd5) (expt2 dd2)) (expt2 r1))
(* (* 2 dd5) dd2)))
(setq dd7 (- (expt2 (/ 1 dd6)) 1))
(setq deg6(a-tan (sqrt dd7)))
(setq deg7(- deg4 deg6))
(setq deg8(+ deg2 (* 2 deg7)))
(setq deg9(- deg3 deg7))
(setq w (* (* pi d1) (/ deg8 360)))
(setq r2 (/ w 7))
;————————————————————————
(setq pt1 (polar bas (dtr (+ 90 (+ deg3 deg1)))
(* (cos1 deg1) (/ d 2))))
(setq pt2 (polar bas (dtr (+ 90 deg3)) (/ d 2)))
(setq pt3 (polar bas (dtr 90) (/ d1 2)))
(setq pt4 (polar bas (dtr 90) (/ d2 2)))
(setq pt5 (polar bas (dtr (+ 90 deg2)) (/ d2 2)))
(setq pt6 (polar bas (dtr (- 90 deg5))
(* (cos1 deg1) (/ d 2))))
(setq pt7 (polar bas (dtr (+ 90 deg9)) dd5))
(setq pt8 (polar bas (dtr 0) (* dd5 1.1)))
(setq pt9 (polar bas (dtr 90) (* dd5 1.1)))
(setq pt10(polar bas (dtr 180) (* dd5 1.1)))
(setq pt11(polar bas (dtr 270) (* dd5 1.1)))
;————————————————————————
(setvar “osmode” 0)
(command “layer” “s” “1” “”) ;중심선
(command “line” pt8 pt10 “”)
(command “line” pt9 pt11 “”)
(command “circle” bas “d” d)
(if (= type “O”)
(progn
(command “layer” “s” “0” “”) ;외형선
(command “arc” pt3 “c” bas pt7) (setq ent1 (entlast))
(command “arc” pt4 “c” bas pt5) (setq ent2 (entlast))
(command “arc” pt7 “c” pt6 “a” 100) (setq ent3 (entlast))
(command “fillet” “r” r2)
(command “fillet” (list ent2 pt5) (list ent3 pt2))
(setq ent4 (entlast))
(command “mirror” ent1 ent2 ent3 ent4 “” bas pt9 “”)
(setq ent5 (entnext ent4)) (setq ent6 (entnext ent5))
(setq ent7 (entnext ent6)) (setq ent8 (entnext ent7))
(command “pedit” ent1 “y” “j” ent2 ent3 ent4 ent5 ent6
ent7 ent8 “” “”) (setq ent9 (entlast))
(command “array” ent9 “” “p” bas zz 360 “”)
) ;e progn
(progn
(command “layer” “s” “0” “”) ;외형선
(command “circle” bas “d” d1)
(command “layer” “s” “50” “”) ; 가상선
(command “circle” bas “d” d2)
) ;e progn
) ;e if
(setvar “osmode” os)
(princ)
)
======================================================================
위 리습은 평기어 그리는 리습인데 기어 잇빨이 하나만 그려 집니다 .
array(원형배열)로 그려 져야 하는데 말이죠
또하나는 축 지름지정과 키도 같이 그려지는 옵션이 추가 되었으면 합니다.
고수님들 수정부탁 드립니다,
공유