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


(defun c:KRYSHKA ( / norm-ang make-arc make-line make-circle make-axis
pi a_top_R a_top_L a_trf_start a_trf_end a_trfil_start a_trfil_end
a_brfil_start a_brfil_end a_brf_start a_brf_end a_brin_start a_brin_end
a_bcf_start a_bcf_end a_blin_start a_blin_end a_blf_start a_blf_end
a_blfil_start a_blfil_end a_tlfil_start a_tlfil_end a_tlf_start a_tlf_end
i ang osmode_old)
; STREAMING_CHUNK: Подготовка среды и переменных...
(setq osmode_old (getvar "OSMODE"))
(setvar "OSMODE" 0)
(setvar "LWDISPLAY" 1) ; Включаем видимость толщины линий
(setq pi 3.141592653589793)
;; Нормализация угла (0..2PI) для корректной работы дуг
(defun norm-ang (a)
(while (< a 0.0) (setq a (+ a (* 2.0 pi))))
(while (>= a (* 2.0 pi)) (setq a (- a (* 2.0 pi))))
a
)
; STREAMING_CHUNK: Функции отрисовки (С весами линий по ГОСТ)...
;; Создание дуги с весом линии (50 = 0.50 мм толстая, 0 = тонкая)
(defun make-arc (cx cy r a1 a2 lw)
(entmakex (list '(0 . "ARC") (list 10 cx cy 0.0) (cons 40 r)
(cons 50 a1) (cons 51 a2) (cons 370 lw)))
)
(defun make-line (x1 y1 x2 y2 lw)
(entmakex (list '(0 . "LINE") (list 10 x1 y1 0.0) (list 11 x2 y2 0.0) (cons 370 lw)))
)
(defun make-circle (cx cy r lw)
(entmakex (list '(0 . "CIRCLE") (list 10 cx cy 0.0) (cons 40 r) (cons 370 lw)))
)
;; Создание осевых линий (Красные, тонкие)
(defun make-axis (x1 y1 x2 y2)
(entmakex (list '(0 . "LINE") (list 10 x1 y1 0.0) (list 11 x2 y2 0.0) '(62 . 1) '(370 . 0)))
)
(defun make-axis-circle (cx cy r)
(entmakex (list '(0 . "CIRCLE") (list 10 cx cy 0.0) (cons 40 r) '(62 . 1) '(370 . 0)))
)
; STREAMING_CHUNK: 100% Математический расчет углов касания (без зазоров)...
;; Центр верхнего R70 находится в (0, -38.923...), чтобы идеально касаться ушек R12
(setq a_top_R (atan 38.92300091 43.0))
(setq a_top_L (atan 38.92300091 -43.0))
(setq a_trf_start (norm-ang (atan -19.89974874 -2.0)))
(setq a_trf_end a_top_R)
(setq a_trfil_start (norm-ang (atan 19.89974874 2.0)))
(setq a_trfil_end pi)
(setq a_brfil_start pi)
(setq a_brfil_end (norm-ang (atan -22.9782506 -1.0)))
(setq a_brf_start (norm-ang (atan 9.3808315 -21.0)))
(setq a_brf_end (norm-ang (atan 22.9782506 1.0)))
(setq a_brin_start (norm-ang (atan -9.3808315 -21.0)))
(setq a_brin_end (norm-ang (atan -9.3808315 21.0)))
(setq a_bcf_start (norm-ang (atan 9.3808315 -21.0)))
(setq a_bcf_end (norm-ang (atan 9.3808315 21.0)))
(setq a_blin_start (norm-ang (atan -9.3808315 -21.0)))
(setq a_blin_end (norm-ang (atan -9.3808315 21.0)))
(setq a_blf_start (norm-ang (atan 22.9782506 -1.0)))
(setq a_blf_end (norm-ang (atan 9.3808315 21.0)))
(setq a_blfil_start (norm-ang (atan -22.9782506 1.0)))
(setq a_blfil_end 0.0)
(setq a_tlfil_start 0.0)
(setq a_tlfil_end (norm-ang (atan 19.89974874 -2.0)))
(setq a_tlf_start a_top_L)
(setq a_tlf_end (norm-ang (atan -19.89974874 2.0)))
; STREAMING_CHUNK: Отрисовка НАРУЖНОГО ЖИРНОГО контура (толщина 0.50 мм)...
;; Верхняя большая дуга R70
(make-arc 0.0 -38.92300091 70.0 a_top_R a_top_L 50)
;; Правая сторона (Ушко, галтель, шея, галтель, нижнее ушко)
(make-arc 43.0 0.0 12.0 a_trf_start a_trf_end 50)           ;; Фланец правый верхний R12
(make-arc 41.0 -19.89974874 8.0 a_trfil_start a_trfil_end 50) ;; Галтель правая верхняя R8
(make-line 33.0 -19.89974874 33.0 -52.02173403 50)          ;; Вертикальная шейка (строго X=33)
(make-arc 43.0 -52.02173403 10.0 a_brfil_start a_brfil_end 50);; Галтель правая нижняя R10
(make-arc 42.0 -75.0 13.0 a_brf_start a_brf_end 50)         ;; Фланец правый нижний R13
;; Нижние волны (внутренний вырез R10, центральный фланец R13, внутренний вырез R10)
(make-arc 21.0 -65.61916854 10.0 a_brin_start a_brin_end 50)
(make-arc 0.0 -75.0 13.0 a_bcf_start a_bcf_end 50)
(make-arc -21.0 -65.61916854 10.0 a_blin_start a_blin_end 50)
;; Левая сторона (зеркально)
(make-arc -42.0 -75.0 13.0 a_blf_start a_blf_end 50)
(make-arc -43.0 -52.02173403 10.0 a_blfil_start a_blfil_end 50)
(make-line -33.0 -19.89974874 -33.0 -52.02173403 50)
(make-arc -41.0 -19.89974874 8.0 a_tlfil_start a_tlfil_end 50)
(make-arc -43.0 0.0 12.0 a_tlf_start a_tlf_end 50)
; STREAMING_CHUNK: Отрисовка ВНУТРЕННИХ ЖИРНЫХ элементов...
;; Центральная бобышка Ф66
(make-circle 0.0 0.0 33.0 50)
;; 7 отверстий по кругу Ф10
(setq i 0)
(while (< i 7)
(setq ang (+ (* pi 0.5) (* i (/ (* 2.0 pi) 7.0))))
(make-circle (* 24.0 (cos ang)) (* 24.0 (sin ang)) 5.0 50)
(setq i (1+ i))
)
;; 2 верхних крепежных отверстия Ф12
(make-circle -43.0 0.0 6.0 50)
(make-circle 43.0 0.0 6.0 50)
;; 3 нижних крепежных отверстия Ф18
(make-circle -42.0 -75.0 9.0 50)
(make-circle 0.0 -75.0 9.0 50)
(make-circle 42.0 -75.0 9.0 50)
; STREAMING_CHUNK: Детальная отрисовка ОСЕВЫХ линий (Точь-в-точь как на фото)...
;; Главные кресты
(make-axis 0 45 0 -95)    ;; Центральная вертикальная
(make-axis -65 0 65 0)    ;; Центральная горизонтальная
(make-axis -60 -75 60 -75) ;; Нижняя горизонтальная
;; Тонкая делительная окружность Ф48
(make-axis-circle 0.0 0.0 24.0)
;; Радиальные оси для 7 круговых отверстий
(setq i 0)
(while (< i 7)
(setq ang (+ (* pi 0.5) (* i (/ (* 2.0 pi) 7.0))))
(make-axis (* 16.0 (cos ang)) (* 16.0 (sin ang)) (* 32.0 (cos ang)) (* 32.0 (sin ang)))
(setq i (1+ i))
)
;; Оси для верхних ушек
(make-axis -43 12 -43 -12)
(make-axis 43 12 43 -12)
;; Оси для нижних ушек
(make-axis -42 -63 -42 -87)
(make-axis 42 -63 42 -87)
;; Крестик центра дуги R70 (Маленькая деталь с вашего фото)
(make-axis -3 -38.92300091 3 -38.92300091)
(make-axis 0 -35.92300091 0 -41.92300091)
; STREAMING_CHUNK: Финализация...
(setvar "OSMODE" osmode_old)
(command "_.zoom" "_E")
(princ "\n*** Идеальная копия 'Крышки' построена! ***")
(princ)
)