(defun C:gear ()3 O4 {. l |) s; n2 L8 A5 R: i
(setq numt nil0 \. f: }; Q. k/ w2 X. K% {4 Z: |
diap nil
6 {' V. m6 H; X. b prsa nil
6 c4 m ^$ V- d, @& Q) u pnts nil
" `- J0 `% |+ n ? |& @ test nil
u- p/ y# L2 d$ X' \( [' c pwd nil
0 E' n- K1 Q( Q )
8 w5 M2 Q4 x* K: Q % V. }& ~/ p5 ~0 r6 V
(setq numt (getint "Number of teeth:<24>"))
2 g' A, c ]& P! t (if (= numt nil)
/ }0 w# b5 @2 R6 v, A8 Y (setq numt 24)
1 }$ G2 u6 }$ I )
4 n0 V! s8 ]( i$ ]9 i3 l (setq diap (getreal "Modulus of gear:<0.5> ")) a* r! j& J! Q2 n1 `3 A
(if (= diap nil)
. f( k9 I6 _ I6 [. _ ?7 [7 R, W (setq diap (/ 1 0.5))5 ^/ x8 T# d' Y" V3 p+ q
(setq diap (/ 1 diap))
) J8 _% Y" e/ \ |8 H+ P0 g )
. g6 ?- I1 f, O$ U (setq prsa (getreal "Pressure angle:<20.0> "))
; ^* P# L, S! T. D3 W5 [ (if (= prsa nil)
- {! F9 f o" A: t5 ` (setq prsa 20.0)
4 L1 `/ V; M) Y5 f/ ~- @ )
+ [7 y5 R3 V7 { (setq pnts (getint "number of points on curve:<40> "))8 Y& e. n# K! f ]$ ]& j
(if (= pnts nil) e2 C2 @9 O2 Q9 O8 M
(setq pnts 40)
^& |0 P Z) e8 v4 E, e& @ )( s* ?' w* Z2 l! A5 d
$ |% n8 @, L: V8 E5 M
; (setq pwd (getreal "Please input password:"))8 T. D N/ D; ?6 q) }2 j
; (if (/= pwd 8833)
3 v' S( ^4 D* A1 y+ W- J# S( f; (setq numt 0)0 Q0 K3 H) T; u, Y
; )7 ^) O7 [$ y7 X1 i8 l; n- d
; (if (= pwd nil)
3 t* \. O2 H% }$ ]. M5 B; (setq numt 0)* h8 M) Y# p" p3 P6 C5 ?
; )
' u! J5 y, n @0 T;
* E: t. U) r( A& q, I7 [ (command "osnap" "non")
, T1 a' ]7 v. D4 h (setvar "cmdecho" 0)
* Q6 u0 |" u4 x R. I$ {" E y (setq oldvar (getvar "pickbox"))
3 K/ r+ X9 N/ Y: j2 m' O (setvar "pickbox" 0)
& ~0 J: k( A% X$ x" J$ `1 j( s (setvar "aperture" 1)9 |2 N5 N* R3 m# M. q7 Q: H
(command "osmode" "0" )
: T' S! v8 a, i, _ ];
" e t @* l* D) H% Z (setq prsa (/ (* prsa pi) 180.0))) }( {, z x; v1 m6 H/ B0 k
(setq pitd (/ numt diap))5 i4 g, j( s& p
(setq outd (/ (+ numt 2) diap))
2 D6 Y5 G" O# ]+ q+ B0 m! i (setq basr (/ (* pitd (cos prsa)) 2))5 i5 j8 M% s, w& _, i7 F6 \
(setq orad (/ outd 2.0))) c- L5 k5 D; o2 u# Z- Q+ ?
(setq z (- (expt orad 2.0) (expt basr 2.0)))4 Q3 v* | J+ H
(setq x (sqrt z))
- ~6 _+ R( c. X# E/ J6 F (setq paodd (atan (/ x basr)))
R. ]' t1 |; H- ^2 p (setq incr (/ paodd pnts))% g* i% G$ I2 s0 v6 K4 M1 @
(setq p 0.0)
/ Q2 @2 J! ^! N/ i" f0 _( g7 F9 b# } (setq pitr (/ pitd 2.0))
. }5 X# s. |9 C3 A (setq pang (/ 360. (* numt 4.0)))
$ u3 h9 V1 {" c5 G7 v (setq pang (/ (* pang pi) 180.0))- m5 b* W* F# Y0 k
(graphscr)
# W7 P, m! A0 H/ c (setq p2 (getpoint "center of gear:"))5 r" W" W) Z) X
(setq y2 (cadr p2))
, B4 z: R. h! l6 v& d7 Z (setq x2 (car p2))5 ^/ B0 {9 d! a$ h9 g4 x7 S
(setq r0 (/ (/ (- numt 2.5) diap) 2))1 {% n! N0 Q7 S
(setq r1 (/ 0.2 diap))
# a7 n [# P4 B L$ s+ u9 B (setq h (sqrt (- (* (+ r1 r0) (+ r1 r0)) (* r1 r1))))- A# X: F! m% A/ R/ L [( @
(setq ang0 (/ (* pi 2) numt))0 c' F1 {0 v6 |- P
, W4 E. @6 D0 o$ z
(setq y5 (+ y2 basr))! E, C6 L/ A! f& v
(setq p5 (list x2 y5))
. Q3 a# n; p6 c# d8 R# N (setq y55 (+ y2 r0))0 U9 _8 d( [/ H; P- N- J: P5 g
(setq p55 (list x2 y55))$ @) f2 C( G# O: ~
(setq p88 (list (+ x2 2) (+ y5 2)))0 Y+ A' ?$ W( z. X) G/ ?$ s+ Z
(setq a3 (/ (* pi 5) 4))- A+ G! D* Y5 l( M) Z
(setq a4 (/ pi 4)): h ?3 T& u- R
(setq pz3 (polar p2 a3 (* orad 1.5)))6 w7 V* P& h! A2 Z4 g
(setq pz4 (polar p2 a4 (* orad 1.5))); V* `3 @6 r1 Q" @2 ^9 g
(command "zoom" "w" pz3 pz4)
* Y/ z q" n6 x6 p7 h4 r: F; o; D3 t0 d L) M1 X6 U, C2 J
(setq clay (getvar "CLAYER"))5 ^" x9 S& R0 K1 D' T$ q
(setq sblip (getvar "BLIPMODE")): W4 H7 c7 p1 x
(setq ts (tblsearch "LAYER" "CEN"))& H9 g. @( ^6 K! @3 B( C" B
(if (null ts)
. ]: F; j/ @$ N, Z0 [0 G (progn; x& C" q2 l i) s6 K
(prompt "\nCreating new layer - CEN. ") + p' ?1 _3 l |4 Q
(setvar "BLIPMODE" 0)- W" Q! R+ a4 t7 I$ }) I4 O* C
(command "LAYER" "M" "CEN" "LT" "CENTER" "CEN" "C" "RED" "CEN" "")
7 O4 K6 [% W7 J )
' f1 j& b. k- a8 G (progn
0 z! u! I9 i. e3 g6 \- D0 i (if (> (cdr (assoc 70 ts)) 0) (command "LAYER" "T" "CEN" "ON" "CEN" "U" "CEN" ""))8 a0 x( a' n6 U% R6 b
(command "LAYER" "S" "cen" "")
0 z3 q/ B2 {) b6 M* |, A# q )6 m& w( X$ A; E4 z, m) f2 E
)6 h. Z. m' l3 F4 ~2 c' o9 J7 r2 {1 Y
(command "circle" p2 pitr)
- b4 i# j3 J5 M( K; s% _ (setvar "BLIPMODE" sblip)+ N4 H! N5 c7 l' E9 }" z: L0 |
(command "LAYER" "S" clay "")
: p) r: N( [1 T/ a0 h- ?0 |0 D;
. l0 o: z7 I! `3 v& W (setq a1 (- (/ pi 2 ) 0.1)); R- [" w' \# E9 R
(setq a2 (+ (/ pi 2) 0.1))
9 y$ N; e" Q; w0 B* s (setq pz1 (polar p2 a1 basr)), A! A- R) k' W. e; {3 V0 n* W
(setq pz2 (polar p2 a2 orad)); M( |; L' }% Z- X( M4 l, f
(command "zoom" "w" pz1 pz2)9 q1 J1 M' i G" u2 l6 U4 u' p
(setq s (ssadd))
9 _4 `: y4 O/ Y (setq le (entlast))
8 \1 I* z: q7 w (setq test 0)
$ c1 {/ n& d; c+ e' T. p$ [) R7 R% c; i3 s; j
(command "pline" p5)9 r m8 n9 [( }+ ], W
(setq p (+ incr p )). b r+ j8 H/ B0 G$ K1 f5 }
(while (> pnts 0)8 S! b0 F2 W* P
(setq e1 (sin p))* M1 |7 J T% F. T. d9 J
(setq e2 (cos p))
) N) y$ s) ?! C8 N9 G" _, e# Z (setq e (/ e1 e2))1 S* D1 r8 q8 f9 M* Z- Y$ I
(setq j (- e p))8 w' N; @+ U6 ^4 I
(setq x1 (* (/ (sin j) (cos p)) basr))
% O, W) F c+ b8 c4 K (setq y1 (* (/ (cos j) (cos p)) basr))
! x: A; x! n& s, E) m7 I (setq x3 (+ x2 x1))
% l6 n' W: j8 | (setq y3 (+ y2 y1))" W s, X t" u% E
(setq p3 (list x3 y3))
4 l* v( V1 ]1 J# H! s4 D2 j- [ (command p3)
( W6 W6 r. v, d* H N! r3 d (setq p (+ incr p))' C9 X* o& M, d O! W6 g
(setq pnts (- pnts 1))
! }* L5 T7 y7 c" e5 g (if (/= test 1)" I! D4 Z5 f n# ]4 E
(progn4 v. x+ c, b9 m; N
(setq hyp (sqrt (+ (expt x1 2) (expt y1 2))))
& L' m9 j( u. [+ Q# p& V) f" Z/ S0 {% I (if (> hyp pitr)
: q) i% a P; r5 @ (progn; ]- A+ z( t* ^8 @: n
(setq pint p3) I5 ^' r, s( b* q$ H
(setq test 1)7 f; z+ t0 y% S: }
)
) k1 X8 G% J; F, y) x5 K9 | ): o {; j3 @( y N$ k' B
);endif5 N) }. G( A9 }( p3 N% v- H6 T
);endif0 [' I& [2 { E
)
' g3 g3 N" F9 s# X& M* _8 E1 E" |$ J (command "")( x. U! G% c3 B# `' X
(setq L2 (ssget "L"))
/ ]1 d4 n3 {1 D9 Y7 }. A (initget "Y y N n")# h; C- N1 c4 L1 y) E5 N/ A
(setq ans (getkword "\n Finish the gear ?:<Y> "))& u$ T3 `9 K# \4 g8 V5 `
(if (/= ans "N")
" v- t/ n$ ~% U% [5 r+ {0 J. }# u (progn
5 `8 j( I& \* V: n' t (command "zoom" "w" pz1 pz2)9 ~0 k* n$ u# i9 t. |
(setq p11 (osnap pint "inter"))
6 W9 I2 a. y$ }9 R& G (setq ang (angle p2 p11))- [% P1 y& j/ P! [' P$ H1 u
(setq angi (- ang pang))9 A* U: g @0 s: E6 z) Y. ?. y
(setq p12 (polar p2 angi 1.0))" d2 r6 k% [* \1 r- n
;. X# Z# M" f8 _& \* E2 V' C
(if (< (* 0.94 numt (/ 1 diap)) (* h 2.0005))7 w# U( O9 y) ^$ T
(progn5 p% j% T- f9 r# a5 e
(if (< numt 42)
9 \! j d. e5 i3 k (progn; D, C l+ }4 ~
(setq p56 (list x2 (+ y2 r0)))
% W- _/ \) K/ E (command "line" p56 p5 "")2 _- x0 k. L$ P# z: J3 L u8 n
(setq L33 (entlast))8 f ?7 _) D) p7 w k' V
(command "zoom" "w" p77 p88): Q1 M }! L4 V) T" t3 o& W
(command "mirror" L2 L33 "" p2 p12 "")
* ~8 e) ~6 p, ^- i# t1 } (setq adj1 (- angi (/ pi 2)))
2 E {" U9 ~$ B (setq adj2 (- (/ pi 2)(* pang 4)))
: @! y2 n M$ o3 t! [0 B, h (setq p17 (polar p2 (+ angi adj1) r0)); Z& B4 _: |6 {" L
(setq p16 (polar p2 adj2 r0))
4 B. ?: r) k2 w) }! I( e (command "arc" p16 "c" p2 p17). U' _, c- V' S0 `* o9 V6 o- p
) ;end progn
: ^( e5 X1 q! l g* I4 e (progn
, y5 m. V9 v. ^7 O (command "zoom" "w" p77 p88)9 _% E) N1 s' d- T5 l$ f$ r
(command "mirror" L2 "" p2 p12 "")
/ @/ ?( v7 q" P7 J1 a! d) E (setq pL1 (entlast))
; @/ o/ |! b' a1 `4 z' j& J8 A (setq adj1 (- angi (/ pi 2)))# L' v4 H$ W; q) I3 O5 q% b$ M
(setq adj2 (- (/ pi 2)(* pang 4)))4 h8 c; k9 I2 a* o3 n# D+ r' ~
(setq p17 (polar p2 (+ angi adj1) r0))
, N5 k4 ?6 L& T* B (setq p16 (polar p2 adj2 r0))
: V. w$ Z* [" y! t+ M$ b5 j (if (> numt 101)
* P! [4 I) @' d4 h# w& t3 ~- t (command "arc" p17 "c" p2 p16)$ \# A7 B; h, \8 D
(command "arc" p16 "c" p2 p17))
, k( z$ H4 |4 y& P1 L (setq arc4 (entlast))3 A5 @8 g8 q& T `" ^
(setq p171 (polar p17 0.7854 (/ 0.4 diap)))
, b) C3 G3 }. I) V% l4 c4 b (setq p172 (polar p17 3.9 (/ 0.4 diap)))9 Z( i* ] i+ |# i- y: d+ k
(if (> numt 101)
& Y. q3 i) X# d& C& Y$ B7 M (setq p18 (polar p2 (+ angi adj1 ang0) r0))
+ K8 g5 H9 y6 M (setq p18 (polar p2 (+ adj2 ang0) r0)))
3 E* m3 k; Z/ Q& g0 D (setq p181 (polar p18 2.3 (/ 0.4 diap)))! L$ ]# @' f9 e( ?; D) i
(setq p182 (polar p18 5.5 (/ 0.4 diap)))
. [1 s, y7 [; \5 I- @! u (command "zoom" "w" p171 p172)
6 A' S' ^/ A% ?& }# { (if (> numt 101)
: k; |7 O9 n* Y5 I, C Q7 z (command "extend" pL1 "" p16 "") + Y* h2 V8 E* t( h
(command "extend" pL1 "" p17 ""))) |2 |* k c( O+ C& \, n
(setq ang0 (/ (* ang0 180) pi))
5 Q1 \, j) y6 ?/ d* A- j (command "rotate" arc4 "" p2 ang0)
! X$ B( Z9 Q, c6 o: p. Y/ E' Y (command "zoom" "w" p181 p182)5 e+ v6 A- G0 u
(command "extend" L2 "" p18 "")
, k" Z& m/ _% X2 U3 `, T (command "zoom" "w" pz1 pz2)
, ?$ Z' a7 _7 ]* Q (command "trim" arc4 "" p5 "")2 D2 o- q' Y6 ]
(command "erase" pl1 "")
! D6 ]% ?7 R/ u0 x (command "mirror" L2 "" p2 p12 "")
! M# f9 }" j" S7 Q- W2 n ) ;end progn* P( H3 L$ |! i* m$ l7 h! x
) ;end if
# P0 G: ^9 ~; ^7 u ) ;end progn
_ A, {+ T4 f9 z1 [" W' {) v2 L (progn * X8 T4 T7 O; L( o0 I
(setq ang12 (- (/ pi 2) (angle p2 p12)))
( T' c& q4 g1 j# h (setq ang57 (atan (/ r1 h)))3 ]$ s/ f- ?! I% Z
(setq ang58 (- ang0 (* ang12 2) (* ang57 2)))7 M y) Z" S3 h1 Q9 Z& s; `" g# y) n
(setq ang577 (+ (/ pi 2) ang57))2 K. p0 y0 `# o+ a2 O4 y
(setq ang588 (+ ang577 ang58))
* Y/ s* n1 B( m5 v$ r6 Q (setq p57 (polar p2 ang577 (+ r1 r0)))
I) q/ a& @5 I (setq p577 (polar p2 ang577 r0))# f/ B- J# _0 w% t b3 C
(setq p588 (polar p2 ang588 r0))
& c7 S6 e) d6 e4 C, T. v (setq p56 (list x2 (+ y2 h)))
' v0 G# @) _. _+ y: x6 X1 G (command "arc" p577 "c" p57 p56)
0 K6 d1 E! S5 x, B$ k1 J (setq arc1 (entlast))) a3 x. [; K2 l ]+ J8 f
(command "arc" p577 "c" p2 p588)$ L8 {3 C1 X3 f& J
(setq arc2 (entlast))) U" B* o& H- i+ M4 Y8 v
(command "line" p56 p5 "")6 T0 n+ r0 z8 G. S0 t1 U1 W
(setq L33 (entlast))
0 R5 G3 ?1 T/ v# f/ `; ` (command "zoom" "w" p77 p88)
; \# H# T' M$ ]% c5 B (command "mirror" arc1 arc2 L2 L33 "" p2 p12 "")
. O6 U: R! m# N v (command "erase" arc2 "")
n4 H: C: X% F ) ;end progn
$ D6 t9 e6 e1 e7 M, S2 P( [ ) ;end if; {: T" o4 Y2 a9 o' |, o; N6 j
; 0 i( A+ I$ w! m3 @, |* j
(setq beta (angle p2 p3)), x" ]( x+ k" M& V. s& c
(setq ang2 (- (* angi 2) beta)) V7 r N# x. x6 Y( W! B
(setq p15 (polar p2 ang2 orad))
% n( n' g8 }9 p5 c( d' O (command "arc" p15 "c" p2 p3)
, f2 X5 _2 q* f& T, f' m9 a% _ (while (setq le (entnext le))9 Z- L( }3 n* `4 i$ U, C
(ssadd le s)/ |& Q/ M i5 l& r* R: P
)
# F9 t8 D$ Z, k (command "array" s "" "p" p2 numt "" ""); `5 Z( u- q' a% o! e0 |
(setq q1 (nth 0 p2))
" k7 _& J9 X6 h$ ?3 ~' K! c (setq q2 (nth 1 p2)) a$ ^ C: K m0 W7 P
(setq q5 (+ q1 pitr 2))
" c+ \1 W* D. ~: A9 m; N (setq q6 (- q2 pitr 2))8 j6 G3 y: j* c5 e+ O4 U
(setq q3 (- q1 pitr 2))+ V! @: W0 }; b0 f
(setq q4 (+ q2 pitr 2))
# A: o4 i7 c( k2 O (setq q1 (list q5 q6))9 i) Z2 a7 L3 ] J# A% |
(setq q2 (list q3 q4))5 F% {. I$ Z% a0 B; o$ H& Q( s
(command "zoom" "w" q1 q2)4 H: W. N$ l! m3 ~
)4 ^7 ?8 y. S1 p
)
U0 ?. j g7 d5 E8 |2 O% W3 M8 x (setvar "pickbox" 5)
& {! A8 x/ X, F! |* H$ M+ q, j (setvar "aperture" 5) @1 X4 m R2 D
(setvar "osmode" 37)5 w( _& L: d, ^/ I( v* V
3 ]: [# T& N. p+ O! J
(princ "Finish gear "): }. Z3 b! y6 c3 c, F; O+ f
(princ numt): }7 r4 j p% N' t/ K- A
(princ "T")# H( T5 i! L+ k
(princ)- I" d5 e! Y @5 g3 X% b
)& W: k2 b* O+ {& r3 L
- z8 {/ v, E/ q$ @) ~, c* ] |