(defun C:gear ()
$ u4 @; z7 g4 b, g' [# ` (setq numt nil8 j! ~" Q# K& c
diap nil
, P& B8 a9 z' y+ u3 W prsa nil( }- \8 l6 q7 U# l, a% G
pnts nil
6 g% D! L; ?7 L test nil) ^5 q, ]6 L1 a1 T+ d6 v, b
pwd nil6 A! }+ ~1 z6 B0 |
)
( F* ]" W3 P! X5 _3 r% b% U & b5 B* w+ U# t3 X9 e. u
(setq numt (getint "Number of teeth:<24>"))
9 A' x; L! D# C, g* C+ T& P5 A (if (= numt nil)) W* L1 v' b* R! }
(setq numt 24)
* s2 i% y$ x9 D* Q )$ t, a$ P$ w* \0 \6 O8 S
(setq diap (getreal "Modulus of gear:<0.5> "))
- T" z" J5 l7 f" P' u. x (if (= diap nil)
" i7 x1 C( O+ m (setq diap (/ 1 0.5))& a" n7 o& P4 y) q
(setq diap (/ 1 diap))$ M, J& B! p8 X
)# _# q' f: J: P2 F- t$ _. z9 ?* K
(setq prsa (getreal "Pressure angle:<20.0> "))
) k# N% p& Z4 o! [ (if (= prsa nil)7 K+ I0 u- Q2 i0 N9 }( j
(setq prsa 20.0)
8 V# ^. I8 q* v8 H )
- q T$ E7 Q a; | (setq pnts (getint "number of points on curve:<40> "))
# R6 s' t+ s# Y! D3 l (if (= pnts nil)
) k# @. u( J: s$ W4 z (setq pnts 40)0 L- `/ q, s( E. @5 U" i
)
, e* p( V+ ?' I) \' C5 d, |( y2 S4 c6 e h9 G1 t. T8 P# R
; (setq pwd (getreal "Please input password:"))0 b# n& b( S! D- B m" f' ?
; (if (/= pwd 8833); m: o0 w# }, ~* L; ~; D
; (setq numt 0)& h0 j, U+ `: ?& Z3 D- ~
; )
" T. Z% k* q" X7 `1 ?5 I2 U. B$ r: C; (if (= pwd nil)4 @9 e* b% L8 @8 a, K- I+ U6 d8 I
; (setq numt 0)
3 i. s% J- A7 Y: a& l. I! y; )
3 t9 Y. l5 E1 n9 i- U+ t;
( b5 k2 ~, k8 b8 f- u! ~2 R7 R/ U( ` (command "osnap" "non")& m" E5 `1 O4 c! |9 M7 [* u
(setvar "cmdecho" 0)
* u8 e5 O' L" Q/ D P- I4 m" V (setq oldvar (getvar "pickbox")): {5 ]" `% ?: z: |$ S- A6 g
(setvar "pickbox" 0)4 h8 N/ g2 L+ A: Y
(setvar "aperture" 1)* A1 t9 o& d' ^ \' Y
(command "osmode" "0" )
7 R. h2 D; w, g8 h% Y6 m;4 \. w! ?0 B+ n; ?: W4 B* A! u- w1 T+ `
(setq prsa (/ (* prsa pi) 180.0))- K2 r y7 h6 C
(setq pitd (/ numt diap))8 j' J+ b' H) J% l& ~! `
(setq outd (/ (+ numt 2) diap))
2 u o6 [# R7 n! A* ] (setq basr (/ (* pitd (cos prsa)) 2))
( q. O: X6 k, Y( Q# t (setq orad (/ outd 2.0))
5 T( |5 h) V# y3 A5 Y; I, ] (setq z (- (expt orad 2.0) (expt basr 2.0)))
5 v7 J+ K8 L' Q- V; a (setq x (sqrt z))
d& `9 s' c, X; @. v' E (setq paodd (atan (/ x basr)))
; ~! [2 `+ Q# ]; Y q& B" _ (setq incr (/ paodd pnts))
1 W; N1 X0 u6 e3 L! z1 ~' E$ F (setq p 0.0)7 T u/ L5 i. L4 F3 i+ L7 V' }5 A
(setq pitr (/ pitd 2.0))
+ e; q/ W; P( Y$ u (setq pang (/ 360. (* numt 4.0)))
* H2 K# S: f4 G; H0 d5 ~9 }; Z1 W (setq pang (/ (* pang pi) 180.0))
% z, U6 R+ w7 V8 K2 h4 J8 M (graphscr)
8 e) }' z' D' p+ m, W& h# ] (setq p2 (getpoint "center of gear:"))3 w7 }, F" U& D* G
(setq y2 (cadr p2))
, J4 b& v* s$ X (setq x2 (car p2))7 C4 ]3 [9 }& U& d* L( p6 u
(setq r0 (/ (/ (- numt 2.5) diap) 2))5 |6 I/ ]1 A4 F' z0 V( ?2 k
(setq r1 (/ 0.2 diap))
7 H# H: t# u# O, E4 m (setq h (sqrt (- (* (+ r1 r0) (+ r1 r0)) (* r1 r1))))
6 I* X$ d5 Q3 G. q) J$ o. J (setq ang0 (/ (* pi 2) numt))% E: H% l: b, `- _ f: l3 g2 O
% P( a7 ^) d' }$ Y) F1 ~
(setq y5 (+ y2 basr)): {- ^$ d. Q' Y) t9 t
(setq p5 (list x2 y5))
3 B K, `# b+ y* G( l( F4 I (setq y55 (+ y2 r0))7 Z0 d7 l5 J% N c0 T" t0 Z( J" L7 r
(setq p55 (list x2 y55))
: u# G. p8 \" U) r* w0 q% O- } (setq p88 (list (+ x2 2) (+ y5 2)))
" N( J3 i3 k8 G$ M8 B( J (setq a3 (/ (* pi 5) 4))
+ C+ [. V) H5 y (setq a4 (/ pi 4))
% Z; }/ P7 r$ x$ [( ] (setq pz3 (polar p2 a3 (* orad 1.5)))
7 o. `: B; J: H6 I (setq pz4 (polar p2 a4 (* orad 1.5)))
) [ G7 ~& q! a. X- P (command "zoom" "w" pz3 pz4)$ k5 H6 ^( e3 `: n& u/ T8 z0 m: C
;0 D% K/ s8 J3 o; x/ [, E
(setq clay (getvar "CLAYER")), _2 R& @! q( ]+ }. x
(setq sblip (getvar "BLIPMODE")): {; g) \ I v( U5 O4 `
(setq ts (tblsearch "LAYER" "CEN"))
& P: Q ?2 p; k6 E (if (null ts)7 f$ O' H* }/ M8 S/ w& c* P: U
(progn
0 Y% m& X6 O- {: E2 ]3 B (prompt "\nCreating new layer - CEN. ") $ H8 |! E* ?1 W' G9 U
(setvar "BLIPMODE" 0)
$ J$ L) Y) B, e3 a" G0 I% P5 [ (command "LAYER" "M" "CEN" "LT" "CENTER" "CEN" "C" "RED" "CEN" "") 3 i! H# ]) A$ T' f! \5 G. V
)0 u; T+ c" {* l7 } L# c- n3 `8 b
(progn# H5 \- ]7 A& V0 G8 o: O& C* |
(if (> (cdr (assoc 70 ts)) 0) (command "LAYER" "T" "CEN" "ON" "CEN" "U" "CEN" ""))
- E2 a$ H3 u2 C( v+ {! J (command "LAYER" "S" "cen" "")
/ a1 `- g1 ~* Q )
; S6 J* W; b' J2 Q5 K+ R )' T+ w' D; M5 b0 _0 n8 _! I) K
(command "circle" p2 pitr)
. `) n* [2 L* H: K O (setvar "BLIPMODE" sblip)
: C* r1 h' S) F( x( j. r+ m8 S6 G (command "LAYER" "S" clay "")% f) u5 w8 [$ ]& O
;
9 H* B9 S, s. D2 E$ ]5 ?9 Y3 y (setq a1 (- (/ pi 2 ) 0.1))4 u E! G! D: r+ Y+ ~& @, E; y
(setq a2 (+ (/ pi 2) 0.1))* X7 [5 T8 q, \& U$ r6 u, h! D
(setq pz1 (polar p2 a1 basr))& N8 P4 u8 S8 G: Q
(setq pz2 (polar p2 a2 orad))% e1 B. A0 B+ J W: V, E
(command "zoom" "w" pz1 pz2)
" W5 j3 s' |6 k* [0 B (setq s (ssadd))! q) |% i$ v6 g& @
(setq le (entlast))% G6 k, l8 U& G5 m5 @( ]
(setq test 0), [$ {* Z9 U+ e7 q+ j5 g6 _. E
8 G; b( ~* L0 m9 H: a3 } (command "pline" p5)' t% t/ C& g: E+ ]5 {; k% l
(setq p (+ incr p ))$ x- y6 [/ f- m5 ?! ~- V7 Y
(while (> pnts 0)
1 R' N$ ^; s3 z: ~- k (setq e1 (sin p))
3 x# J- w1 Y' n1 u' @7 M. B (setq e2 (cos p))
+ q- x: h" I# P3 G: Z4 Q (setq e (/ e1 e2))
% G! i9 A" ^( D9 b# X! l0 x (setq j (- e p))$ ~/ c, a W, k! [* K8 I# Q
(setq x1 (* (/ (sin j) (cos p)) basr))
; v: @8 u" O9 {) G& ^& h (setq y1 (* (/ (cos j) (cos p)) basr))% V, a. j# X2 h6 L' w/ d. p0 m
(setq x3 (+ x2 x1))0 n, W0 f y. @* w% ]
(setq y3 (+ y2 y1))1 [, `1 b3 U# U$ H4 |0 K) y
(setq p3 (list x3 y3))
4 k* D# s2 h: Z4 g8 Y (command p3)3 Y( {, }( g$ S" G7 O) I/ k% V# x, m
(setq p (+ incr p))& F4 S% F1 P0 s' M; Z/ G9 S0 s
(setq pnts (- pnts 1))
$ }: S2 }6 M$ C' d (if (/= test 1)5 c- S! c8 H; W# t0 W) y
(progn2 p- \! C8 b; L0 y+ R
(setq hyp (sqrt (+ (expt x1 2) (expt y1 2))))
1 w( ~5 e8 B; a! N+ J1 D' m (if (> hyp pitr): M) v! K. Q: R# V0 ^3 d# B9 u
(progn- u8 x3 s4 R: S. F* v( B3 ?
(setq pint p3)
8 t- t# h' [1 A0 V) R4 U (setq test 1)# }+ N/ Q4 F8 X( K# k; i0 V
)
: {- n" ?" C9 s" v. Z: H8 ? )
4 h4 M, y3 Y0 w3 W) U) n );endif- {' m- S9 E D+ k; s8 J
);endif' Q8 e$ L8 Q8 I! w4 {) k
), t3 f! w# j& t U
(command ""). V0 b0 ?; k! E. Q) k8 |
(setq L2 (ssget "L"))& ^% f4 W' w! r' K! k" P8 _5 ?
(initget "Y y N n")+ V- f, w: G" h1 S0 }
(setq ans (getkword "\n Finish the gear ?:<Y> "))0 q+ {: l4 w& q
(if (/= ans "N")
( J$ R1 ]3 P: Y0 h( |/ \% B4 B( [ (progn# D# ~& j5 k: N7 `# C
(command "zoom" "w" pz1 pz2)
; o- G: \! q2 D, E (setq p11 (osnap pint "inter"))
- T4 i4 }! |" M4 J; \6 ] (setq ang (angle p2 p11))
# g9 S; `% E9 m1 a1 L3 @8 S1 y! b (setq angi (- ang pang))8 E+ h! l9 m( w* @, c
(setq p12 (polar p2 angi 1.0))
" T/ q0 a$ _% v J1 n;/ P9 @8 Y, t) X, k l! q
(if (< (* 0.94 numt (/ 1 diap)) (* h 2.0005))% w) [% S2 G- [
(progn: P! x9 Z; n; q3 V, r- S
(if (< numt 42)8 Y% `; k+ @7 e" I" v
(progn j1 A. y, O: ^4 H
(setq p56 (list x2 (+ y2 r0)))0 V' d7 r$ f$ W. C2 u) u# M' T* |2 `
(command "line" p56 p5 "")/ |+ ~, b ]7 Y; R2 n Z
(setq L33 (entlast))( T7 N& c" N4 {$ X! K
(command "zoom" "w" p77 p88)
1 ~7 x/ T b9 ~# H (command "mirror" L2 L33 "" p2 p12 "")
% L. b9 G2 h4 N (setq adj1 (- angi (/ pi 2)))
! y; o, M% h/ M( n! N (setq adj2 (- (/ pi 2)(* pang 4)))4 I, q4 i: p8 J4 h
(setq p17 (polar p2 (+ angi adj1) r0))& B% E D/ j! U1 `7 {7 I9 }
(setq p16 (polar p2 adj2 r0))
6 W' R0 }7 N6 D5 I (command "arc" p16 "c" p2 p17). }: D8 T+ R: X6 z% f
) ;end progn
2 T6 ^, @7 v6 L- ^ (progn7 c* F' U" v- L' `3 i
(command "zoom" "w" p77 p88)' E$ v: M) _9 ~1 ~$ [5 c
(command "mirror" L2 "" p2 p12 "")
# c8 L* G; q/ z% z+ M9 e (setq pL1 (entlast))
: }8 d' P% Q5 l$ S4 u) ~7 o4 a1 M (setq adj1 (- angi (/ pi 2)))
+ h" h6 a7 ~$ s (setq adj2 (- (/ pi 2)(* pang 4)))- A# q8 k! L& {/ \4 V
(setq p17 (polar p2 (+ angi adj1) r0))
) J1 ^+ R% z0 ^8 H# k& H* q (setq p16 (polar p2 adj2 r0))4 H2 @6 b7 w+ A- T$ F* N9 B0 z
(if (> numt 101)8 J, O- A' x7 m- }* H5 t
(command "arc" p17 "c" p2 p16)
: @; f1 H8 {/ `6 d$ y' q' `& [ (command "arc" p16 "c" p2 p17))
?% ~ ~& K* \5 Z/ _& e (setq arc4 (entlast)), n% ]# }& P- V) Q: h* A
(setq p171 (polar p17 0.7854 (/ 0.4 diap)))
. U' b6 Q' d* W" Y. k( c (setq p172 (polar p17 3.9 (/ 0.4 diap)))' s& b( h; z0 p: c& q$ E( _
(if (> numt 101)7 {+ L) D. {- Y# L
(setq p18 (polar p2 (+ angi adj1 ang0) r0))
8 s; ]3 s6 m0 @6 b+ E3 \7 A) d (setq p18 (polar p2 (+ adj2 ang0) r0)))
9 [- y5 [3 }. I& W& Z; r7 P! k (setq p181 (polar p18 2.3 (/ 0.4 diap)))
3 K* ~. u0 J7 Y8 p$ A (setq p182 (polar p18 5.5 (/ 0.4 diap)))# S- r9 u: w! Y+ \; m/ ]& G
(command "zoom" "w" p171 p172)# A. T K. z( J- ~ s3 p
(if (> numt 101)
) g& P5 f, A6 t; _' n( n4 [ (command "extend" pL1 "" p16 "") ' e# Z% i' @0 G f. C
(command "extend" pL1 "" p17 ""))
/ N6 I8 p& P9 Z, q8 i (setq ang0 (/ (* ang0 180) pi))
) O5 H0 T' p1 y/ S: H% d4 a: j! l (command "rotate" arc4 "" p2 ang0), ~' ~: _7 x, m
(command "zoom" "w" p181 p182)
6 f4 U4 i! J) B5 n5 f2 n+ L (command "extend" L2 "" p18 "")# d) ?) m, C2 ]; N
(command "zoom" "w" pz1 pz2)
* d3 ]$ r t+ p5 h (command "trim" arc4 "" p5 "")$ V( V$ _" l! q/ K/ D
(command "erase" pl1 "")
3 S' L ^8 }8 U& F2 G" k (command "mirror" L2 "" p2 p12 "")
0 U" } E+ S# f ) ;end progn9 d2 k8 H+ X0 Q5 J
) ;end if
; X; _' b3 Z. H" J j6 {! h ) ;end progn
8 C# X+ z: Z$ a# C9 ] (progn
, E' e: Z* D; [8 O/ U (setq ang12 (- (/ pi 2) (angle p2 p12))) & j9 |, {+ \3 S) \) _6 j9 M! q
(setq ang57 (atan (/ r1 h)))
! ^# v+ N' x1 K$ n) R (setq ang58 (- ang0 (* ang12 2) (* ang57 2)))5 u0 r# D; t; t9 C# ~& c! J5 R
(setq ang577 (+ (/ pi 2) ang57))( S6 c. ?4 I: |+ L9 u1 p
(setq ang588 (+ ang577 ang58)) x' t, C h% B- E9 Q; A, {; q
(setq p57 (polar p2 ang577 (+ r1 r0)))
9 o: N9 [: Q1 F' s$ Q- o5 H (setq p577 (polar p2 ang577 r0))
- C5 E8 p {: @8 k (setq p588 (polar p2 ang588 r0))
+ \0 U* V% q5 M (setq p56 (list x2 (+ y2 h)))
5 n! t+ Y1 H& P$ ]9 A. ]1 F" d (command "arc" p577 "c" p57 p56) i* J' B5 K9 B l1 n' b
(setq arc1 (entlast))
' f" L5 Y3 i5 z& ^$ D# K (command "arc" p577 "c" p2 p588)% ?3 E: C! v2 x& | P1 i
(setq arc2 (entlast))# I; r. F. H4 j) g4 O. h
(command "line" p56 p5 "")- o* ?2 ^* S2 \$ g3 H; W
(setq L33 (entlast))
9 i) [4 f% \' T3 j9 [( N2 u" ^ (command "zoom" "w" p77 p88)
9 @+ I C. M X# S' F4 M (command "mirror" arc1 arc2 L2 L33 "" p2 p12 "")* ?! f: o' [5 U" C
(command "erase" arc2 "")
6 B. [1 S% L; }! u ) ;end progn
9 ^0 D* Y5 B' O ) ;end if
" H% K( Z& u1 e- g7 V- ~( x2 m; ! Q. f9 W: L+ C& h4 S) b
(setq beta (angle p2 p3))
- ?& Z& l5 i! g- C( d5 T; C1 ]2 J (setq ang2 (- (* angi 2) beta)). M8 D% d# J, {8 ?/ H8 i
(setq p15 (polar p2 ang2 orad)). A6 z( B3 S) v7 w
(command "arc" p15 "c" p2 p3)0 Z2 b' r4 ~" H( X7 c t5 X
(while (setq le (entnext le))
$ K0 J( u& L% H( h% R* G/ J7 ] (ssadd le s)# N, |) v. P& ^9 Z
). S: N- |# ]4 c0 V7 X; T9 ^
(command "array" s "" "p" p2 numt "" "")$ W" N# p6 o6 E
(setq q1 (nth 0 p2))! V6 I+ R8 S, }& I# a1 N
(setq q2 (nth 1 p2))
, B8 P N0 l$ Z% |/ | (setq q5 (+ q1 pitr 2))
- s' r2 U+ |/ ]- }8 g (setq q6 (- q2 pitr 2))$ K y3 y7 U1 u; ^+ _: J: t
(setq q3 (- q1 pitr 2))
9 M3 Q$ I- y5 B( c p' o (setq q4 (+ q2 pitr 2))
: _8 Q; @, ^% J# V2 M" {/ v2 ] (setq q1 (list q5 q6)), x$ O, E0 A( p$ d) A. [
(setq q2 (list q3 q4))
k4 U: p6 d5 X8 Y8 n! ?' i (command "zoom" "w" q1 q2)9 T x0 a: a& d5 _! D m# T
) \% S0 v; W/ F0 J
)
, X5 s9 b: { v9 n (setvar "pickbox" 5)# ~8 n* V/ A3 R
(setvar "aperture" 5)( d, v( `3 r& b+ g* H8 B
(setvar "osmode" 37)
+ B- o, O; a+ o3 R! a ! i: H' L$ W& |* ~
(princ "Finish gear ")& k! \9 N( C& |' K! x8 `
(princ numt)
9 L# Q& v- [' ?! y/ d) \ (princ "T")' m" l- X3 _. b7 p# {- S# |
(princ)" o( g, B. a E" [7 f9 F
)
, h& j8 b. V. ?- @/ N& j5 F0 V$ @5 u/ t8 [( H: H1 g
|