Загрузка данных
(defun c:DrawParts ( / pt pt5 acos mk-line mk-circle mk-arc d1 k a anext ck p1 p2 cTop cBot cMid4 cL yR xR cR1 cR2 ss yN cNR cNL cLow xB cBR cBL xK cKR cKL cMid5 dyInt xInt pIntR pIntL old-os old-meas)
(setq old-os (getvar "OSMODE"))
(setq old-meas (getvar "MEASUREMENT"))
(setvar "OSMODE" 0)
(setvar "MEASUREMENT" 1)
(setvar "LWDISPLAY" 1)
(defun pt (x y) (list (float x) (float y) 0.0))
(defun pt5 (x y) (list (+ 160.0 (float x)) (+ -60.0 (float y)) 0.0))
(defun acos (x) (atan (sqrt (max 0.0 (- 1.0 (* x x)))) x))
(defun mk-line (p1 p2 lw)
(entmake (list '(0 . "LINE") (cons 370 lw) (cons 10 p1) (cons 11 p2)))
)
(defun mk-circle (c r lw)
(entmake (list '(0 . "CIRCLE") (cons 370 lw) (cons 10 c) (cons 40 (float r))))
)
(defun mk-arc (c r a1 a2 lw)
(entmake (list '(0 . "ARC") (cons 370 lw) (cons 10 c) (cons 40 (float r)) (cons 50 (float a1)) (cons 51 (float a2))))
)
(mk-circle (pt 0 60) 10.0 50)
(mk-circle (pt 0 -60) 10.0 50)
(setq d1 (acos 0.92))
(setq k 0)
(repeat 6
(setq a (* k (/ pi 3.0)))
(setq anext (* (1+ k) (/ pi 3.0)))
(mk-arc (pt 0 0) 25.0 (+ a d1) (- anext d1) 50)
(setq ck (pt (* 25.0 (cos a)) (* 25.0 (sin a))))
(setq p1 (pt (* 25.0 (cos (- a d1))) (* 25.0 (sin (- a d1)))))
(setq p2 (pt (* 25.0 (cos (+ a d1))) (* 25.0 (sin (+ a d1)))))
(mk-arc ck 10.0 (angle ck p1) (angle ck p2) 50)
(setq k (1+ k))
)
(setq cTop (pt 0 60)
cBot (pt 0 -60)
cMid4 (pt 0 0)
cL (pt (sqrt 2800.0) 0)
yR (/ 6725.0 120.0)
xR (sqrt (- 5625.0 (* yR yR)))
cR1 (pt xR yR)
cR2 (pt xR (- yR)))
(mk-arc cL 100.0 (angle cL cTop) (angle cL cBot) 50)
(mk-arc cTop 20.0 (angle cTop cR1) (angle cL cTop) 50)
(mk-arc cBot 20.0 (angle cL cBot) (angle cBot cR2) 50)
(mk-arc cMid4 45.0 (angle cMid4 cR2) (angle cMid4 cR1) 50)
(mk-arc cR1 30.0 (angle cR1 cTop) (angle cR1 cMid4) 50)
(mk-arc cR2 30.0 (angle cR2 cMid4) (angle cR2 cBot) 50)
(mk-line (pt 0 -85) (pt 0 85) 15)
(mk-line (pt -52 0) (pt 50 0) 15)
(mk-line (pt -25 60) (pt 25 60) 15)
(mk-line (pt -25 -60) (pt 25 -60) 15)
(mk-line (pt (* -38 (cos (/ pi 3.0))) (* -38 (sin (/ pi 3.0))))
(pt (* 38 (cos (/ pi 3.0))) (* 38 (sin (/ pi 3.0)))) 15)
(mk-line (pt (* -38 (cos (* 2.0 (/ pi 3.0)))) (* -38 (sin (* 2.0 (/ pi 3.0)))))
(pt (* 38 (cos (* 2.0 (/ pi 3.0)))) (* 38 (sin (* 2.0 (/ pi 3.0))))) 15)
(mk-circle (pt 0 0) 25.0 15)
(setq ss (ssadd))
(mk-arc (pt5 0 120) 10.0 0.0 pi 50) (ssadd (entlast) ss)
(mk-arc (pt5 0 85) 10.0 pi (* 2.0 pi) 50) (ssadd (entlast) ss)
(mk-line (pt5 -10 85) (pt5 -10 120) 50) (ssadd (entlast) ss)
(mk-line (pt5 10 85) (pt5 10 120) 50) (ssadd (entlast) ss)
(mk-circle (pt5 0 59) 10.0 50) (ssadd (entlast) ss)
(setq yN (+ 32.0 (sqrt 1476.0))
cNR (pt5 32.0 yN)
cNL (pt5 -32.0 yN)
cLow (pt5 0 32.0)
xB (sqrt 448.0)
cBR (pt5 xB 8.0)
cBL (pt5 (- xB) 8.0)
xK (sqrt 285.0)
cKR (pt5 xK 30.0)
cKL (pt5 (- xK) 30.0)
cMid5 (pt5 0 59.0)
dyInt (/ 1065.0 54.0)
xInt (sqrt (- 625.0 (* dyInt dyInt)))
pIntR (pt5 xInt (+ 32.0 dyInt))
pIntL (pt5 (- xInt) (+ 32.0 dyInt)))
(mk-arc (pt5 0 120) 22.0 0.0 pi 50) (ssadd (entlast) ss)
(mk-line (pt5 22 120) (pt5 22 yN) 50) (ssadd (entlast) ss)
(mk-line (pt5 -22 120) (pt5 -22 yN) 50) (ssadd (entlast) ss)
(mk-arc cNR 10.0 pi (angle cNR cLow) 50) (ssadd (entlast) ss)
(mk-arc cNL 10.0 (angle cNL cLow) 0.0 50) (ssadd (entlast) ss)
(mk-arc cLow 40.0 (angle cLow cBR) (angle cLow cNR) 50) (ssadd (entlast) ss)
(mk-arc cLow 40.0 (angle cLow cNL) (angle cLow cBL) 50) (ssadd (entlast) ss)
(mk-arc cBR 8.0 (* 1.5 pi) (angle cLow cBR) 50) (ssadd (entlast) ss)
(mk-arc cBL 8.0 (angle cLow cBL) (* 1.5 pi) 50) (ssadd (entlast) ss)
(mk-line (pt5 (- xB) 0) (pt5 -10 0) 50) (ssadd (entlast) ss)
(mk-line (pt5 10 0) (pt5 xB 0) 50) (ssadd (entlast) ss)
(mk-line (pt5 -10 0) (pt5 -10 22) 50) (ssadd (entlast) ss)
(mk-line (pt5 10 0) (pt5 10 22) 50) (ssadd (entlast) ss)
(mk-line (pt5 -10 22) (pt5 (- xK) 22) 50) (ssadd (entlast) ss)
(mk-line (pt5 10 22) (pt5 xK 22) 50) (ssadd (entlast) ss)
(mk-arc cKR 8.0 (* 1.5 pi) (angle cLow cKR) 50) (ssadd (entlast) ss)
(mk-arc cKL 8.0 (angle cLow cKL) (* 1.5 pi) 50) (ssadd (entlast) ss)
(mk-arc cLow 25.0 (angle cLow cKR) (angle cLow pIntR) 50) (ssadd (entlast) ss)
(mk-arc cLow 25.0 (angle cLow pIntL) (angle cLow cKL) 50) (ssadd (entlast) ss)
(mk-arc cMid5 17.0 (angle cMid5 pIntL) (angle cMid5 pIntR) 50) (ssadd (entlast) ss)
(command "_.-HATCH" "_P" "ANSI31" 1.0 0.0 "_S" ss "" "")
(entmod (subst '(370 . 15) (assoc 370 (entget (entlast))) (entget (entlast))))
(mk-line (pt5 0 -5) (pt5 0 147) 15)
(mk-line (pt5 -26 120) (pt5 26 120) 15)
(mk-line (pt5 -26 85) (pt5 26 85) 15)
(mk-line (pt5 -16 59) (pt5 16 59) 15)
(mk-line (pt5 -45 32) (pt5 45 32) 15)
(command "_.ZOOM" "_E")
(setvar "OSMODE" old-os)
(setvar "MEASUREMENT" old-meas)
(princ)
)
(c:DrawParts)