Vous êtes sur la page 1sur 28

Chapter 1

Aim
To Design a spur gear drive to transmit 10kw at 1200 rpm the required speed ratio 3 .The
pinion &wheel materials are C45 steel & cast iron grade 30 respectively . The drive is expected
to work for 12 hrs/day 300 days for a year and for 4 years.

Chapter 2
DETERMINE MATERIAL PROPERTY

(PSG data book page no 1.9 & 1.5 )


Pinion

Wheel

Ultimate yield stress (y)

3600 kgf/cm2

2900 kgf/cm2

Allowable yield stress (y)

1800 kgf/cm2

1450 kgf/cm2

Allowable shear stress ()

1080 kgf/cm2

870kgf/cm2

Allowable bending stress (b)

2160 kgf/cm2

1740kgf/cm2

( FOS =2 )

Chapter 3
DETERMINATION OF MINIMUM CENTER DISTANCE :

amin = i 1

a center distance
i gear ratio & speed ratio
E youngs modulus
E eq = 1.74 106 kgf / cm2

( pg 8.14 )

[Mt] = Mt k kd

( pg 8.15 )
Mt =

Mt = 811.83 kgf.cm
Assume kd k = 1.3
[Mt] = 811.83 1.3 = 1055.38 kgf.cm
Pg no 8.16
[c] Design surface stress
HB Brinell hardness number
HRC Rockwell hardness
Relation b/w HB & HRC in
CB = 23

HB = 230

[c] = CB HB Kcl
Pg no 8.16
HB = 200-260
CB = 23
N = 12 hr/day 300 days/year 4 year 60 1200/3
N = 34.5 107 cycles
Kcl =

= 0.554

[c] = 23 230 0.554 = 2930.66 kgf /cm2

Check the value of [c] take greater value for calculation


[c] = 2930.66 kgf /cm2
Pg no 8.14
open type gearing 0.1 to 0.3
= b/a =0.3 ( not assumed value only selected value )
2

amin = 3 1

= 20.11 cm

Chapter 4
DETERMINE THE MODULE
Pg no 8.13 A
Mmin = 1.28

"

Pg no 8.18
In order to avoid interference the minimum number of teeth is 20
Z = 20
Take
Form factor

X = 0 ( un correct gear )
y = 0.389

Pg no 8.18
Assume rotation in one direction
#$ =
Pg no 8.20
Kbl =
Pg no 8.19

%&

0 =

%&

-1

cast iron ( wheel material )


)

= 0.6747

1 for cast iron


-1 = 0.45u
= 1305 kgf/cm2

Pg no 8.19
Factor of safety for cast iron
n=2

( tempered & normalized )

Pg no 8.19
Stress concentration factor for fillet (k )
Cast iron X =0
k = 1.2
[b] =

.
.

= 513.84 kgf/cm2

Take high value of [b]


[b] = 1740 kgf/cm2
Pg no 8.14 In general
m = 10
m = b/m = 10

Number of teeth in the pinion z1 = 20


M min = 0.249 cm = 2.49 cm
Pg no 8.12
Standard module M min = 2.5 mm
Pg no 8.22
Center distance ( a ) = m (

! +!

) = 10 cm

Take greater value of a


a = 20.11 cm = 201.1 mm

Chapter 5
DETERMINATION OF ACTUAL NUMBER OF TEETH
Pg no 8.22

Number of teeth in pinion z = z1 =

When z1 = 41

i=3

"( + )

( + )

= 40.22 = 41

Z2 =413 = 123 teeth

CHAPTER 6
DETERMINATION OF PITCH CIRCLE DIAMETER
Pg no 8.22
Pitch circle diameter of pinion d1 = mz1 = 0.25 41 = 10.25 cm = 102.5 mm
Pitch circle diameter of wheel d2 = m z2 = 0.25 123 = 30.75 cm

CHAPTER 7
DETERMINATION OF WIDTH
= b/a = 0.3

m = b/m = 10

b = o.3 20.11 = 6.033 cm

b = 100.25 = 2.5 cm

take greater value

b = 6.03 cm

assume 20 full depth system


Addendum = m = 2.5 mm
Dedendum = 1.25 m = 3.13mm
Tooth thickness = 1.5708m = 3.93mm
Addendum circle diameter = 102.5 + 2.5 = 105 mm
Dedendum circle diameter = 102.5 -3.13 = 99.37 mm
For wheel
Addendum circle diameter = 310 mm
5

Dedendum circle diameter = 304.37 mm


Pitch circle diameter = 307.5 mm

CHAPTER 8
DESIGN CHECKING
8.1 CHECK FOR INDUCED COMPRESSIVE STRESS ( full pinion )
Pg no 8.13
For checking
c = 0.74

#0]

[Mt] = Mt k kd
Pg no 8.15
Load concentration factor k
p = b/d1 = 0.588
p = 0.6

corresponding to k is 1.03
( Bearings close to gear & symmetrical )

Pg no 8.3
Velocity of gear =

12

= 6.43 m/s

Peripheral speed of gear


Above 1 up to 8 IS Quality is 8
Pg no 8.16
Dynamic load factor kd
Pinion material HB is < 350
Kd = 1.55

( see below 8 )

[Mt] = Mt k kd = 1296.08 kgf cm


c = 3248.87 kgf/cm2
c

for safe design


[c ] = 2930.66 kgf/cm2
Here design is not safe

in previous

8.2 CHECK FOR INDUCED BENDING STRESS


Pg no 8.13 A
b =

[Mb] [b]

-"

pg no 8.18 form factor


z = 41
by interpolation
40

-0.465

45

-0.471

41

-0.466

b = 366.97 kgf/cm2
b

for safe design

Design is safe

8.3 CHECK FOR PLASTIC DEFORMATION UNDER COMPRESSION


Pg no 8.21
c

max

= c

"-9

Mt max = 2 Mt
c
Pg no 8.21

max

= 4594.58 kgf/cm2

HB 350 for steel


7

[c ] max = 3.1 y = 11160 kgf/cm2


c max

Design is safe

max

8.4 CHECK FOR PLASTIC DEFORMATION UNDER BENDING


Pg no 8.21
b max = b

( :; <=>)

max

= 733.94 kgf/cm2

Pg no 8.21
[ b ]max = 0.8 y
For steel 350
= 0.8 3600 = 2800kgf/cm2
For safe design
b max

max

733.94 2880
Design is safe

CHAPTER 9
CAMMANT AND PROGRAM
9.1 AUTO CAD COMMANDS
AutoCAD menu utilities loaded.
Command: c
CIRCLE Specify center point for circle or [3P/2P/Ttr (tan tan radius)]: 300,300
Specify radius of circle or [Diameter]: d
Specify diameter of circle: 105
Command: c
CIRCLE Specify center point for circle or [3P/2P/Ttr (tan tan radius)]: 300,300
8

Specify radius of circle or [Diameter] <52.5000>: d


Specify diameter of circle <105.0000>: 102.5
Command: c
CIRCLE Specify center point for circle or [3P/2P/Ttr (tan tan radius)]: 300,300
Specify radius of circle or [Diameter] <51.2500>: d
Specify diameter of circle <102.5000>: 99.37
Command: _line Specify first point:
Specify next point or [Undo]: 1.6
Specify next point or [Undo]: 3.93
Command: _line Specify first point:
Specify next point or [Undo]: 3.93
Specify next point or [Undo]: @1.4<70
Command: Specify opposite corner: *Cancel*
Command: l
LINE Specify first point:
Specify next point or [Undo]: @1.4<110
Command: _line Specify first point
Specify next point or [Undo]: @1.8<250
Specify next point or [Undo]: *Cancel*
Command: l
LINE Specify first point:
Specify next point or [Undo]: @1.8<290
Specify next point or [Undo]: *Cancel*
Command: f
FILLET
Current settings: Mode = TRIM, Radius = 0.0000
Select first object or [Polyline/Radius/Trim/mUltiple]: r
Specify fillet radius <0.0000>: 1
Select first object or [Polyline/Radius/Trim/mUltiple]:
Select second object:
Command: _u FILLET
Command: tr
TRIM
Current settings: Projection=UCS, Edge=None
Select cutting edges ...
Select objects: 1 found
Select objects: 1 found (1 duplicate), 1 total
Select objects: 1 found, 2 total
Select objects: 1 found (1 duplicate), 2 total
Select objects: 1 found, 3 total
Select objects: 1 found (1 duplicate), 3 total
Select objects:
Select object to trim or shift-select to extend or [Project/Edge/Undo]:
Command:
Command: Specify opposite corner:
Command: f
9

FILLET
Current settings: Mode = TRIM, Radius = 0.0000
Select first object or [Polyline/Radius/Trim/mUltiple]: r
Specify fillet radius <0.0000>: 1
Select first object or [Polyline/Radius/Trim/mUltiple]:
Select first object or [Polyline/Radius/Trim/mUltiple]:
Select second object:
Command: f
FILLET
Current settings: Mode = TRIM, Radius = 1.0000
Select first object or [Polyline/Radius/Trim/mUltiple]: r
Specify fillet radius <1.0000>: 1
Select first object or [Polyline/Radius/Trim/mUltiple]:
Select second object:
Command: f
FILLET
Current settings: Mode = TRIM, Radius = 0.0000
Select first object or [Polyline/Radius/Trim/mUltiple]: r
Specify fillet radius <0.0000>: 1
Select first object or [Polyline/Radius/Trim/mUltiple]:
Select first object or [Polyline/Radius/Trim/mUltiple]:
Select second object:
Command: f
FILLET
Current settings: Mode = TRIM, Radius = 1.0000
Select first object or [Polyline/Radius/Trim/mUltiple]: r
Specify fillet radius <1.0000>: 1
Select first object or [Polyline/Radius/Trim/mUltiple]:
Select first object or [Polyline/Radius/Trim/mUltiple]:
Select second object:
Command: f
FILLET
Current settings: Mode = TRIM, Radius = 1.0000
Select first object or [Polyline/Radius/Trim/mUltiple]: r
Specify fillet radius <1.0000>: 1
Select first object or [Polyline/Radius/Trim/mUltiple]:
Select second object:
Command: f
FILLET
Current settings: Mode = TRIM, Radius = 1.0000
Select first object or [Polyline/Radius/Trim/mUltiple]: r
Specify fillet radius <1.0000>: 1
Select first object or [Polyline/Radius/Trim/mUltiple]:
Select second object:
Command: ar
10

ARRAY
Select objects: 1 found
Select objects: Specify opposite corner: 1 found, 2 total
Select objects: Specify opposite corner: 0 found
Select objects: Specify opposite corner: 1 found, 3 total
Select objects: 1 found, 4 total
Select objects: 1 found, 5 total
Select objects: 1 found, 6 total
Select objects: 1 found, 7 total
Select objects: 1 found, 8 total
Select objects: 1 found, 9 total

9.2 AUTO LISP PROGRAM


; This program will draw a 2D profile of spur gear.
;
(defun C:2DGEAR (/ #DCL-FILE #DCL-ID #DCL-LIST #FILE #HELP #PITCH #PITCHLIST
#PREC #TEETH @ARC @BLOCK @GEAR-DRAW @GEAR-PTS @INSERT @LINE
@PANG @POLYARC @POLYLINE @TEETH *error*)
; start or R14 compatibility library
(if (= ( substr ( getvar "acadver") 1 2) "14")
(prong
(defun vl-file-delete (%A) nil)
(defun vl-filename-mktemp (%A / #DIR)
(cond
((setq #DIR (getenv "tmp")) nil)
((setq #DIR (getenv "temp")) nil)
(T (setq #DIR "")))
(strcat #DIR "\\" %A))
(defun vl-position (%A %B)
(if (member %A %B) (- (length %B) (length (member %A %B)))))

11

(defun vl-string-right-trim (%CHR %STR / #COUNT #LEN #LST #STR)


(setq #COUNT 1
#STR %STR
#LEN (strlen %CHR))
(repeat #LEN
(setq #LST (cons (substr %CHR #COUNT 1) #LST)
#COUNT (1+ #COUNT)))
(while (member (substr #STR (setq #LEN (strlen #STR))) #LST)
(setq #STR (substr #STR 1 (1- #LEN))))
#STR)
))
; end of R14 compatibility library
(defun *error* (%A)
(if (= (type #FILE) 'FILE) (close #FILE))
(cond
((= %A "Function cancelled") nil)
(t (princ (strcat "\nerror: " %A "\007\n"))))
(princ))
(if (not (and (equal (getvar "ucsorg") (list 0.0 0.0 0.0))
(equal (getvar "ucsxdir") (list 1.0 0.0 0.0))
(equal (getvar "ucsydir") (list 0.0 1.0 0.0))))
(progn (alert "You must be in the World UCS to use this program")
(quit)))
(setq #DCL-LIST (list
"gear2d : dialog {"
12

" label = \"2D Gear\";"


" : row {"
"

: column {"

"

spacer;"

"

: row {"

"

fixed_height = true;"

"

: toggle {"

"

key = \"prec\";"

"

label = \"&Precicion\";"

"

}"

"

: popup_list {"

"

height = 3;

"

label = \"&Pitch\";"

"

key = \"pitch_pop\";"

"

width = 16;"

"

"

}"

"

}"

"

: row {"

"

alignment = right;"

"

fixed_width = true;"

"

: edit_box {"

"

edit_width = 3;"

"

key = \"teeth\";"

"

label = \"&Teeth:\";"

"

}"
13

"

: button {"

"

key = \"teeth_minus\";"

"

label = \"-\";"

"

}"

"

: button {"

"

key = \"teeth_plus\";"

"

label = \"+\";"

"
"

}"
}"

"

}"

"

: boxed_radio_column {"

"

fixed_height = true;"

"

key = \"pang\";"

"

label = \"&Pressure angle\";"

"

: radio_button {"

"

key = \"14.5\";"

"

label = \"14.5 deg\";"

"

}"

"

: radio_button {"

"

key = \"20\";"

"

label = \"20 deg\";"

"

}"

"

: radio_button {"

"

key = \"25\";"

"

label = \"25 deg\";"


14

"
"

}"
}"

" }"
" spacer;"
" ok_cancel_help_cadalog_errtile;"
"}"
""
"cadalog_button : retirement_button {"
" key = \"cadalog\";"
" label = \"&CADalog.com...\";"
"}"
""
"ok_cancel_help_cadalog : column {"
" : row {"
" fixed_width = true;"
" alignment = centered;"
" ok_button;"
" : spacer {"
"

width = 2;"

" }"
" cancel_button;"
" : spacer {"
"

width = 2;"

" }"
" help_button;"
15

" : spacer {"


"

width = 2;"

" }"
" cadalog_button;"
" }"
"}"
""
"ok_cancel_help_cadalog_errtile : column {"
" ok_cancel_help_cadalog;"
" errtile;"
"}"))
(setq #HELP (strcat
"2D Gear Profiles\n\n"
"This program draws 2D profiles of standard involute tooth gears. \n"
"You can specify the pitch, pressure angle, number of teeth, and \n"
"insertion point.\n\n"
"The Precision check box will cause the gear to be created with a more\n"
"accurate involute."))

(setq #PANG (* pi (/ 20.0 180.0)) #PITCH 12.0


#PITCHLIST (list 1.0 2.0 2.25 2.5 3.0 4.0 6.0 8.0 10.0 12.0
16.0 20.0 24.0 32.0 40.0 48.0 64.0 80.0 96.0 120.0 200.0))
(defun @ARC (%A %B %C %D / #CEN)
(setq #CEN (list (car %A) (cadr %A) (if (caddr %A) (caddr %A) 0)))
(entmake (append (list '(0 . "ARC") '(8 . "0") (cons 10 #CEN)
16

(cons 40 %B) (cons 50 %C) (cons 51 %D)))))


(defun @BLOCK ()
(entmake '((0 . "ENDBLK")))
(entmake (list '(0 . "BLOCK") '(2 . "*XXX") '(70 . 1) '(10 0 0 0))))
(defun @GEAR-DRAW (/ #INV #PT0 #PTS)
(initget 1)
(cond
((/= #PREC 1) (setq #INV 1))
((> #TEETH 134) (setq #INV 1))
((> #TEETH 54) (setq #INV 2))
((> #TEETH 34) (setq #INV 3))
((> #TEETH 25) (setq #INV 4))
((> #TEETH 20) (setq #INV 5))
((> #TEETH 16) (setq #INV 6))
((> #TEETH 13) (setq #INV 7))
(T (setq #INV 8)))
(setq #PT0 (getpoint "\nInsert point: ")
#PTS (@GEAR-PTS (/ 1.0 #PITCH) #PANG #TEETH #INV))
(@BLOCK)
(@POLYLINE #PTS)
(@INSERT (list (cons 10 #PT0))))
(defun @GEAR-PTS (%PITCH %PANG %TEETH %TOOTHSEG / #A #B #C
#ADDENDUM #ADDRAD #ANG #ANGCON #ANGCORRECT #ANGCRV #ANGDFF
#ANGFILCTR
#ANGINC #ANGMIDCRV #ANGOUT #ANGTOPHLF #ANGTOPLND #BASERAD
#BIGANGSTRT
17

#BOTPT1 #BOTPT2 #COUNT #DEDENDUM #DEDRAD #FILLIST #FILPT0 #FILPT1


#FILPT2 #FILPT3 #FILRAD #INC #INV_LG #LIST #P #PITCHRAD #PT0 #PTLIST
#PTLIST0 #PTRAD #RADFILCTR #STRTANG #STRTRAD #STRTRADFIL #TMP
#TOOTHANG
#TOOTHLIST #TOPLNDPT #X @ACOS @BOTFIL #PTANG #PTRAD @ACOS @ASIN
@BOTFIL
@PTANG @PTRAD @TAN)
(defun @ACOS (%A)
(if (= %A 1.0) 0.0
(setq %A (- (/ pi 2.0) (atan (/ %A (sqrt (- 1.0 (* %A %A)))))))))
(defun @ASIN (%A)
(if (= %A 1) 1.0 (atan (/ %A (sqrt (- 1.0 (expt %A 2)))))))
;calculate fillet center
(defun @BOTFIL (%R %BR %DR %SR / #RT #Y)
(setq #Y (* (@TAN (@ACOS (/ %BR %SR))) %BR)
#RT (/ (- (* %DR %DR) (* #Y #Y) (* %BR %BR)) (* 2.0 (- #Y %DR)))))
(defun @PTANG (%RAD %BASERAD / #INTANG)
(setq #INTANG (@ACOS (/ %BASERAD %RAD)))
(- (@TAN #INTANG) #INTANG))
(defun @PTRAD (%BIGANG %BASERAD)
(/ %BASERAD (cos (atan %BIGANG))))
(defun @TAN (%A) (/ (sin %A) (cos %A)))
(setq #ADDENDUM 1.0 #DEDENDUM 1.250 #FILRAD (* %PITCH 0.300))
(setq #PT0 '(0.0 0.0)
#PITCHRAD (* 0.5 %TEETH %PITCH)
#BASERAD (* #PITCHRAD (cos %PANG))
18

#ADDRAD (+ #PITCHRAD (* #ADDENDUM %PITCH))


#DEDRAD (- #PITCHRAD (* #DEDENDUM %PITCH))
#ANGCRV (@ACOS (/ #BASERAD #ADDRAD))
#ANGCON (@TAN #ANGCRV)
#ANGDFF (- #ANGCON #ANGCRV)
#ANGMIDCRV (@PTANG #PITCHRAD #BASERAD)
#ANGINC (/ (* 2.0 pi) %TEETH)
#ANGTOPHLF (- #ANGDFF #ANGMIDCRV)
#ANGTOPLND (- (* 0.5 #ANGINC) (* 2.0 #ANGTOPHLF))
#RADFILCTR (+ #DEDRAD #FILRAD)
#INC (max 2 (* 2 %TOOTHSEG)))
(if (> #BASERAD #RADFILCTR)
(setq #STRTANG 0.0 #STRTRAD #BASERAD
#STRTRADFIL (sqrt (- (expt #RADFILCTR 2.0) (expt #FILRAD 2.0))))
(setq #A #BASERAD
#C #RADFILCTR
#B (sqrt (- (expt #C 2.0) (expt #A 2.0)))
#INV_LG (- #B #FILRAD)
#STRTRAD (sqrt (+ (expt #A 2.0) (expt #INV_LG 2.0)))
#STRTRADFIL #STRTRAD
#STRTANG (@PTANG #STRTRAD #BASERAD)))
(setq #BIGANGSTRT (@TAN (@ACOS (/ #BASERAD #STRTRAD)))
#ANGINCCON (/ (- #ANGCON #BIGANGSTRT) #INC))
(if (> #BASERAD #RADFILCTR)
(setq #ANG (@ASIN (/ #FILRAD #RADFILCTR)))
19

(setq #ANG (@ACOS (/ (+ (expt #STRTRAD 2.0) (expt #RADFILCTR 2.0)


(- (expt #FILRAD 2.0))) (* 2.0 #STRTRAD #RADFILCTR)))))
(setq #FILPT0 (polar #PT0 (- #STRTANG #ANG) #RADFILCTR)
#ANGFILCTR (angle #PT0 #FILPT0))
;DEFINE TOOTH POINTS
(setq #N 0.0
#TOOTHLIST (cons (list #STRTANG #STRTRAD) #TOOTHLIST))
(repeat #INC
(setq #N (+ #N 1.0)
#ANGOUT (+ (* #N #ANGINCCON) #BIGANGSTRT)
#PTRAD (@PTRAD #ANGOUT #BASERAD)
#ENDANG (@PTANG #PTRAD #BASERAD)
#TOOTHLIST (cons (list #ENDANG #PTRAD) #TOOTHLIST)))
;DEFINE GEAR POINTS
(setq #TOPLNDPT
(polar #PT0 (+ #ANGDFF (* 0.5 #ANGTOPLND)) #ADDRAD)
#ANGCORRECT (- (angle #PT0 #TOPLNDPT)))
(foreach #X #TOOTHLIST
(setq #PTLIST0 (cons (polar #PT0 (+ (car #X) #ANGCORRECT) (cadr #X))
#PTLIST0)))
;DEFINE FILLET POINTS
(setq #FILPT1 (polar #PT0 #STRTANG #STRTRADFIL)
#FILPT2 (polar #FILPT0 (* 0.5
(+ (angle #FILPT0 #PT0) (angle #FILPT0 #FILPT1))) #FILRAD)
#FILPT3 (polar #PT0 #ANGFILCTR #DEDRAD))
20

(foreach #X (list #FILPT1 #FILPT2 #FILPT3)


(setq #FILLIST (cons (polar #PT0 (+ (angle #PT0 #X) #ANGCORRECT)
(distance #PT0 #X)) #FILLIST)))
;DEFINE BOTTOM LAND
(setq #TOOTHANG (/ pi %TEETH 0.5)
#BOTPT1 (polar #PT0 (* 0.5 #TOOTHANG) #DEDRAD)
#BOTPT2
(polar #PT0 (+ #TOOTHANG (angle #PT0 (car #FILLIST))) #DEDRAD)
#BOTPT2 (list (car #BOTPT2) (cadr #BOTPT2) 1)
#COUNT 0)
;BUILD PTLIST
(foreach #X #FILLIST
(if (= #COUNT 2)
(setq #TMP (list (car #X) (cadr #X) 1))
(setq #TMP (list (car #X) (cadr #X))))
(setq #PTLIST (cons #TMP #PTLIST)
#COUNT (1+ #COUNT)))
(if (= #STRTRAD #STRTRADFIL)
(setq #COUNT 0 #PTLIST0 (cdr #PTLIST0))
(setq #COUNT -1))
(foreach #X #PTLIST0
(if (= #COUNT 1)
(setq #TMP (list (car #X) (cadr #X) 1))
(setq #TMP (list (car #X) (cadr #X))))
(setq #PTLIST (cons #TMP #PTLIST))
21

(if (= #COUNT 1) (setq #COUNT 0) (setq #COUNT (1+ #COUNT))))


(setq #PTLIST (cons (polar #PT0 0.0 #ADDRAD) #PTLIST)
#PTLIST0 (reverse #PTLIST0)
#PTLIST (cons (list (caar #PTLIST0) (- (cadar #PTLIST0)) 1) #PTLIST)
#PTLIST0 (cdr #PTLIST0)
#COUNT 0)
(foreach #X #PTLIST0
(if (= #COUNT 1)
(setq #TMP (list (car #X) (- (cadr #X)) 1))
(setq #TMP (list (car #X) (- (cadr #X)))))
(setq #PTLIST (cons #TMP #PTLIST))
(if (= #COUNT 1) (setq #COUNT 0) (setq #COUNT (1+ #COUNT))))
(setq #COUNT 1)
(foreach #X (reverse #FILLIST)
(if (and (= (length (car #PTLIST)) 2) (= #COUNT 1))
(setq #TMP (list (car #X) (- (cadr #X)) 1))
(setq #TMP (list (car #X) (- (cadr #X)))))
(setq #PTLIST (cons #TMP #PTLIST))
(if (= #COUNT 1) (setq #COUNT 0) (setq #COUNT (1+ #COUNT))))
(setq #ANG 0
#PTLIST (cons #BOTPT1 #PTLIST)
#PTLIST (reverse (cons #BOTPT2 #PTLIST)))
(repeat %TEETH
(foreach #X (reverse (cdr (reverse #PTLIST)))
(setq #P (list (car #X) (cadr #X))
22

#TMP (polar #PT0 (+ (angle #PT0 #P) #ANG) (distance #PT0 #P)))
(if (caddr #X) (setq #TMP (list (car #TMP) (cadr #TMP) 1)))
(setq #LIST (cons #TMP #LIST)))
(setq #ANG (+ #ANG #ANGINC)))
(setq #LIST (cons (append (last #LIST) (list 1)) #LIST))
(reverse #LIST))

(defun @INSERT (%A)


(entmake (append
(list '(0 . "INSERT") (cons 2 (entmake '((0 . "ENDBLK")))))
%A (list (cons 41 1.0) (cons 42 1.0) (cons 43 1.0)))))
;%A - start point
;%B - endpoint
(defun @LINE (%A %B / #A #B)
(setq #A (if (caddr %A) (caddr %A) 0))
(setq #B (if (caddr %B) (caddr %B) 0))
(entmake (append '((0 . "LINE") (8 . "0"))
(list (list 10 (car %A) (cadr %A) #A)
(list 11 (car %B) (cadr %B) #B)))))
(defun @PANG (%A)
(cond
((= %A "14.5") (setq #PANG (* pi (/ 14.5 180.0))))
((= %A "20") (setq #PANG (* pi (/ 20.0 180.0))))
((= %A "25") (setq #PANG (* pi (/ 25.0 180.0))))))
(defun @POLYARC (%PT1 %PT2 %PT3 / #1-2 #2-3 #ANG1-2 #ANG2-3 #END
23

#MID #PROJ1 #PROJ2 #PT0 #START)


(setq #ANG1-2 (angle %PT1 %PT2)
#ANG2-3 (angle %PT2 %PT3)
#1-2 (polar %PT1 #ANG1-2 (* 0.5 (distance %PT1 %PT2)))
#2-3 (polar %PT2 #ANG2-3 (* 0.5 (distance %PT2 %PT3)))
#PROJ1 (polar #1-2 (+ #ANG1-2 (* 0.5 pi)) 1.0)
#PROJ2 (polar #2-3 (+ #ANG2-3 (* 0.5 pi)) 1.0)
#PT0 (inters #1-2 #PROJ1 #2-3 #PROJ2 nil)
#START (angle #PT0 %PT1)
#MID (angle #PT0 %PT2)
#END (angle #PT0 %PT3))
(if (or (and (< #START #END) (or (> #MID #END) (< #MID #START)))
(and (< #MID #START) (> #MID #END)))
(setq #START #END #END (angle #PT0 %PT1)))
(@ARC #PT0 (distance #PT0 %PT1) #START #END))
(defun @POLYLINE (%PTLIST / #1 #2 #3 #FIRST #LAST
#PT1 #PT2 #PT3 #PTLIST)
(setq #PTLIST %PTLIST
#FIRST (car #PTLIST)
#LAST (last #PTLIST))
(while (> (length #PTLIST) 1)
(setq #1 (car #PTLIST)
#2 (cadr #PTLIST)
#3 (caddr #PTLIST)
#PTLIST (cdr #PTLIST)
24

#PT1 (list (car #1) (cadr #1))


#PT2 (list (car #2) (cadr #2)))
(if #3
(setq #PT3 (list (car #3) (cadr #3))))
(cond
((= (caddr #3) 1)
(@POLYARC #PT1 #PT2 #PT3)
(setq #PTLIST (cdr #PTLIST)))
(T (@LINE #PT1 #PT2)))))

(defun @TEETH (%A / #TMP)


(if (> (setq #TMP (abs (atoi %A))) 8) (setq #TEETH #TMP))
(set_tile "teeth" (itoa #TEETH)))
(setvar "cmdecho" 0)
(setq #DCL-FILE (vl-filename-mktemp "2Dgear.dcl")
#FILE (open #DCL-FILE "w"))
(foreach #X #DCL-LIST (write-line #X #FILE))
(close #FILE)
(if (< (setq #DCL-ID (load_dialog #DCL-FILE)) 0)
(progn
(alert "\nCan't load DCL file.")
(quit))
(vl-file-delete #DCL-FILE))
(if (not (new_dialog "gear2d" #DCL-ID)) (quit))
(set_tile "pang" "20")
25

(start_list "pitch_pop")
(foreach #X #PITCHLIST
(add_list (vl-string-right-trim "." (vl-string-right-trim "0" (rtos #X)))))
(end_list)
(set_tile "pitch_pop" (itoa (vl-position #PITCH #PITCHLIST)))
(@TEETH "12")
(action_tile "accept" "(done_dialog 1)")
(action_tile "cadalog" "(done_dialog 2)")
(action_tile "help" "(alert #HELP)")
(action_tile "pang" "(@PANG $value)")
(action_tile "pitch_pop" "(setq #PITCH (nth (atoi $value) #PITCHLIST))")
(action_tile "prec" "(setq #PREC (atoi $value))")
(action_tile "teeth" "(@TEETH $value)")
(action_tile "teeth_minus" "(@TEETH (itoa (1- #TEETH)))")
(action_tile "teeth_plus" "(@TEETH (itoa (1+ #TEETH)))")
(setq #GO (start_dialog))
(cond
((= #GO 1) (@GEAR-DRAW))
((= #GO 2) (command "_.browser" "www.cadalog.com")))
(princ))
;;; Uncomment for the language needed.
;(princ "\n\N SPUR GEAR Jn") ; For Japanese.
(princ "\n\nType SPUR GEAR to start.") ; For English.
(princ)

26

CHAPTER 10
OUT PUT AND RESULT

The spur gear was designed successfully using Auto lisp command

27

28

Vous aimerez peut-être aussi