(defun C:gear ()* A9 q; x: A. D& O
(setq numt nil( F6 w" R9 E1 v( B
diap nil ! z+ Q# J5 A: y; a
prsa nil. x5 T5 Z: @& `! @5 `4 e
pnts nil) L/ j4 B) U; U
test nil
; W% D1 {7 [4 O9 S. P, y pwd nil' ]0 ]! y$ F' D' y4 k: G
)
4 Q1 d* J, c( V0 }. U( {- M- b
; _+ [; ^4 Z+ K1 w (setq numt (getint "Number of teeth:<24>"))' P! V9 M1 @8 W8 f
(if (= numt nil)6 G% G. A% P# M, i& E6 \% @! d% D! i
(setq numt 24)' Z# z$ E7 s# U+ s8 P
)2 S6 k5 A1 L6 l# W5 L
(setq diap (getreal "Modulus of gear:<0.5> "))
7 G" N" z. {: F& z- A( Q3 e7 X (if (= diap nil); R: A6 l+ H& h; ]: s2 Q3 _
(setq diap (/ 1 0.5))" N# m% I p, J
(setq diap (/ 1 diap))+ o" L* V. h% ]& ~0 K4 F7 K6 H0 G3 d
)' }( q" y- w+ k( k: U/ d
(setq prsa (getreal "Pressure angle:<20.0> ")) C: M4 Y4 w8 E3 A
(if (= prsa nil)
. U9 A' u' }& A- J) G (setq prsa 20.0)3 C$ v* p- m; g1 O( ~3 M p
)
. y8 q& l2 O# U$ s (setq pnts (getint "number of points on curve:<40> "))
3 f) v" Z( U1 `& \6 Y8 C, O (if (= pnts nil)! L$ W1 h3 |) ^
(setq pnts 40)
1 f4 S; W% `" H+ n )% z, i( w6 `0 ] G- b) E
! e }1 E2 i: J4 |* o3 { y3 E; (setq pwd (getreal "Please input password:"))
! @! j! y2 D' r% U$ m! P; (if (/= pwd 8833); Z' y6 M0 z/ j* O B' \
; (setq numt 0)
% p+ B$ h) Y6 ^: ^0 |" N; )' I! `* E0 k# k$ l
; (if (= pwd nil)
7 x! M. |8 b% V* ~ L- ~1 ~; (setq numt 0)
+ ]3 U1 U5 H9 V1 q3 c' l1 s; )1 f. k) S( b! g' P* L
;8 i) a& r* f6 R9 z
(command "osnap" "non")* G# S. @* N( V1 C9 m# i
(setvar "cmdecho" 0)
. ]% a7 p' [' E5 j' e3 }/ K. j (setq oldvar (getvar "pickbox"))/ B& F9 i$ O, d% Q: M$ V( T6 U
(setvar "pickbox" 0)
* p4 z3 Z' F& O; q0 w2 _" ? (setvar "aperture" 1)
! J$ T/ [$ } m! P (command "osmode" "0" )
' t+ q! @ b1 o$ F6 U+ ?; x;7 R, F. Z9 _4 @( J9 W4 Q5 ?& n
(setq prsa (/ (* prsa pi) 180.0)): a! o; F7 Q" F! O% X3 H
(setq pitd (/ numt diap))
, w2 u& D: F# P" U5 ]+ v (setq outd (/ (+ numt 2) diap))3 T7 O4 P, h8 ^
(setq basr (/ (* pitd (cos prsa)) 2))
4 {; R$ ?# _% ~9 D. f2 M/ D (setq orad (/ outd 2.0))4 N, N+ a6 I( ^6 m
(setq z (- (expt orad 2.0) (expt basr 2.0))); k; }# W5 }& p: ?) t( b
(setq x (sqrt z))
' O$ O8 z$ [2 f (setq paodd (atan (/ x basr)))
5 q8 t* J1 F! L; L$ L9 { (setq incr (/ paodd pnts))' z+ Y' `1 G1 }7 x9 g5 ~
(setq p 0.0) ^# c. @: W+ Z }
(setq pitr (/ pitd 2.0))* k3 ^9 w( x9 H0 v+ \) P6 |/ I
(setq pang (/ 360. (* numt 4.0)))$ B5 Q4 }/ ?5 n _
(setq pang (/ (* pang pi) 180.0))
6 ?! x2 g9 [1 e/ \# E O: ^5 H) C (graphscr)/ V/ v( X" s/ K
(setq p2 (getpoint "center of gear:"))0 d1 \5 j" I6 k/ z8 X% Z2 X0 L
(setq y2 (cadr p2))
|$ v2 O8 c/ O/ A, A* H2 I (setq x2 (car p2))
1 b* M0 |- P, K2 y5 V$ r, Y" ~ (setq r0 (/ (/ (- numt 2.5) diap) 2))
9 @5 y; a+ K3 \. ^' R$ h5 U$ e6 J (setq r1 (/ 0.2 diap)): }0 y5 B6 O- z* A: J6 e4 `
(setq h (sqrt (- (* (+ r1 r0) (+ r1 r0)) (* r1 r1))))3 e! q% c+ U f9 \. |( a) }
(setq ang0 (/ (* pi 2) numt))
9 ?$ B& ~0 C, e3 }! {- o/ y5 w2 g1 H& S( l" B3 i2 _+ s4 ^6 p
(setq y5 (+ y2 basr))
! I7 l. O5 n) V% | (setq p5 (list x2 y5))) m6 B3 K- n- g# l4 U0 L7 i( n' }
(setq y55 (+ y2 r0))1 k$ ?; f- Z8 _
(setq p55 (list x2 y55))0 l- p+ b# o, _" a ~, Z
(setq p88 (list (+ x2 2) (+ y5 2)))& v" P; x! C3 u" w9 }) e0 @7 ?
(setq a3 (/ (* pi 5) 4)), U; }* J/ ~; {3 [3 l
(setq a4 (/ pi 4))
4 c4 b7 T6 ?0 W0 y! L& L7 Z0 Q (setq pz3 (polar p2 a3 (* orad 1.5)))1 m. C9 e8 O& u" W& \
(setq pz4 (polar p2 a4 (* orad 1.5)))
$ R$ ^4 D; p2 l7 x" L$ z& O: o( C (command "zoom" "w" pz3 pz4)
& c' O8 x2 {$ O) Q) G! \;
1 T0 H7 z# k) U; Y/ m! L (setq clay (getvar "CLAYER"))
# @" a$ U, S% F2 J+ c (setq sblip (getvar "BLIPMODE"))5 o5 I) {+ Z& _- [4 q+ ?
(setq ts (tblsearch "LAYER" "CEN"))9 O+ t# ^ O% ^
(if (null ts)
. j% f7 n( d7 _% N' x0 o3 s3 F (progn
$ G7 A0 Q& V- T# H, |( R4 C (prompt "\nCreating new layer - CEN. ")
/ L: {0 K l! j! @6 y6 h (setvar "BLIPMODE" 0)8 T$ u. x8 N4 W5 e6 g
(command "LAYER" "M" "CEN" "LT" "CENTER" "CEN" "C" "RED" "CEN" "") 6 \9 x# |! B5 X# [# ?, c$ |# u) i
)
0 ?9 q8 v2 r6 T' w5 Z, x (progn
5 g5 G) l6 D2 i) H (if (> (cdr (assoc 70 ts)) 0) (command "LAYER" "T" "CEN" "ON" "CEN" "U" "CEN" ""))
+ |) Y }5 q9 P9 ?% [2 Q' {% Z (command "LAYER" "S" "cen" "")7 d/ k: @: M e* }" h
)1 J, [3 A3 P+ e2 d* r
)* P/ r( O7 M0 N. {$ V A9 f5 B
(command "circle" p2 pitr)
4 _) k w" y* L- ~* I; Z# q8 g4 U" W (setvar "BLIPMODE" sblip)
1 B1 n; V/ A; o. d (command "LAYER" "S" clay "")
3 L% @9 ]6 x9 ]+ K+ d;
1 V& V% F; K* m4 }9 |3 o- G; v (setq a1 (- (/ pi 2 ) 0.1))
a! O- p4 r$ O (setq a2 (+ (/ pi 2) 0.1))8 w0 x7 V: C* T
(setq pz1 (polar p2 a1 basr))
" Z' ?* _% n# G. w: h (setq pz2 (polar p2 a2 orad))3 l1 J$ o1 O' x3 R# T7 \
(command "zoom" "w" pz1 pz2)
$ l; L; b! k. w5 b ~+ a' _ (setq s (ssadd))
6 H: x1 h8 l& d: h0 {, a (setq le (entlast))
& V0 S4 K- o, v/ I; ]5 E; ?6 J* P) A2 } (setq test 0); v ]) b. L: Z, M' [3 h4 I' x1 a
4 s& y3 N$ y: d, M; ~6 ~
(command "pline" p5)0 ^5 ~% ~( h8 y- Y+ F
(setq p (+ incr p ))9 |, a+ N6 E1 W( K, ~; S
(while (> pnts 0)
: _' C; F1 t3 O2 d (setq e1 (sin p))
. A$ i- H4 Y* T. m0 y (setq e2 (cos p))
7 V" v M1 o% ?9 h (setq e (/ e1 e2))
- R% W3 `3 h$ x (setq j (- e p))! t ^5 W& e4 B% D$ G A
(setq x1 (* (/ (sin j) (cos p)) basr))
( A* M. Z/ H' N! M (setq y1 (* (/ (cos j) (cos p)) basr))7 q- x& n/ G, H; T& K6 E
(setq x3 (+ x2 x1))7 A( v7 T. G( m" X
(setq y3 (+ y2 y1))
" t# j9 I% m2 p; v3 ^ d: { (setq p3 (list x3 y3))
7 J( a$ y! ?# @( E2 m (command p3)
2 ]1 V- T" _3 ~. ]3 o: k (setq p (+ incr p))2 d8 \8 g6 k" X2 M2 a. E6 E: |3 x
(setq pnts (- pnts 1))
# H6 K# s$ Q0 b! p& k4 W- g (if (/= test 1)
9 |, F0 w) x( T1 t (progn
2 A! o" `7 y) Y) E$ p (setq hyp (sqrt (+ (expt x1 2) (expt y1 2))))/ Y+ r% H7 ^% B9 n& w/ ]% D/ g7 p0 i0 C0 L
(if (> hyp pitr)
! l9 f. u: p4 q4 U (progn( P: {2 I* D- W' \2 i
(setq pint p3)8 f; N- L/ y$ P- z: f: i3 g
(setq test 1)+ B& i$ E% p/ {, I
); \+ H& l0 i2 F w2 i- V
)
. M8 e+ o% A0 F' k );endif5 N. u8 i- K4 F, U2 o& v
);endif/ A! X0 \5 x# E- i& H8 f) ]9 Q
)
0 j5 p. V8 \) M2 x5 D- P (command "")- _4 y: ?7 P& K0 v
(setq L2 (ssget "L"))/ L% P9 q; b" }: a/ J$ R
(initget "Y y N n"). V4 f4 i8 Y9 [! r! E
(setq ans (getkword "\n Finish the gear ?:<Y> "))* a2 ?3 [. R8 E2 o
(if (/= ans "N")
5 P. j7 v% x* l (progn( y" g9 c% ]. \) G2 ]! Q8 a
(command "zoom" "w" pz1 pz2)& q- N0 w0 j m+ q2 Y4 I6 Y* F
(setq p11 (osnap pint "inter"))
! ^: e. ^8 P; _7 f' X (setq ang (angle p2 p11))9 R5 A# _! w- Z% a0 M) m
(setq angi (- ang pang))4 i$ O( W: B/ W: A' b& L
(setq p12 (polar p2 angi 1.0))1 F0 R- R) ]. ^, r2 p6 L' b# R' u
;* p/ l* ^' a) d& G0 t) U
(if (< (* 0.94 numt (/ 1 diap)) (* h 2.0005))4 e6 y" W! D* _: l. K+ d
(progn1 d9 n7 U' w5 N- u9 n/ h0 T& K
(if (< numt 42)
% q, C% K3 n. H) R* [ (progn( S) [+ W3 j1 |: h
(setq p56 (list x2 (+ y2 r0))): g5 d) n q' N; D# f( p/ ~( t
(command "line" p56 p5 "")" _) }3 d/ D+ U. @; C
(setq L33 (entlast))
8 t d9 w1 _$ l# M2 S$ `# W1 a! N (command "zoom" "w" p77 p88)0 F; l6 `0 {9 |$ V5 `
(command "mirror" L2 L33 "" p2 p12 "")* y: E, d# s) k a4 C) I
(setq adj1 (- angi (/ pi 2)))
, n4 ^$ V$ a, J (setq adj2 (- (/ pi 2)(* pang 4)))0 ^. e( l: ~; }5 [# j% G
(setq p17 (polar p2 (+ angi adj1) r0))
6 v1 S) _) A' R$ @( F (setq p16 (polar p2 adj2 r0))
, M/ ~7 J) B0 y3 D+ k. L (command "arc" p16 "c" p2 p17)
! I; J; P4 E- [/ O3 {; k/ o1 b ) ;end progn! x$ r% l2 v% F
(progn
X2 a3 a( C% u; G (command "zoom" "w" p77 p88)
3 x( D0 i8 N1 h* w1 A) L0 l+ F! { (command "mirror" L2 "" p2 p12 "")! }2 U; ^8 e5 D. O7 x& @
(setq pL1 (entlast))
/ p1 y% |( y. N1 |8 U3 R (setq adj1 (- angi (/ pi 2)))
) d4 i5 V9 h; f) _2 W (setq adj2 (- (/ pi 2)(* pang 4)))
~$ A4 x) l: ~ F0 z; |# N4 d (setq p17 (polar p2 (+ angi adj1) r0))9 Z: L0 M% b9 d7 u# ?+ X
(setq p16 (polar p2 adj2 r0))/ j% o4 @/ k5 d3 o5 Y
(if (> numt 101)' G/ P9 D- r+ ]- y3 j1 n9 K% ]* ]& U
(command "arc" p17 "c" p2 p16)& H. j+ u8 `$ [5 m- M! d$ p9 _
(command "arc" p16 "c" p2 p17))6 j) I7 m$ Y5 Q( |1 ]8 ?
(setq arc4 (entlast)); A; \) |( W/ x0 x5 E0 v. T' K0 N
(setq p171 (polar p17 0.7854 (/ 0.4 diap)))
7 i6 F, e0 A+ [1 I* h (setq p172 (polar p17 3.9 (/ 0.4 diap)))
! E7 d1 S& |5 _6 W& E! [" i (if (> numt 101)' N6 V5 J3 n5 \
(setq p18 (polar p2 (+ angi adj1 ang0) r0))
- S/ C8 O! ~9 }' x (setq p18 (polar p2 (+ adj2 ang0) r0)))
8 u; S7 s7 x) l2 [1 Y, J (setq p181 (polar p18 2.3 (/ 0.4 diap)))2 H2 U/ L: J+ r
(setq p182 (polar p18 5.5 (/ 0.4 diap)))
% w. J3 l5 n7 L* O$ P3 N (command "zoom" "w" p171 p172)
+ e% j$ R% U# p$ B: O (if (> numt 101)) Q% K7 I D% N* s! m' L& D
(command "extend" pL1 "" p16 "") Q! p- A' o! R; w
(command "extend" pL1 "" p17 ""))* L: e4 o1 \5 E! h( Q
(setq ang0 (/ (* ang0 180) pi))
% W/ K5 D3 o8 h+ J6 T (command "rotate" arc4 "" p2 ang0)0 e1 F8 I' E& L+ c
(command "zoom" "w" p181 p182)) R) w/ c9 Y$ F8 p( l+ H
(command "extend" L2 "" p18 "")
! C- Y4 n& Y$ T# _& |( Z (command "zoom" "w" pz1 pz2), ]! V% f5 F' z) N' c; h
(command "trim" arc4 "" p5 ""), m7 j% ] b" e; V. q/ c
(command "erase" pl1 "")- z0 K( h3 X# @8 t
(command "mirror" L2 "" p2 p12 ""). \0 q# A) b1 ]
) ;end progn; C- b( \2 G) R; y6 S( O& Z
) ;end if! k: B3 @. f4 D( g, p5 y& t
) ;end progn
x L1 j8 C. u( u a- e (progn 1 I/ w. ?5 c+ C
(setq ang12 (- (/ pi 2) (angle p2 p12)))
' L+ v, q2 } J9 ?# |) H) J3 { _ (setq ang57 (atan (/ r1 h)))
; E$ R- u' j o4 S (setq ang58 (- ang0 (* ang12 2) (* ang57 2)))0 J7 U! q/ {" v& i! X! P4 S
(setq ang577 (+ (/ pi 2) ang57))
7 F j- w; Y4 a. H" c" I: B. s (setq ang588 (+ ang577 ang58))
! @4 x. E0 P3 h& s) S (setq p57 (polar p2 ang577 (+ r1 r0)))
* v9 ~6 q9 u7 t. A; a (setq p577 (polar p2 ang577 r0))' W9 k2 t; i0 q2 D. p4 F- ^
(setq p588 (polar p2 ang588 r0)) & L. @4 n+ s% F7 V7 w7 C* C. A/ V
(setq p56 (list x2 (+ y2 h)))
0 Y' ]# @3 A* W# x/ [% ~" n (command "arc" p577 "c" p57 p56)# b4 ^- h* b3 y- a$ G( O
(setq arc1 (entlast))
( H9 j' L5 l) Z. J0 l (command "arc" p577 "c" p2 p588)1 J# I. J2 a' A# W
(setq arc2 (entlast))% ?; R9 _7 c: ?3 w" W, }
(command "line" p56 p5 "")
9 D( l+ X: I3 x5 B% l) ` V1 J4 |- J (setq L33 (entlast))
5 {4 o& }3 [' j (command "zoom" "w" p77 p88)1 S0 L5 O( t1 y" H& K( H& M
(command "mirror" arc1 arc2 L2 L33 "" p2 p12 "")7 q! I% p/ _7 y" A* X: m
(command "erase" arc2 "")) }- L0 e* ?! d# i- C7 c
) ;end progn
8 q7 ~$ ~9 `8 u, D; C1 W ) ;end if r$ Y- d6 O6 D$ G' }
; 8 S( R0 [1 o! b" } a0 m/ z
(setq beta (angle p2 p3))
/ T5 N3 U+ T+ \$ ?: S (setq ang2 (- (* angi 2) beta))4 A) S+ f2 }1 {5 A
(setq p15 (polar p2 ang2 orad))4 X% @2 N! [3 v
(command "arc" p15 "c" p2 p3)
8 ?/ w [; H: e) H (while (setq le (entnext le))
$ S; B" d# d) T! b. J3 ]* I (ssadd le s)
& y. _3 e0 V" p$ ~, k ) a- }2 ^# p8 z2 M
(command "array" s "" "p" p2 numt "" "")
0 g5 S" s, y8 b# y" `; B. J0 } (setq q1 (nth 0 p2))
% h& f! c: R+ Q! e& T (setq q2 (nth 1 p2))
, V8 x$ Y, X) `6 q; o' B' l (setq q5 (+ q1 pitr 2))
! ?( N) K K3 H5 e6 i (setq q6 (- q2 pitr 2))1 s: U9 }) t. k1 [
(setq q3 (- q1 pitr 2))
: F0 y, i% W2 m$ X1 E (setq q4 (+ q2 pitr 2))9 `9 e, B" V) p. k
(setq q1 (list q5 q6))+ E! @ }; e7 T: ?3 H! s) X; l
(setq q2 (list q3 q4))
: h, u4 h; T. V- | (command "zoom" "w" q1 q2)
4 y6 _. d: H. _- }4 @" ? )* s2 a/ m! {5 r% c0 u+ `+ ?
)
' E3 P9 m& v, `# M (setvar "pickbox" 5)( |1 \: D/ e% G4 {( `7 f/ A
(setvar "aperture" 5)
; I( Q) o1 a: p (setvar "osmode" 37)! D& `% e2 e& q2 k; F/ u* U1 p# S
$ [3 r7 Y" f. Q* t (princ "Finish gear "): W4 v* S. }3 B3 w& @, m% M
(princ numt)
Y/ O1 l5 I2 b5 ] (princ "T")" ^2 N. z- `+ f2 ~* }$ s% E% L
(princ)7 S, L& U* t1 m, ~9 d
)
6 U" ?, }' G. H/ ^
$ c, g" b5 W, J; H& ~ |