(defun C:gear ()* \% S; W, O* P& R% s
(setq numt nil3 r+ {! e2 L; ^5 Q
diap nil
" t9 S, |/ O. z, u9 e1 W( I! U2 Y prsa nil
, C) p/ [# P8 P2 y# d5 u( k. p ?' y pnts nil
( U; {- D9 U% U+ T. }, ?2 W+ v test nil; P& S. \4 N' q
pwd nil% H6 S& q) E8 N: [
) r* X3 c% P! K" x( ?0 [7 g
6 A+ N% O- u: I5 @
(setq numt (getint "Number of teeth:<24>"))5 x$ `- [: k3 A! s8 d
(if (= numt nil)9 ?% ? u/ c) E! A) D. r$ J+ S( A
(setq numt 24)3 Q/ d7 D( n1 L( G( D
)
% H. }$ Q% l( T (setq diap (getreal "Modulus of gear:<0.5> "))7 o% l+ ?4 L+ U, k5 B6 G5 D P
(if (= diap nil)! @- C2 H- l1 H2 V5 a8 t
(setq diap (/ 1 0.5))
) T! e7 }( B9 ]' ^' d (setq diap (/ 1 diap))
/ [# n4 _: r& D; [% l4 w6 E" W) L5 u ): J' \9 Y1 o" j1 M+ R. k0 J( e* D* D
(setq prsa (getreal "Pressure angle:<20.0> "))
( _, _% z& I5 \* \ (if (= prsa nil)# j7 x0 [4 D, t
(setq prsa 20.0)
* @* q7 D, [3 f/ R )) d% ]$ U% D" x; y' v" I
(setq pnts (getint "number of points on curve:<40> "))' g/ H( m( l/ ^4 o1 d& }0 f
(if (= pnts nil)
4 R& m1 O( k3 f# n/ [( `2 ^ (setq pnts 40)6 V) c' d3 K8 I/ T7 h7 j0 W
)
7 L# x# w! w6 x }2 W) v' z1 w- b" C
; (setq pwd (getreal "Please input password:"))3 K. X' Y, u5 \ y* s: j: j# [
; (if (/= pwd 8833)" n1 N1 h1 E F \$ T% o3 x
; (setq numt 0)% E2 }9 p2 |9 S
; )
# w7 B" [ x9 K, ?* Z1 U; @7 a0 }; (if (= pwd nil)
, b/ ?& C* E( a/ w6 t0 W1 I$ {; (setq numt 0)' e7 n$ F, B, }2 V" _% F
; )9 n7 {4 I- o3 T; U
;
" O2 X' D* o- f) f( X+ ^ (command "osnap" "non"): m# D/ c0 m; i3 h" }( `8 \; `
(setvar "cmdecho" 0). _) s: O9 Z8 r t" y% k0 i/ }
(setq oldvar (getvar "pickbox"))
; g% X" x4 r, x$ u (setvar "pickbox" 0)# z U0 P$ c* y' n
(setvar "aperture" 1)
! u/ d) x$ J: _) r (command "osmode" "0" )0 r8 ?! d8 ?6 U9 s# c3 j7 P
;9 z, E- X1 S% {& W5 T
(setq prsa (/ (* prsa pi) 180.0))
7 k2 ^% O- r* U. g' v (setq pitd (/ numt diap))
- r4 z+ s' @* f1 m (setq outd (/ (+ numt 2) diap))
" O. ~( N) N4 F) K1 ^ (setq basr (/ (* pitd (cos prsa)) 2))0 F \/ Y% }$ i) n5 }) c, g2 H. ~
(setq orad (/ outd 2.0))& ?* X( L/ z+ r1 L
(setq z (- (expt orad 2.0) (expt basr 2.0)))$ k/ E- R# L% h! t+ C
(setq x (sqrt z)) J0 R' N! F. P. @/ w" ?( s _
(setq paodd (atan (/ x basr)))
+ Y+ [) [) Q( [6 b) N7 m (setq incr (/ paodd pnts)) i& |! [6 h1 V/ n
(setq p 0.0)
1 ^* z, g2 [( y, |# A8 I9 c (setq pitr (/ pitd 2.0))
9 @, L* U2 z7 @. U (setq pang (/ 360. (* numt 4.0)))0 g" t! C; h' `2 q
(setq pang (/ (* pang pi) 180.0))! V; S/ d0 {# n8 z: N% z
(graphscr)9 x% @# r7 C1 Y- [* S$ E6 n# K
(setq p2 (getpoint "center of gear:"))
1 C' `/ P5 I7 r/ U3 h (setq y2 (cadr p2))
- ?1 p; q# `5 L0 V' F2 W2 J5 X (setq x2 (car p2))
5 S( e; w4 X) c4 C: I (setq r0 (/ (/ (- numt 2.5) diap) 2))
/ i, G! S4 t) t8 j (setq r1 (/ 0.2 diap))0 W2 m$ y0 c' Z5 F7 g
(setq h (sqrt (- (* (+ r1 r0) (+ r1 r0)) (* r1 r1))))
0 U( P, p" A/ J0 w C (setq ang0 (/ (* pi 2) numt))
. R: e# [- P( J+ u/ h( B8 A3 T5 r3 `& ?2 Y( a
(setq y5 (+ y2 basr))
. ?# w2 J9 ~: }0 ~, D5 ] (setq p5 (list x2 y5))
7 w! [- `( k' \) ]5 x' g (setq y55 (+ y2 r0))4 }3 a! E; ?$ C( v
(setq p55 (list x2 y55))7 f% ~- x* `8 g# {% i4 w& E
(setq p88 (list (+ x2 2) (+ y5 2)))
* n T: f; S) u1 b% E (setq a3 (/ (* pi 5) 4))
6 x7 ?: |" h8 i& g' M$ y (setq a4 (/ pi 4))
[: W" p! l# W: P! n% s; L& y (setq pz3 (polar p2 a3 (* orad 1.5)))
) T# A7 r/ D" y* u (setq pz4 (polar p2 a4 (* orad 1.5)))2 d0 t+ p" n1 `: e* e
(command "zoom" "w" pz3 pz4)1 d; v% G& ]: L! J5 E. Y* Z' h
;
9 M9 e; ~' i' V2 j# w; p/ E (setq clay (getvar "CLAYER"))1 _1 d4 l6 m$ c; q$ ]5 ~- b
(setq sblip (getvar "BLIPMODE"))
' |' O. L* r: ], j& O; L6 l: H (setq ts (tblsearch "LAYER" "CEN"))9 p# g5 V, t+ I. T' {
(if (null ts)
; E- O& Z+ p9 D/ ~: ?. E (progn. h7 e6 u5 J; e1 w( q
(prompt "\nCreating new layer - CEN. ")
; V w: h! S' \6 c% o (setvar "BLIPMODE" 0)) h" @7 ]% b! h& }9 f# i0 ?
(command "LAYER" "M" "CEN" "LT" "CENTER" "CEN" "C" "RED" "CEN" "") " u L) R; V H
)9 k1 G" t; d% b
(progn( O# q6 |$ l# q- v6 f5 c2 o
(if (> (cdr (assoc 70 ts)) 0) (command "LAYER" "T" "CEN" "ON" "CEN" "U" "CEN" ""))
" O+ H+ A! W+ O) y (command "LAYER" "S" "cen" "")
9 t1 ^/ D- v" a+ k) J )% I! Q1 |5 w4 ~/ E
)
( K! A6 |, @, ?7 ?2 T% O- m3 H (command "circle" p2 pitr)
+ [ l/ d" G, Z0 I" S (setvar "BLIPMODE" sblip)* U/ C0 `) t+ g- }" d4 d2 I# n
(command "LAYER" "S" clay "")
" T1 s1 p8 f5 s8 ?" U;: e2 c& U5 q6 C% j& I7 _- s+ }
(setq a1 (- (/ pi 2 ) 0.1))
- F5 j& k0 L- f6 w (setq a2 (+ (/ pi 2) 0.1))
: v. K0 d; y1 l' r6 L9 I (setq pz1 (polar p2 a1 basr))
i6 Z; i R: l' ^5 ^; u0 l; h (setq pz2 (polar p2 a2 orad))8 [: E' r1 }% s; R2 J+ m/ h) S/ B
(command "zoom" "w" pz1 pz2)
( o9 {( q2 F# L1 [ (setq s (ssadd))
+ n& Z6 B" \1 }. A% A, h# I/ u (setq le (entlast)): Y0 t0 A4 e. x% N* v
(setq test 0)
+ O. p6 p% ]; @! [
/ S8 k: G+ N. }$ i (command "pline" p5)8 b; x: B/ v" p! g) `* Z/ a
(setq p (+ incr p ))
+ k; {3 Y# L, t* H E (while (> pnts 0)' v9 q t8 ?1 n! A- j
(setq e1 (sin p))+ C2 p, J$ R6 o. A
(setq e2 (cos p))! X5 p2 p: G8 R; p5 K. N6 x) V
(setq e (/ e1 e2))
6 Z |( ]* N O- I) I( F$ K ^2 ? (setq j (- e p))- S) i6 p6 s% X5 f2 j% M
(setq x1 (* (/ (sin j) (cos p)) basr))
( n6 T2 ^' `- G4 c (setq y1 (* (/ (cos j) (cos p)) basr))
" D( ^; u- v. t' s; l9 U (setq x3 (+ x2 x1))
- i8 E2 U# l6 z- ~ (setq y3 (+ y2 y1))
p" ^9 E! {& L9 N6 B (setq p3 (list x3 y3))
" U- r+ ?$ x6 X7 p (command p3)
4 U" c0 [. M3 t' @+ w; Y) L (setq p (+ incr p))2 x# k; r4 q# R: C8 ?) B, I
(setq pnts (- pnts 1))/ |' Z3 t" n$ o2 C
(if (/= test 1)
4 h! P$ K( _1 [# G4 {' i- k1 ?, `& z (progn
' ]8 B& c6 l7 ^, r3 B7 U* c (setq hyp (sqrt (+ (expt x1 2) (expt y1 2)))) a6 v, q# N, c
(if (> hyp pitr)+ S6 [- C2 l: K' U: n! Q
(progn, ^6 B$ E. { P1 u! L
(setq pint p3); k/ t0 h9 i$ ], `! z( T2 t/ G
(setq test 1)& k) m! n) {# `' y2 W/ ]
)
" K# U9 o9 `* r. E I- H )
# ?1 B$ m- B- q );endif+ R7 Q; B1 [- B5 f2 d
);endif8 @/ K& Y$ m9 g/ f ~4 B
)7 w& D/ \( \/ c$ i; k. M+ E
(command "")
9 X0 x/ r; W5 {/ {+ D8 Z$ X (setq L2 (ssget "L"))
# `$ i% i i, O& m- w (initget "Y y N n")
- L+ i/ H) F# B; X! D5 z' ?5 j* K8 x (setq ans (getkword "\n Finish the gear ?:<Y> "))
8 C4 j; s& u0 r# h (if (/= ans "N")2 _* r: B- L$ h0 \& R) u* O
(progn
/ Z" t1 N% J" q9 n (command "zoom" "w" pz1 pz2)
! B6 ~6 }8 H$ M. e4 u (setq p11 (osnap pint "inter"))5 K5 |3 H, v' c9 ?9 F2 {: d1 X) w
(setq ang (angle p2 p11))( k F( i% @( S$ D) P5 f6 K2 n: N$ y
(setq angi (- ang pang))9 a. Z0 F1 m8 Y4 v' W1 N
(setq p12 (polar p2 angi 1.0))
1 _* U2 d9 ?1 C7 t1 a: f; A;8 Z# O; C' j( l& S+ m: y/ d
(if (< (* 0.94 numt (/ 1 diap)) (* h 2.0005))8 z7 ^- j* Y, |# v8 U1 z" n
(progn
# r# t7 R& i1 |4 E( n6 j. z: w' g (if (< numt 42)3 F( `0 \2 n) n L8 o9 o) e3 L
(progn
' s l0 b* n9 N+ H; | (setq p56 (list x2 (+ y2 r0)))
' n& z' e2 U# b) s' `& g P (command "line" p56 p5 "")+ S/ n9 V* ?1 s8 o/ g' a. D+ ]
(setq L33 (entlast))% n4 h! l2 U8 q! K$ K5 Y
(command "zoom" "w" p77 p88)) s" i$ t. p/ ^1 V
(command "mirror" L2 L33 "" p2 p12 "")% D; s+ b! l9 ~% Y
(setq adj1 (- angi (/ pi 2)))) U8 [& P7 C2 _+ r2 A1 O
(setq adj2 (- (/ pi 2)(* pang 4)))
. j* N* N* f4 R# ^/ t. E- K9 a (setq p17 (polar p2 (+ angi adj1) r0))9 `' j/ h" Z( f) N4 [3 W
(setq p16 (polar p2 adj2 r0)) I/ T3 `1 M3 N* P# g6 \3 o* G
(command "arc" p16 "c" p2 p17)
& ~2 L: K3 [4 I& [6 W q ) ;end progn
5 q- q) C( I) x8 @ (progn
0 Y% r: |5 u& j: U: k. m. m. n (command "zoom" "w" p77 p88)% m& Z. {: f2 s6 M
(command "mirror" L2 "" p2 p12 "")
6 F9 x5 B, b; i" l (setq pL1 (entlast)) 5 z7 |$ o% T+ T' W* Y K' j
(setq adj1 (- angi (/ pi 2)))
9 z3 D9 h: [. [' x' x" }) G (setq adj2 (- (/ pi 2)(* pang 4)))
4 A. B0 L# e7 F* p, W (setq p17 (polar p2 (+ angi adj1) r0))0 Y+ Y( Y% ]' [+ m5 i' H
(setq p16 (polar p2 adj2 r0))
* u' a& F) D1 E4 B (if (> numt 101)# P9 R# Z% b- [1 I# ~' h
(command "arc" p17 "c" p2 p16)) v/ b. X+ N! X* h( z1 ~
(command "arc" p16 "c" p2 p17))& k- N; ?: h/ H2 }2 ~
(setq arc4 (entlast))
1 q# n) Z Y8 t! `1 `3 ]% O (setq p171 (polar p17 0.7854 (/ 0.4 diap)))
Z' c# g( Y6 X" B (setq p172 (polar p17 3.9 (/ 0.4 diap))), {( }* K' U! V& E2 K
(if (> numt 101)
h. q- }& r" b6 S- p2 c( F, g+ [2 E (setq p18 (polar p2 (+ angi adj1 ang0) r0))
& H( M7 W4 ^" G! i: `9 m (setq p18 (polar p2 (+ adj2 ang0) r0)))
% ]; \! x: c4 ?( ~/ B (setq p181 (polar p18 2.3 (/ 0.4 diap)))7 b& Q3 d. `. [
(setq p182 (polar p18 5.5 (/ 0.4 diap)))/ }1 d6 U" C b5 f
(command "zoom" "w" p171 p172)
& Q/ v7 S0 v& i) |, e3 y+ s; ^ (if (> numt 101)
+ O# | i& e- J0 B7 y (command "extend" pL1 "" p16 "")
0 x' N3 u* B6 o( o: F1 V- ` (command "extend" pL1 "" p17 ""))
2 s6 L$ Z8 X- x& ]1 G9 z+ i (setq ang0 (/ (* ang0 180) pi))
w8 K' N' |; G) W$ }/ K (command "rotate" arc4 "" p2 ang0)
$ I+ g1 A0 z9 v3 e6 ~ (command "zoom" "w" p181 p182) x" {: R6 I" D+ \3 j8 Y2 J
(command "extend" L2 "" p18 "")
; e$ ^" ~+ W) ^ (command "zoom" "w" pz1 pz2)
8 ]7 V8 l3 H/ O: o- _' F5 a- t& g0 I (command "trim" arc4 "" p5 "")
9 o! L: Q% q6 p7 S2 G$ G. M (command "erase" pl1 "")% h& l: M3 C, ` h; B% C" s
(command "mirror" L2 "" p2 p12 "")7 p: Y9 y9 p6 D
) ;end progn
* k1 Q' t& I, w6 `' V y ) ;end if7 ^" f: d1 f8 g" {5 {1 i
) ;end progn' p3 d( m8 J4 A5 t
(progn
) X" C% }) W7 f+ N2 v2 A (setq ang12 (- (/ pi 2) (angle p2 p12)))
4 M; G/ T r( o5 d: n (setq ang57 (atan (/ r1 h)))
+ X0 X1 P& C# J M (setq ang58 (- ang0 (* ang12 2) (* ang57 2)))
- D4 u9 Y6 f3 i2 c, d (setq ang577 (+ (/ pi 2) ang57))
. L. |) T# _' @& G$ ?/ f1 i) g (setq ang588 (+ ang577 ang58))
7 Y1 r- Q) g8 ^! d (setq p57 (polar p2 ang577 (+ r1 r0)))( k, E5 O8 v* D' T
(setq p577 (polar p2 ang577 r0)), W5 W8 O5 r: M! R( k4 O
(setq p588 (polar p2 ang588 r0)) : f* w, V l- v' Z6 L
(setq p56 (list x2 (+ y2 h)))
6 z! f# s" a2 G& P+ R }3 X5 S (command "arc" p577 "c" p57 p56)
8 m9 f& j2 o2 e# ~ (setq arc1 (entlast))
3 K3 h6 [* X2 ~' Z (command "arc" p577 "c" p2 p588)
" J5 B& c2 E$ K+ o' S (setq arc2 (entlast))
$ T2 g( U# g8 e* S7 h) p: K (command "line" p56 p5 "")
/ j1 b& w/ n X; E (setq L33 (entlast))
. w8 l/ ~- _# B/ h! |$ A* ^: o (command "zoom" "w" p77 p88)
* e( W# k1 {* G, n- g: X (command "mirror" arc1 arc2 L2 L33 "" p2 p12 "") {3 ], g8 r8 U- u' q# T& Y/ R
(command "erase" arc2 "")
4 n7 @, i/ s0 k* @5 H* u ) ;end progn 4 r2 x- u! u+ d/ }5 t8 h9 c
) ;end if
4 ~" b( ?$ i; u% Z* |( x( b;
. n& G! H3 u9 g3 g: f (setq beta (angle p2 p3))
2 E! U& D/ b; l0 u) @& X. { (setq ang2 (- (* angi 2) beta))
6 ~1 b8 ?1 O, `# X# r% ~( N( { (setq p15 (polar p2 ang2 orad))7 c. I# N9 l; x0 {; G) U) e
(command "arc" p15 "c" p2 p3)/ F( z- g1 t7 L( B! V& d3 T/ m6 H; b8 ?
(while (setq le (entnext le))
0 v% k0 |1 q2 k( p( S" I" m) I (ssadd le s)
7 P2 v& T. y1 l. H% M )! N' [" W% J5 s5 `5 D
(command "array" s "" "p" p2 numt "" "")
% o: [/ [; \5 V% l (setq q1 (nth 0 p2))
; H+ v! I+ B; C (setq q2 (nth 1 p2))1 I# ~2 a9 n$ j
(setq q5 (+ q1 pitr 2))
& Q2 r+ D8 d* ]. n; M (setq q6 (- q2 pitr 2))
O0 P) y4 D9 G9 u+ c+ V! S- D { (setq q3 (- q1 pitr 2))
, ^6 f0 ^; J* F2 u (setq q4 (+ q2 pitr 2))
' m8 \) C. p8 j: x6 ^' W4 N( ` (setq q1 (list q5 q6))
% ~) R2 y L7 H4 r, i5 u+ ` (setq q2 (list q3 q4))6 m: j, r1 m: e& j9 n1 w: C. n: a
(command "zoom" "w" q1 q2)
5 H6 ]" t2 I1 h )3 M; f0 ?3 J" R
)7 o: N) {4 G+ O
(setvar "pickbox" 5)
, L" k% j A$ p# ~7 d (setvar "aperture" 5)
3 H4 u5 W& v3 G% R4 X. O# @ (setvar "osmode" 37)2 f' i& j( W8 s
6 R8 z! \# Z# |- I5 _1 i (princ "Finish gear ")
( q7 j' C' I8 p P$ B# } (princ numt)
7 K- {) C- F5 Y (princ "T")
2 N# v( Z* ]0 [$ a4 e9 R! T (princ)
' b }: B" x7 t# K )4 }$ [2 p' ] C* `, k) v
6 G( k' A5 b1 [% p: j
|