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


(defun c:ZADANIE12 ( / old_osnap old_dyn dx dy p i y_curr x_top t_val y_val offset)
  ;; Отключаем привязки и дин. ввод для 100% защиты от искажений
  (setq old_osnap (getvar "OSMODE"))
  (setq old_dyn (getvar "DYNMODE"))
  (setvar "OSMODE" 0)
  (setvar "DYNMODE" 0)

  ;; Вспомогательная функция для координат
  (defun p (x y) (list (+ dx x) (+ dy y)))

  ;; =========================================================
  ;; ЗАДАНИЕ 1: КРОНШТЕЙН (Справа)
  ;; =========================================================
  (setq dx 0 dy 0)

  ;; 1. Внешний и внутренний контур (Линии и математически точные дуги)
  (command "_.LINE" (p 0 0) (p 0 35) (p 3 35) (p 3 60) "")
  (command "_.ARC" "_C" (p 3 63) (p 0 63) (p 3 60)) ; Скругление выреза R3
  (command "_.LINE" (p 0 63) (p 0 105) (p 145 105) "")
  (command "_.ARC" "_C" (p 133 105) (p 133 93) (p 145 105)) ; Правое скругление базы R12
  (command "_.LINE" (p 133 93) (p 22 93) "")
  (command "_.ARC" "_C" (p 22 83) (p 22 93) (p 12 83)) ; Внутреннее скругление R10
  (command "_.LINE" (p 12 83) (p 12 12) "")
  (command "_.ARC" "_C" (p 0 12) (p 0 0) (p 12 12)) ; Нижнее скругление стойки R12

  ;; 2. Цилиндрическая бобышка (Левая видимая часть)
  (command "_.LINE" (p 98 105) (p 98 145) (p 125 145) (p 125 105) "")
  ;; Нависающий край бобышки справа от базы
  (command "_.LINE" (p 145 105) (p 152 105) "")

  ;; 3. Отверстие внутри бобышки (Левая половина - скрытый контур, синий цвет)
  (command "_.COLOR" "5")
  (command "_.LINE" (p 108 145) (p 108 123) (p 112.5 123) (p 112.5 113) (p 125 106) "")
  (command "_.COLOR" "_BYLAYER")

  ;; 4. Отверстие внутри бобышки (Правая половина - Разрез со штриховкой)
  (command "_.PLINE" (p 142 145) (p 142 123) (p 137.5 123) (p 137.5 113) (p 125 106) (p 125 105) (p 152 105) (p 152 145) "_C")
  (command "_.HATCH" "ANSI31" 1.5 0 "_L" "") ; Заливка металлом
  (command "_.LINE" (p 125 145) (p 142 145) "") ; Видимые задние стенки отверстия
  (command "_.LINE" (p 125 123) (p 142 123) "")
  (command "_.LINE" (p 125 113) (p 137.5 113) "")
  (command "_.LINE" (p 125 145) (p 125 106) "") ; Линия реза в центре

  ;; 5. Линии построения параболы (Серые, как карандаш)
  (command "_.COLOR" "8")
  (command "_.LINE" (p 12 12) (p 125 12) (p 125 93) "")
  (setq i 1)
  (while (<= i 4)
    (setq y_curr (+ 12 (* i (/ 81.0 5.0))))
    (setq x_top (+ 12 (* i (/ 113.0 5.0))))
    (command "_.LINE" (p 12 y_curr) (p 125 y_curr) "")
    (command "_.LINE" (p 12 12) (p x_top 93) "")
    (setq i (1+ i))
  )
  (command "_.LINE" (p 125 90) (p 125 155) "") ; Центральная ось бобышки

  ;; 6. Ребро жесткости (Сама Парабола - генерируется точками)
  (command "_.COLOR" "1") ; Красный для выделения
  (command "_.PLINE")
  (setq t_val 0.0)
  (while (<= t_val 1.0)
    (command (p (+ 12 (* 113.0 t_val t_val)) (+ 12 (* 81.0 t_val))))
    (setq t_val (+ t_val 0.02))
  )
  (command (p 125 93)) (command "")
  
  ;; Выноска "Парабола"
  (command "_.COLOR" "_BYLAYER")
  (command "_.LINE" (p 80 52) (p 110 30) (p 130 30) "")


  ;; =========================================================
  ;; ЗАДАНИЕ 2: ЛЕКАЛЬНАЯ КРИВАЯ (Слева)
  ;; =========================================================
  (setq dx -160 dy 12) ; Сдвигаем влево

  ;; 1. Оси и рамка (Серые)
  (command "_.COLOR" "8")
  (command "_.LINE" (p 0 -110) (p 0 110) "")
  (command "_.LINE" (p -10 0) (p 110 0) "")
  (command "_.LINE" (p 0 100) (p 100 100) (p 100 -100) (p 0 -100) "")

  ;; 2. Лучи построения метода касательных
  (setq i 1)
  (while (<= i 4)
    (setq offset (* i 20.0))
    (command "_.LINE" (p 0 offset) (p 100 offset) "")
    (command "_.LINE" (p 0 0) (p offset 100) "")
    (command "_.LINE" (p 0 (- offset)) (p 100 (- offset)) "")
    (command "_.LINE" (p 0 0) (p offset -100) "")
    (setq i (1+ i))
  )

  ;; 3. Сама лекальная кривая (Парабола)
  (command "_.COLOR" "1") ; Красная
  (command "_.PLINE")
  (setq y_val -100.0)
  (while (<= y_val 100.0)
    (command (p (/ (* y_val y_val) 100.0) y_val))
    (setq y_val (+ y_val 2.0))
  )
  (command (p 100 100)) (command "")

  ;; Восстановление настроек
  (command "_.COLOR" "_BYLAYER")
  (setvar "OSMODE" old_osnap)
  (setvar "DYNMODE" old_dyn)
  (command "_.ZOOM" "_E")
  
  (princ "\nИдеальная геометрия построена!")
  (princ)
)
(c:ZADANIE12)