Загрузка данных
(defun c:PRAC3_PRO ( / old_osnap old_dyn dx dy i cur_x cur_y x y t_val)
;; Отключаем привязки и динамический ввод для абсолютной защиты от сбоев
(setq old_osnap (getvar "OSMODE"))
(setq old_dyn (getvar "DYNMODE"))
(setvar "OSMODE" 0)
(setvar "DYNMODE" 0)
;; =========================================================
;; ЗАДАНИЕ 2: Лекальная кривая (Слева)
;; =========================================================
(setq dx 0 dy 0)
;; Осевые линии и прямоугольники построения
(command "_.LINE" (list dx (- dy 110)) (list dx (+ dy 110)) "")
(command "_.LINE" (list (- dx 10) dy) (list (+ dx 60) dy) "")
(command "_.LINE" (list dx dy) (list dx (+ dy 100)) (list (+ dx 50) (+ dy 100)) (list (+ dx 50) dy) "")
(command "_.LINE" (list dx dy) (list dx (- dy 100)) (list (+ dx 50) (- dy 100)) (list (+ dx 50) dy) "")
;; Лучи касательных
(setq i 1)
(while (<= i 5)
(setq cur_x (* i 10.0))
(setq cur_y (* i 20.0))
(command "_.LINE" (list dx dy) (list (+ dx cur_x) (+ dy 100)) "")
(command "_.LINE" (list dx (+ dy cur_y)) (list (+ dx 50) (+ dy cur_y)) "")
(command "_.LINE" (list dx dy) (list (+ dx cur_x) (- dy 100)) "")
(command "_.LINE" (list dx (- dy cur_y)) (list (+ dx 50) (- dy cur_y)) "")
(setq i (1+ i))
)
;; Математическое построение верхней параболы (красная)
(command "_.COLOR" "1")
(command "_.PLINE")
(setq x 0.0)
(while (<= x 50.0)
(setq y (* 100.0 (/ (* x x) 2500.0)))
(command (list (+ dx x) (+ dy y)))
(setq x (+ x 1.0)) ; Шаг 1 мм для идеальной гладкости
)
(command "")
;; Математическое построение нижней параболы (красная)
(command "_.PLINE")
(setq x 0.0)
(while (<= x 50.0)
(setq y (* -100.0 (/ (* x x) 2500.0)))
(command (list (+ dx x) (+ dy y)))
(setq x (+ x 1.0))
)
(command "")
(command "_.COLOR" "_BYLAYER")
;; =========================================================
;; ЗАДАНИЕ 1: Кронштейн (Справа)
;; =========================================================
(setq dx 120 dy -50) ; Смещаем второй чертеж правее
;; 1. Левая стойка и вырезы
(command "_.LINE" (list dx dy) (list dx (+ dy 85)) (list (+ dx 12) (+ dy 85)) (list (+ dx 12) (+ dy 55)) (list (+ dx 9) (+ dy 55)) (list (+ dx 9) (+ dy 35)) (list (+ dx 12) (+ dy 35)) (list (+ dx 12) (+ dy 22)) "")
;; 2. Внутреннее скругление R10 (переход от стойки к площадке)
(command "_.ARC" "_C" (list (+ dx 22) (+ dy 22)) (list (+ dx 12) (+ dy 22)) (list (+ dx 22) (+ dy 12)))
;; 3. Горизонтальная площадка
(command "_.LINE" (list (+ dx 22) (+ dy 12)) (list (+ dx 118) (+ dy 12)) "")
(command "_.LINE" (list dx dy) (list (+ dx 160) dy) "")
;; 4. Внешнее скругление R12 (правый нижний угол)
(command "_.ARC" "_C" (list (+ dx 160) (+ dy 12)) (list (+ dx 160) dy) (list (+ dx 172) (+ dy 12)))
;; 5. Цилиндрическая бобышка Ø54
(command "_.LINE" (list (+ dx 118) (+ dy 12)) (list (+ dx 118) (+ dy 44)) (list (+ dx 172) (+ dy 44)) (list (+ dx 172) (+ dy 12)) "")
(command "_.LINE" (list (+ dx 145) (+ dy -5)) (list (+ dx 145) (+ dy 55)) "") ; Осевая линия
;; 6. Отверстие (Правая часть - Разрез)
(command "_.LINE" (list (+ dx 145) (+ dy 44)) (list (+ dx 163) (+ dy 44)) (list (+ dx 163) (+ dy 22)) (list (+ dx 157) (+ dy 22)) (list (+ dx 157) (+ dy 12)) (list (+ dx 145) (+ dy 8)) "")
(command "_.LINE" (list (+ dx 145) (+ dy 8)) (list (+ dx 145) (+ dy 44)) "")
;; 7. Отверстие (Левая часть - Невидимый контур)
(command "_.LINE" (list (+ dx 127) (+ dy 44)) (list (+ dx 127) (+ dy 22)) (list (+ dx 133) (+ dy 22)) (list (+ dx 133) (+ dy 12)) (list (+ dx 145) (+ dy 8)) "")
;; 8. Параболическое ребро жесткости (генерация точками)
(command "_.PLINE")
(setq x 12.0)
(while (<= x 118.0)
(setq t_val (/ (- 118.0 x) 106.0))
(setq y (+ 12.0 (* 23.0 t_val t_val)))
(command (list (+ dx x) (+ dy y)))
(setq x (+ x 1.0))
)
(command (list (+ dx 118) (+ dy 12)))
(command "")
;; Возвращаем настройки автокада
(setvar "OSMODE" old_osnap)
(setvar "DYNMODE" old_dyn)
(command "_.ZOOM" "_E")
(princ "\nЗадание построено безопасным методом! Вызови команду PRAC3_PRO.")
(princ)
)
(c:PRAC3_PRO)