(defun C:gear ()% Z: H9 H5 e9 b( }6 w; m
(setq numt nil6 a, i# ~. j* x" `. |$ J7 v2 _
diap nil
# F- L& K9 M! e4 k2 s3 D prsa nil5 _; P2 s0 d3 z( Y! F" c( Z
pnts nil& P$ C" y6 h. H* J$ y3 c( m* ?
test nil
1 C. Y5 x( H; G$ f% ^# k pwd nil# A- i( I3 z" J/ p8 f% u
)' e0 |, r1 A; h& q, c8 |
( ]; I0 n3 n# Q. k3 `. {* C* A( @
(setq numt (getint "Number of teeth:<24>"))
& _( p8 i+ C$ Y+ i (if (= numt nil)
( F# D' N- `3 _) A+ \ (setq numt 24)
2 o1 c+ ^/ K7 o) N: E' D$ \ )
+ c- t! p* M9 E# r (setq diap (getreal "Modulus of gear:<0.5> "))
; o" S1 N- @ @) c# w6 X8 o, u (if (= diap nil)
6 P( [2 o# a/ I$ p (setq diap (/ 1 0.5))0 j0 `2 J" u; I7 h% p. [( L
(setq diap (/ 1 diap))5 V& j6 n8 s, u% Y2 h# H
)
& P/ [% A- w# d# S: z9 S1 s (setq prsa (getreal "Pressure angle:<20.0> "))
, n1 `" N$ M+ z7 ?7 u (if (= prsa nil)
# x1 n' r- n- o4 F. F6 g (setq prsa 20.0)* P" u, p% n5 O8 V" w
)
/ J/ P& V/ t$ P: P G2 ` (setq pnts (getint "number of points on curve:<40> "))
! g" C3 {& J( m$ O' n (if (= pnts nil)2 G% b- g8 X8 D8 q: {
(setq pnts 40)
$ p6 ?$ R( [9 m )8 N& x! N/ v& m) y$ w
- ] t; b6 m$ i2 u$ c2 C* `
; (setq pwd (getreal "Please input password:"))* h* L; K& W: B5 ^
; (if (/= pwd 8833)
" l: t- W) u2 y' l8 v; (setq numt 0)
* h& ~+ X, u1 _) G9 \ K. n; )
& Q$ g4 g# T V+ s3 X; (if (= pwd nil)
) I) c8 m/ x' g& \5 l; (setq numt 0)( J& |( A4 ]5 O- [4 s' U4 k" l
; )& f( W& }+ P. B0 ], l2 B
;
1 w% O3 a) I, Z# s: p (command "osnap" "non")4 H6 L+ a+ a [/ D# {9 i
(setvar "cmdecho" 0)
* U: R z4 o3 t$ y% F! T" l- b0 T (setq oldvar (getvar "pickbox")). z/ Z: U; a I! A% G
(setvar "pickbox" 0)1 p4 t& A7 b$ T
(setvar "aperture" 1)( u" J4 K/ Z6 G
(command "osmode" "0" ), D' D# F V/ E u0 V6 `
;
( A2 U* _% z- k; A% G# @ (setq prsa (/ (* prsa pi) 180.0))6 Y3 s$ Y3 E# K8 N+ ?/ Z+ g6 Y+ L
(setq pitd (/ numt diap))
6 n* d" N. i' q3 F: x4 Y$ U (setq outd (/ (+ numt 2) diap))
O! [# Q8 g8 q8 {4 s, R (setq basr (/ (* pitd (cos prsa)) 2))
0 g. g# _5 J! O2 H8 S (setq orad (/ outd 2.0))) {' @5 K% D% T
(setq z (- (expt orad 2.0) (expt basr 2.0)))
6 P m; d: H1 @5 ]$ g" A) i (setq x (sqrt z))% g3 I0 z( V8 _4 \
(setq paodd (atan (/ x basr)))+ d$ K) U* q2 F1 b% Z8 v( m1 `) E# W
(setq incr (/ paodd pnts))0 w6 ]8 X. y1 `
(setq p 0.0)- n: a9 ^4 w$ ^
(setq pitr (/ pitd 2.0))1 R, ^; j. {! g. Q; m
(setq pang (/ 360. (* numt 4.0))): u5 m4 H* S5 X' P
(setq pang (/ (* pang pi) 180.0))- R9 D S2 @$ W1 E- M$ d! [* Z
(graphscr)
4 E# |5 Y/ g: e+ c. b* O, K (setq p2 (getpoint "center of gear:"))2 |( e3 {" i& i, Y6 ?
(setq y2 (cadr p2))$ U! ?. r: B2 ?# R) V9 T) x: L
(setq x2 (car p2))
) N! W% g0 K- ^ (setq r0 (/ (/ (- numt 2.5) diap) 2))
* T: u8 o+ V' @8 ` (setq r1 (/ 0.2 diap))
8 K; ?* r' s( E$ O3 w (setq h (sqrt (- (* (+ r1 r0) (+ r1 r0)) (* r1 r1))))9 {7 l7 @2 h) ? N1 k! T1 D+ w& E
(setq ang0 (/ (* pi 2) numt))& \/ Y! x; k, U) W' @/ \$ O$ ?
- j# n; [& J* X5 N% E$ _ (setq y5 (+ y2 basr))/ ]1 |: q* t e
(setq p5 (list x2 y5))
3 i/ K" \$ m L- c7 ]4 c (setq y55 (+ y2 r0))5 u3 g4 U/ c1 ]% u( @/ n3 @* t
(setq p55 (list x2 y55))
( Q# f7 ?& o# G, }' v" ~, A (setq p88 (list (+ x2 2) (+ y5 2)))& c2 z. S$ J& u- K x+ S3 S
(setq a3 (/ (* pi 5) 4))' C5 S; F; f/ v0 ^
(setq a4 (/ pi 4))/ `2 B6 A" A9 O; G8 D1 ?
(setq pz3 (polar p2 a3 (* orad 1.5)))% m- @/ Y& ~ _! X) }; T" u
(setq pz4 (polar p2 a4 (* orad 1.5)))
* l/ c# \) J3 X! c (command "zoom" "w" pz3 pz4)+ E* E8 _' r2 n h
;
2 Q9 W, ^% q+ r0 n (setq clay (getvar "CLAYER"))+ O6 @8 k' `( {% _. X O" W* o
(setq sblip (getvar "BLIPMODE"))3 c' H+ P. s) T' V
(setq ts (tblsearch "LAYER" "CEN")). t' q* `& Q' l j" u6 H
(if (null ts)
" d* z" G7 k- E (progn* M8 a% G: t, v/ t' |
(prompt "\nCreating new layer - CEN. ") " ^0 c n$ o' w3 G b; |
(setvar "BLIPMODE" 0)0 O" C4 R; A m
(command "LAYER" "M" "CEN" "LT" "CENTER" "CEN" "C" "RED" "CEN" "")
4 _4 O; l4 D$ `" J. _& x( u: P )
$ t9 g- h6 D% y) h8 ] (progn. L9 ?. O5 I: m( K4 s' _$ S) `, W6 Y% {
(if (> (cdr (assoc 70 ts)) 0) (command "LAYER" "T" "CEN" "ON" "CEN" "U" "CEN" ""))
( Z# n: ]9 i- t: }* B (command "LAYER" "S" "cen" "")4 n& L" k! R: u( b! C8 t8 G5 \0 w Q3 e
)
2 G3 X4 v; ], A8 K7 Y$ U. W% O2 u )
; Z h ~; q j, D (command "circle" p2 pitr)1 z$ `4 q' \2 i: E; I
(setvar "BLIPMODE" sblip)
; X+ T% e/ {, k5 q$ G& d3 z (command "LAYER" "S" clay "")
$ m2 E% B+ I7 O) P6 D0 S;
. Q0 h$ L, M8 w. ~1 A9 k5 E6 G& s (setq a1 (- (/ pi 2 ) 0.1))
- K6 h: |4 I& z; c+ x (setq a2 (+ (/ pi 2) 0.1))2 }9 b9 m/ V9 W" g' a, n
(setq pz1 (polar p2 a1 basr))
: ^7 L* O% o2 m- Y- K& V (setq pz2 (polar p2 a2 orad)), c8 j4 y6 ?+ G3 W8 _4 X- H
(command "zoom" "w" pz1 pz2)
# D, F7 l" L t$ F; x; N (setq s (ssadd))
3 d: n) q2 I: {! ^/ g$ L; O, m) O (setq le (entlast))5 l* p$ y6 a& \: N8 g3 n3 g
(setq test 0)( g8 G! C. P7 G {$ l" d& ?
5 {' G- h4 x' f, n/ N2 F
(command "pline" p5)
7 V0 I* |" |9 J* o, U9 c/ A (setq p (+ incr p ))
7 l! i) Q9 ^& p4 ~2 R: q% {# w (while (> pnts 0) a8 r5 y. p. f. p! }
(setq e1 (sin p))8 w) y) |& F! ]) c @- @
(setq e2 (cos p))2 X) j# E0 y% a0 o7 v) i
(setq e (/ e1 e2))
4 } m# r+ n8 y2 s. ]" @; z (setq j (- e p))# X8 k# ^& i' T3 I2 B' A
(setq x1 (* (/ (sin j) (cos p)) basr))& k; @ z' E V
(setq y1 (* (/ (cos j) (cos p)) basr))2 s4 U+ F% s/ t/ U! a
(setq x3 (+ x2 x1))
, k; W4 x# ]1 P/ a/ ~6 P+ B (setq y3 (+ y2 y1))
0 A/ h! r2 e+ u9 E Q' { (setq p3 (list x3 y3))
4 `+ z/ V1 ?1 \" h2 A% C (command p3)
; s8 T1 G6 [0 ?% i: c (setq p (+ incr p))
) z+ ?: E/ P7 N. O" { (setq pnts (- pnts 1))0 h" j: f4 F7 _; i+ E6 K' |+ }
(if (/= test 1): D% a9 r# i2 ?( X6 e$ t L* o$ R- [
(progn p7 x7 [$ v* B: ]3 b
(setq hyp (sqrt (+ (expt x1 2) (expt y1 2))))3 q1 C$ \5 ~& V5 M$ `
(if (> hyp pitr)
' g2 N% h9 h! e (progn
$ x0 u0 ^, C( r6 O, [: l6 ` (setq pint p3)5 m5 b( l" B0 l$ r2 M
(setq test 1)
+ n3 m- P' x* e0 u )
- N' ^+ ]' `+ ^$ w+ L3 B, [ )8 X9 ~, u& Q2 y- b! X. y
);endif
) \- ], @8 p. X! r+ Z/ J );endif
3 V1 G9 I9 l! j/ d )
" u$ |+ v+ b+ V (command "")% I- }% `' I7 ]' C* {. q
(setq L2 (ssget "L"))# {' e1 R; ]. v- C* J/ i" M9 o4 c
(initget "Y y N n")* j1 G2 i4 o: n8 d( s" `: n7 F: j
(setq ans (getkword "\n Finish the gear ?:<Y> "))
! |% i2 ?0 ~: W$ Z' A1 f% C+ o (if (/= ans "N")2 j( i$ C( A1 i9 E
(progn$ _0 X' h$ X& @
(command "zoom" "w" pz1 pz2)
& e A2 {- w5 G6 D+ \/ W (setq p11 (osnap pint "inter"))
4 `- N! d. F7 ^/ {" g (setq ang (angle p2 p11))) g. X: X5 T; t8 {
(setq angi (- ang pang))
% }6 r" ?! w: i/ O" m (setq p12 (polar p2 angi 1.0))
: U. p: [) g! _$ L" J. y( i;
; N$ ]. A0 q- j (if (< (* 0.94 numt (/ 1 diap)) (* h 2.0005)); T% G8 W( G9 c& g) i h
(progn7 m% z" [2 f7 q1 b" R
(if (< numt 42)2 A% A$ f1 _7 ~1 x+ l0 C
(progn/ c6 h% Z( @8 \; J A c/ C8 D+ G
(setq p56 (list x2 (+ y2 r0)))* {4 M0 ?; p' J
(command "line" p56 p5 "")
8 D/ r9 [& {' w6 V/ f (setq L33 (entlast))
; o# B$ V. d r0 s, x l# g (command "zoom" "w" p77 p88)6 f0 L3 E% ~+ H& [# o
(command "mirror" L2 L33 "" p2 p12 "")
8 ^% o; x6 C: Z& B! e: E (setq adj1 (- angi (/ pi 2))): j& `( e' @( a- m
(setq adj2 (- (/ pi 2)(* pang 4)))* x$ K) v3 T3 K% Q2 [% k
(setq p17 (polar p2 (+ angi adj1) r0))
6 q) o5 \0 y% f3 m' p9 R (setq p16 (polar p2 adj2 r0))
# g" W# F0 l; ]! V (command "arc" p16 "c" p2 p17)
, a; Q n% C1 B, Q6 X( B4 C ) ;end progn" i3 _3 M8 E0 Q+ x6 \
(progn; ~9 j7 R, q5 ?
(command "zoom" "w" p77 p88)- m' M( T* T, V' l+ A
(command "mirror" L2 "" p2 p12 ""); x5 ~4 z0 ?3 s6 }0 u
(setq pL1 (entlast)) 9 Q: B( T1 }6 m- ^% R* ]: f }; r
(setq adj1 (- angi (/ pi 2)))
5 q; ^, M1 c+ i6 }1 D9 g (setq adj2 (- (/ pi 2)(* pang 4)))
1 o4 q. ]7 T, C" } H& f$ e, m- } (setq p17 (polar p2 (+ angi adj1) r0))! \* A6 E- m: S' N2 P- S0 }8 g- p
(setq p16 (polar p2 adj2 r0))
$ r: ?5 H' x! W/ z- I% C (if (> numt 101)& }) t% N& P/ ^8 ^, G/ Y/ g# J% a
(command "arc" p17 "c" p2 p16); J \5 H9 s" h- Q9 r
(command "arc" p16 "c" p2 p17))# K1 J: q7 H! ]
(setq arc4 (entlast))9 \% d6 E# |- _- b6 M8 C/ U8 c
(setq p171 (polar p17 0.7854 (/ 0.4 diap)))
" j f2 @) n/ T: f% g (setq p172 (polar p17 3.9 (/ 0.4 diap))) C) M7 ?" n. T, ^% g o) E
(if (> numt 101)" x' l, Y8 C1 {: A9 U
(setq p18 (polar p2 (+ angi adj1 ang0) r0))
h, T* n4 u8 j9 Q3 Z& u6 J) X. h: j (setq p18 (polar p2 (+ adj2 ang0) r0)))8 m9 @$ t3 B0 w9 ^
(setq p181 (polar p18 2.3 (/ 0.4 diap)))
1 D1 A9 b5 R2 j! Y; ~ (setq p182 (polar p18 5.5 (/ 0.4 diap)))
0 p3 g8 i7 U/ j* W) r1 A (command "zoom" "w" p171 p172)! ^* T: N7 G/ t9 s( d1 @
(if (> numt 101)
: `$ u1 [9 }! z. b (command "extend" pL1 "" p16 "") 2 N1 V3 i+ H9 D& f; _
(command "extend" pL1 "" p17 ""))3 ~! ^; m2 N9 {* ]! T
(setq ang0 (/ (* ang0 180) pi)), y! V0 @6 R8 S5 B0 z6 [, x$ r
(command "rotate" arc4 "" p2 ang0)- `- ^ {5 d4 m4 ]5 `0 L5 g
(command "zoom" "w" p181 p182)3 W% f5 y6 B: ~/ T8 l* _6 P
(command "extend" L2 "" p18 "")2 Y( O+ M! u3 d" F4 V Y) H8 c
(command "zoom" "w" pz1 pz2)
! f# w+ A) K* m0 c- | (command "trim" arc4 "" p5 "")
( D1 }* k( v" U3 a (command "erase" pl1 "")
# z6 _ [9 k+ K( R+ m (command "mirror" L2 "" p2 p12 "")
5 X; ]6 A7 I$ o8 ~: P5 e T& @ ) ;end progn0 _+ {3 k1 a; |7 ]9 L1 k, ]; a
) ;end if+ {# J' n7 }- O" n5 Z' M% E
) ;end progn
- ?! |8 A8 d$ q# p5 d. w! ` (progn ~$ i# x! M" o- i! m6 [6 N
(setq ang12 (- (/ pi 2) (angle p2 p12)))
8 @: F- O" _+ e (setq ang57 (atan (/ r1 h)))
" n" ^+ y$ z. w' n* G1 j (setq ang58 (- ang0 (* ang12 2) (* ang57 2)))" @& p3 j R6 {( T Y
(setq ang577 (+ (/ pi 2) ang57))
: D5 B& K2 q: s (setq ang588 (+ ang577 ang58))/ @6 w% [1 N; o! z; s
(setq p57 (polar p2 ang577 (+ r1 r0)))
- H- v' e$ Q! t5 a* ]! M. { (setq p577 (polar p2 ang577 r0))
1 C3 x" m. _. P (setq p588 (polar p2 ang588 r0)) % R: J6 ?3 S4 j2 L
(setq p56 (list x2 (+ y2 h)))* |+ V9 U2 V( n3 b5 g
(command "arc" p577 "c" p57 p56)
# G$ e/ x2 q( {# C8 D3 i+ o/ Y1 c; r7 v (setq arc1 (entlast)), O. I3 J' ?+ a$ q
(command "arc" p577 "c" p2 p588)
s i5 t/ h' G. b9 t7 k$ S% T7 F (setq arc2 (entlast)). S: L" U! h% p
(command "line" p56 p5 "")
; w% B) Y$ h' R (setq L33 (entlast))
: Q) j( h1 {$ K# T, U (command "zoom" "w" p77 p88)
' `( `( ]$ X) C4 n% d' d (command "mirror" arc1 arc2 L2 L33 "" p2 p12 "")
6 M' W' V$ B* ]& A (command "erase" arc2 "")6 B0 W$ A u% R& F! k
) ;end progn ' f+ J0 g" {* E) D. F
) ;end if
* E1 Q2 ^% B$ e7 t! [;
4 t3 T. I4 Q# c- }* B0 [$ D (setq beta (angle p2 p3)), c% D$ y* Z) M. V) o. y
(setq ang2 (- (* angi 2) beta))
. W9 X3 O# S$ _; C4 _ (setq p15 (polar p2 ang2 orad))! C, e+ [$ L& R4 f5 T0 ^
(command "arc" p15 "c" p2 p3)8 w, q! W4 C& h% ]
(while (setq le (entnext le))! F( ] F2 u0 Z0 v9 ~* r/ ` R; d
(ssadd le s)
" E E I2 a) q )
- G+ q# e0 a6 {4 U (command "array" s "" "p" p2 numt "" "")
: y2 t& t3 F" ~- Z: l3 j (setq q1 (nth 0 p2))
6 j; W0 I* B ^+ y; |0 C8 t (setq q2 (nth 1 p2))% I/ n! N6 w# `3 G4 Q9 ^
(setq q5 (+ q1 pitr 2))5 a% `( g& D: `; @2 t
(setq q6 (- q2 pitr 2))
8 e% L i) z7 ~( G! |* h) a (setq q3 (- q1 pitr 2))
* z v6 Q# K5 b' N3 J (setq q4 (+ q2 pitr 2))2 W: f' s/ R. ?' c- Y/ T
(setq q1 (list q5 q6))
4 ]; W5 I: a) q (setq q2 (list q3 q4))1 r0 ?8 O$ k# y
(command "zoom" "w" q1 q2)' c$ a1 l& P4 ]
)! C' j. P7 B5 y* X1 ?: |# V
)
$ N7 L& Q2 I$ e8 D (setvar "pickbox" 5)* }9 C1 G% ~& O4 a6 P$ C+ z: T
(setvar "aperture" 5)) |8 L3 h& Y5 Q
(setvar "osmode" 37); H% z1 o' ]9 f* F- h8 I9 s/ p
( F8 q3 z6 x. U: `. U, Q/ L1 i/ _
(princ "Finish gear "); t* E6 R) ~8 O9 m3 J3 k+ Z
(princ numt)9 |2 g# K( [5 O$ A+ i$ v% }) l* V
(princ "T")
& W! ~% Z3 B- l0 G. y7 B& f (princ)
- |& g1 {2 m F1 I# N' \ )1 G3 Q) a9 P1 P2 G
8 ^) M+ J1 l; N5 S
|