Загрузка данных


(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)