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


(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 до 2 PI)
(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: Функции для отрисовки геометрии...
;; Создание дуги с весом линии
(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)))
)
; STREAMING_CHUNK: Математический расчет точек касания...
;; Все углы рассчитаны для ИДЕАЛЬНОГО сопряжения дуг (без зазоров)
(setq a_top_R (atan 38.92300091 43.0))
(setq a_top_L (- pi a_top_R))
(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)          ;; Вертикальная шейка
(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
(make-arc 21.0 -65.61916854 10.0 a_brin_start a_brin_end 50);; Внутренняя дуга снизу R10
;; Низ по центру
(make-arc 0.0 -75.0 13.0 a_bcf_start a_bcf_end 50)          ;; Центральный нижний фланец R13
;; Левая сторона (зеркально)
(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)
;; Окружность центров отверстий Ф48 (тонкая)
(make-circle 0.0 0.0 24.0 0)
;; 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 -105)
(make-axis -65 0 65 0)
(make-axis -65 -75 65 -75)
;; Оси для верхних отверстий
(make-axis -43 15 -43 -15)
(make-axis 43 15 43 -15)
;; Оси для нижних отверстий
(make-axis -42 -60 -42 -90)
(make-axis 42 -60 42 -90)
;; Осевые для 7 круговых отверстий
(setq i 0)
(while (< i 7)
(setq ang (+ (* pi 0.5) (* i (/ (* 2.0 pi) 7.0))))
(make-axis 0 0 (* 33.0 (cos ang)) (* 33.0 (sin ang)))
(setq i (1+ i))
)
; STREAMING_CHUNK: Финализация...
(setvar "OSMODE" osmode_old)
;; Центрируем вид на детали
(command "_.zoom" "_E")
(princ "\n*** Идеально точная 'Крышка' по ГОСТ построена! ***")
(princ)
)