(defun C:gear ()3 V3 T$ b7 v$ M; N- [+ t7 v
(setq numt nil
+ _0 }9 V! R2 m" T9 G diap nil , }" v- @9 \0 u
prsa nil
/ G% q; X) t" B; b pnts nil9 t3 ^0 z: I7 x6 [1 B+ s5 z
test nil3 Y- J- Q2 u. S
pwd nil
4 g% Q n% K4 ?; F )
, j7 ~4 d. q. E- F 9 J9 I# x2 P* z% c
(setq numt (getint "Number of teeth:<24>"))
4 {: Q H) O* P4 Y7 {9 `. P (if (= numt nil)# k7 q2 k- _' h
(setq numt 24)
* { ^; ]4 ~1 m# k: B )
! }: h- k& [5 @8 W (setq diap (getreal "Modulus of gear:<0.5> "))1 \4 D+ a0 S- ~
(if (= diap nil)( U$ ~4 Y* q' B0 [0 }
(setq diap (/ 1 0.5))" x5 ~ A1 C& G2 V6 W4 V9 o
(setq diap (/ 1 diap))
/ N" t1 r# o% H* E% m/ ` )8 |5 N+ G7 {! R* @/ p
(setq prsa (getreal "Pressure angle:<20.0> "))
W4 L- w4 R! e9 K- t9 B+ w L (if (= prsa nil)
6 b/ {/ ~, e) Q (setq prsa 20.0)
' P5 r$ r/ O8 m+ h r# H- {0 x: b )
1 U [5 u" {5 B9 L1 L+ W- e) O (setq pnts (getint "number of points on curve:<40> "))
' W) Y4 R6 ]" g/ y, F; J (if (= pnts nil)% i" u; Q1 T& X+ [# V: M |* I
(setq pnts 40)+ j1 H& R) a! @3 n
)" _3 j& f) ~5 M. B
1 W) \1 O) u" \7 ^" i: x, J# E, U; (setq pwd (getreal "Please input password:")): X' w8 J/ Y2 Q. R: y1 L Z
; (if (/= pwd 8833)0 A k& v* f# X% L4 R/ u1 y
; (setq numt 0)" Z F' b7 \& t, e" ]+ h& N0 h
; )0 ?2 l H @# ^* {
; (if (= pwd nil)
; V/ c) L0 `( Y3 W. b( S8 F; (setq numt 0). R* D* z9 n+ t* L/ w0 o& u6 X
; )
# ]+ \. t/ v# t! s. t;
, e# L& }) ^5 E7 Y {% |; n' H) x! _0 o) P (command "osnap" "non")5 X% j% ?5 M# d, [. y8 q
(setvar "cmdecho" 0)! J! M& I/ R. s" D l# u3 C
(setq oldvar (getvar "pickbox"))
! w# y! @( O* P3 c6 q2 g; c: \ (setvar "pickbox" 0)5 L/ c- M5 y) d. ~# f5 M4 k
(setvar "aperture" 1)1 v7 @. l# A" n; ]" x! \" n R
(command "osmode" "0" )
. ?4 a. S, ^, l, `5 [; X1 J/ k' B, K;* U. _; ^1 p6 l8 ?
(setq prsa (/ (* prsa pi) 180.0))( j0 L% X( c6 ?; E
(setq pitd (/ numt diap))/ a% G: W% W+ m5 h4 G9 b
(setq outd (/ (+ numt 2) diap))
2 \9 e# e0 z U3 F3 h (setq basr (/ (* pitd (cos prsa)) 2))
! R6 U. `8 B* R8 M( Y) f (setq orad (/ outd 2.0))" N5 y& O) V8 g! ^& k8 @7 L: y
(setq z (- (expt orad 2.0) (expt basr 2.0)))" E1 `! R/ l% B! X2 E; Y
(setq x (sqrt z))+ E* @" j, o l: v, Q! {' b
(setq paodd (atan (/ x basr)))
9 B9 A, B: ?, W3 K7 Y8 D2 R (setq incr (/ paodd pnts))) s& C' \& V* w5 G# v
(setq p 0.0)# A0 F7 ]1 P3 w) n* }/ ~
(setq pitr (/ pitd 2.0))9 S" H! [$ I- e0 V8 k
(setq pang (/ 360. (* numt 4.0)))1 l. j4 Q/ A; Y5 E) k8 {
(setq pang (/ (* pang pi) 180.0))! ]% B4 O9 \2 D8 B+ k- J8 O. z
(graphscr)5 G$ |/ Z2 d k' F, o+ E% Q# R4 N/ Y7 F
(setq p2 (getpoint "center of gear:"))8 p: x+ Q: W! W
(setq y2 (cadr p2))) W9 g! z& t i) L! i
(setq x2 (car p2))
. g3 Z& w& l% t) Y$ p; ]" b( _7 Z& k (setq r0 (/ (/ (- numt 2.5) diap) 2))
9 G( e: r2 g8 _5 m7 t$ e (setq r1 (/ 0.2 diap))
8 s9 Z. `; Q; j (setq h (sqrt (- (* (+ r1 r0) (+ r1 r0)) (* r1 r1))))) Z! [$ O6 }3 a- W/ c( f
(setq ang0 (/ (* pi 2) numt))
$ g1 w5 T* M K9 ?' H" x+ R% g! X* i( ^: i+ d) T$ f/ L$ I
(setq y5 (+ y2 basr))
2 T2 [1 ?- m: N8 E. | (setq p5 (list x2 y5))! L' P( M6 q# q! |! m
(setq y55 (+ y2 r0))
$ B8 J7 ^1 a& [& O (setq p55 (list x2 y55))
2 p, ?$ y9 z7 H2 W (setq p88 (list (+ x2 2) (+ y5 2)))3 c ^* y% }4 B! t1 `
(setq a3 (/ (* pi 5) 4))
( m( Q; E* Z/ k9 J6 O' R7 o. i+ B (setq a4 (/ pi 4))1 o, M; Z2 _& l5 j# H; m7 a+ q
(setq pz3 (polar p2 a3 (* orad 1.5)))
/ j/ r# @, x0 s/ @3 @( v (setq pz4 (polar p2 a4 (* orad 1.5)))9 C0 H1 z1 |0 B; E! w# |& g0 p
(command "zoom" "w" pz3 pz4)
# Z" T2 \7 j2 ^: w% z0 ~: }9 d;
% h7 D; S5 _6 _# {7 H2 O (setq clay (getvar "CLAYER"))& l4 [: u+ c6 l) U: P6 Q
(setq sblip (getvar "BLIPMODE"))" g/ k& C% Y- k6 z9 I
(setq ts (tblsearch "LAYER" "CEN"))
+ M; P. S) a& a' Y (if (null ts)
4 J) X1 ]! B4 s/ B7 @, f (progn
; n; x; Y* h5 ~, ?8 |2 p (prompt "\nCreating new layer - CEN. ") * e( v* U6 b3 S- \- ~) U
(setvar "BLIPMODE" 0)
1 c d7 A3 d# d8 x) Z (command "LAYER" "M" "CEN" "LT" "CENTER" "CEN" "C" "RED" "CEN" "") 8 l; i' u5 c y
)0 u0 V: _6 q+ B8 w' ?: G
(progn3 G& d2 \, A+ g- u
(if (> (cdr (assoc 70 ts)) 0) (command "LAYER" "T" "CEN" "ON" "CEN" "U" "CEN" ""))
/ S/ b3 u* Q6 P# S& i3 C (command "LAYER" "S" "cen" "")
5 t% h1 B2 v1 d' C1 S )3 K- s( } I. h1 K/ G9 J
)
7 e8 `& e6 g3 w/ G3 E3 d (command "circle" p2 pitr)+ K$ r* f$ A# ~- t4 x6 O
(setvar "BLIPMODE" sblip)
# g/ w. c7 f- V$ @8 ` (command "LAYER" "S" clay "")
@; Y) w; J; }( ~# Z;% F* M3 p! N7 ]8 _
(setq a1 (- (/ pi 2 ) 0.1))0 t, |. |$ ?1 s
(setq a2 (+ (/ pi 2) 0.1))1 n! U X6 e& e: c) [! |6 v" I' {
(setq pz1 (polar p2 a1 basr))% E% m2 [$ o: Z6 o. Q5 {' s- x
(setq pz2 (polar p2 a2 orad))9 }7 x/ _5 b0 N% k! k
(command "zoom" "w" pz1 pz2); D7 k" g( }$ j# X1 ]/ n t/ `
(setq s (ssadd))/ L, H; X0 `2 I5 G' P, ^* j
(setq le (entlast))
' L' M G* ^& H) v+ V$ b0 h$ O" P: _ (setq test 0)9 q( q/ H3 d4 ?
% [5 f, k, ~, A7 g4 V, P: X
(command "pline" p5)
4 Y' U; P/ |4 y% U# n" M (setq p (+ incr p ))3 v8 s2 U) U" O# A+ Y
(while (> pnts 0)
, z/ |5 I8 E8 D, G (setq e1 (sin p))
1 |/ m% ~4 k( O; f. P (setq e2 (cos p))
6 T" u4 z. R1 c6 ^ (setq e (/ e1 e2))$ R2 p/ ~3 D/ ]
(setq j (- e p))! {7 a/ I% g, z; c2 i
(setq x1 (* (/ (sin j) (cos p)) basr))
6 g2 n- Q1 g, n0 s4 ~ (setq y1 (* (/ (cos j) (cos p)) basr))$ A' v5 _' a' A1 J; S
(setq x3 (+ x2 x1))
+ n, f6 m' `, _: {: Y- v1 O2 |, ^7 ? (setq y3 (+ y2 y1))
1 {1 b& t1 X- n/ T: I0 d7 w: k (setq p3 (list x3 y3))9 }& G. d# K; I
(command p3)6 W' }9 b: a7 w9 n: |
(setq p (+ incr p))( I" K5 o; M6 Q0 H# Q$ C: i
(setq pnts (- pnts 1))9 h H' u7 C( e' M$ }
(if (/= test 1)4 J$ {8 W, Q; r, k z3 ^
(progn
9 a+ I- D" W J6 a2 N) X (setq hyp (sqrt (+ (expt x1 2) (expt y1 2))))( \& X6 ^( l$ f- X
(if (> hyp pitr)
. m* z( m2 B8 @ (progn
; p S1 d; p7 z/ t5 f2 u' P (setq pint p3)
' b4 m% l. I {. i (setq test 1)
- q/ I/ W- v3 g7 M( K6 Y5 x7 p9 g )2 O5 A8 d& i7 t( l' Z j& K! f' }
)1 C/ B, ]6 N" V* J4 K
);endif
! _, `8 b$ c# V );endif L, w0 x! k! q: U; {
)
1 ^; c& a. E% O (command "")7 Z. u) f- ?8 a1 G) g5 ^. u# E
(setq L2 (ssget "L"))
8 D/ [, g5 ?. s9 S7 b (initget "Y y N n")2 T3 _& x: m* M1 V) v. X
(setq ans (getkword "\n Finish the gear ?:<Y> "))
& R- Q* d5 i _! F& z3 l. e0 |) a( { (if (/= ans "N")# |6 q$ ^' h3 \( B& c
(progn+ N% j- e3 _( l" [( F
(command "zoom" "w" pz1 pz2)
& _! v( y$ T. S" i (setq p11 (osnap pint "inter"))
* K3 W9 |2 @& T8 b+ b8 D( H (setq ang (angle p2 p11))4 d6 Z& n; z4 x' U3 }
(setq angi (- ang pang))
) R6 t; }1 s1 ]- n5 a (setq p12 (polar p2 angi 1.0))
. B$ ~2 N0 j+ \+ y. D2 i;
8 Y# l8 M; Y, l/ C7 J3 d (if (< (* 0.94 numt (/ 1 diap)) (* h 2.0005))
: D' Y: o. r) x4 @ (progn
+ ?- K% |3 H2 T, V+ \( [ (if (< numt 42)
! H1 J V( t* S) F9 O (progn/ ~: ~+ ^% q0 x0 Z
(setq p56 (list x2 (+ y2 r0)))
' w: _# @& L1 `# W6 I (command "line" p56 p5 "")& U; ]7 W+ f7 z9 [# v$ G
(setq L33 (entlast))
$ H! Q% w' }1 q: M (command "zoom" "w" p77 p88)- K/ U( P* k9 D" n3 m
(command "mirror" L2 L33 "" p2 p12 "")( N9 i8 Y1 Z' Y4 R5 }
(setq adj1 (- angi (/ pi 2)))
4 `# S! u- e+ W+ r5 m (setq adj2 (- (/ pi 2)(* pang 4)))) [7 s( {/ }- @2 `( h4 e0 O9 `
(setq p17 (polar p2 (+ angi adj1) r0))
) h' T: b0 L9 p. G (setq p16 (polar p2 adj2 r0)); s5 Q" \; Z7 _" ?* r
(command "arc" p16 "c" p2 p17)
8 a" u# ^6 U, p# {' h ) ;end progn
- P+ [: H8 {5 D1 D0 f% V (progn
" e! E3 d( j( y* F4 c0 x3 I (command "zoom" "w" p77 p88)# D3 u- M- W' ~$ ~
(command "mirror" L2 "" p2 p12 "")
; Q6 g2 _9 x0 n5 ^( w7 {# p (setq pL1 (entlast))
; Z3 o1 \: O$ U2 t (setq adj1 (- angi (/ pi 2)))
* K5 t( ~, x- t3 P. ]7 V (setq adj2 (- (/ pi 2)(* pang 4)))1 i6 ^' b1 Z/ B/ _; l" a- z
(setq p17 (polar p2 (+ angi adj1) r0))
% C. a# h3 _2 B0 Q (setq p16 (polar p2 adj2 r0))
2 \$ @5 T7 V* \+ I: F: i! c (if (> numt 101)2 E& ~6 ]; a h9 @
(command "arc" p17 "c" p2 p16)( M* i5 R( V) b7 {% {
(command "arc" p16 "c" p2 p17))
& d: o+ t) e0 m" m6 @: | (setq arc4 (entlast))
$ O, [' E$ y' d3 d) h (setq p171 (polar p17 0.7854 (/ 0.4 diap)))
8 B) E M3 [* s (setq p172 (polar p17 3.9 (/ 0.4 diap)))
4 J4 c/ T3 _+ p, q% R8 k- z/ S (if (> numt 101)7 W" U/ w3 J7 }& |% a8 W
(setq p18 (polar p2 (+ angi adj1 ang0) r0))% m+ k C. M* @& [
(setq p18 (polar p2 (+ adj2 ang0) r0))), L! B+ S% k2 B6 h) q5 d
(setq p181 (polar p18 2.3 (/ 0.4 diap)))
+ q/ O/ Y" E: P% W (setq p182 (polar p18 5.5 (/ 0.4 diap))): N: O+ r# h# A: h1 v% K1 k7 k
(command "zoom" "w" p171 p172)
8 Q& o4 ^9 l' ~9 p1 J (if (> numt 101), ^6 G* j! e! V
(command "extend" pL1 "" p16 "")
# K( S, K9 U) Y/ p& Y' h$ h (command "extend" pL1 "" p17 ""))
0 {3 s0 v% j V% Z8 h7 e3 ^5 A% a (setq ang0 (/ (* ang0 180) pi)) D7 Z0 F k% K% }
(command "rotate" arc4 "" p2 ang0)
6 y9 m" f* `6 z q) O (command "zoom" "w" p181 p182)
$ [6 o& j5 }4 v4 U! b9 X- O w (command "extend" L2 "" p18 "")
* K1 a* p5 z; `4 E5 G+ e (command "zoom" "w" pz1 pz2)
+ v( E% B C/ E( T4 A+ F0 g (command "trim" arc4 "" p5 "")2 \8 Q) n) |; g4 b4 J. M
(command "erase" pl1 "")1 @! j; R6 G& W
(command "mirror" L2 "" p2 p12 "")% [6 a% ~/ Y" t
) ;end progn
- n! D5 u* @9 o1 K* N ) ;end if$ p3 Y1 j* ~8 P* N+ G3 d
) ;end progn/ l; C1 Q! |8 a) t! y
(progn
( Z6 O+ c% V3 A! O+ `1 y7 U, w3 ` (setq ang12 (- (/ pi 2) (angle p2 p12)))
. X1 L* w- ?: a6 H (setq ang57 (atan (/ r1 h)))) a7 \" E5 N& B$ c
(setq ang58 (- ang0 (* ang12 2) (* ang57 2)))
8 J" |" p! c6 r9 E/ a( L+ v (setq ang577 (+ (/ pi 2) ang57))
1 }" M' ]. z' H( c$ x* C2 Q (setq ang588 (+ ang577 ang58))
8 v; o$ E" r& v (setq p57 (polar p2 ang577 (+ r1 r0)))' X6 W7 C7 ?- t1 G; v. d9 i" y- w
(setq p577 (polar p2 ang577 r0))/ |5 M- R) V) S4 D2 w0 s
(setq p588 (polar p2 ang588 r0)) ( P+ i* ?. a3 x& g
(setq p56 (list x2 (+ y2 h)))& I! l+ q5 q, ^8 p6 W7 w
(command "arc" p577 "c" p57 p56)
8 T) E; u0 d4 z5 b& i# d3 Q (setq arc1 (entlast))
$ z. v3 I) E, {% f5 y1 C% e0 U+ R (command "arc" p577 "c" p2 p588)
% `, _( m5 q1 x0 Z Q( I5 d (setq arc2 (entlast))& q7 [6 E/ f, l* `! F% [/ w" ]
(command "line" p56 p5 "")
6 v d( X. J* m. z$ c4 v8 I (setq L33 (entlast))- D3 O1 _1 S1 \& M9 B* j
(command "zoom" "w" p77 p88)
2 ]7 l8 K) K. B! T+ ]" ~ (command "mirror" arc1 arc2 L2 L33 "" p2 p12 "")+ C2 r7 m+ ^* e+ U7 A
(command "erase" arc2 "")
+ v- q; i/ u# l$ O4 U" k; {: w ) ;end progn
: ]+ n1 P y1 H1 V0 O$ |5 t( H ) ;end if* t/ w" q }! I2 S# X
; " { n6 s# z& f* E( h+ j
(setq beta (angle p2 p3))5 ~) B; J: }$ Y e% v1 f9 W
(setq ang2 (- (* angi 2) beta))
/ l) P4 b) j7 q( H" @ (setq p15 (polar p2 ang2 orad))- @# _, g9 r; i0 Y3 K; A! B6 ~
(command "arc" p15 "c" p2 p3)
/ t' \# s( r: K (while (setq le (entnext le))
8 z* c7 T2 I4 j0 j; d5 Q (ssadd le s)
! P9 L& ^, y2 U, W% F )
" m7 e2 X/ I; u2 ]/ R1 x. ] (command "array" s "" "p" p2 numt "" "")
) V0 a2 Y7 k% ~0 ?4 \& S7 g (setq q1 (nth 0 p2))
2 p1 ]2 e. Y$ r- z4 U (setq q2 (nth 1 p2))+ H# @& g6 y. x
(setq q5 (+ q1 pitr 2))* F9 ~" \. c: _7 y
(setq q6 (- q2 pitr 2))
6 Q* u9 d) P5 j. _) S. C; Q (setq q3 (- q1 pitr 2))6 s* H: d' P8 ]( t) H1 c+ c! D
(setq q4 (+ q2 pitr 2))
! _; W! g5 Z% ?" a. O1 A& w (setq q1 (list q5 q6))* l* ^2 @* }+ q H* G
(setq q2 (list q3 q4))# r" U# c, Z# f6 Y9 g9 r. G
(command "zoom" "w" q1 q2)
9 d2 a6 }0 f1 w" m7 m: @ )
* F0 [" |# I# e4 x& ^; y b4 `# s )
! q7 o+ n1 F2 n* {3 {6 o* R! p (setvar "pickbox" 5)
9 V$ N+ T3 [) S: y$ K# A$ V (setvar "aperture" 5)
# J& E5 x) \( P- ^8 {+ L; T( k (setvar "osmode" 37)9 S, w( H- C2 ?' k
1 u) Q* s. }# `& j; {# R9 C9 B- [# _ (princ "Finish gear ")
8 z, {. g# H9 q! M (princ numt)
8 r. x, J0 R! P3 C9 j- s; n (princ "T")+ c" c( h. k- v+ {2 ~* x1 ~: y, y8 [
(princ) W1 i' F. f" [! _- u
)4 M/ \3 @$ N0 g. n3 b5 u7 Z
h E+ E1 E* S$ \* d7 ~! _6 \: k |