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


(defun c:PRAC3_VAR12 ( / old_osnap dx dy i cur_x cur_y)
  ;; Отключаем привязки, чтобы линии не цеплялись друг за друга
  (setq old_osnap (getvar "OSMODE"))
  (setvar "OSMODE" 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 80) dy) "")

  ;; Прямоугольники построения (увеличены в 2 раза для наглядности, K=50x100)
  (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 "_.SPLINE" 
    (list dx dy) (list (+ dx 2) (+ dy 20)) (list (+ dx 8) (+ dy 40)) 
    (list (+ dx 18) (+ dy 60)) (list (+ dx 32) (+ dy 80)) (list (+ dx 50) (+ dy 100)) 
    "" "" ""
  )
  (command "_.SPLINE" 
    (list dx dy) (list (+ dx 2) (- dy 20)) (list (+ dx 8) (- dy 40)) 
    (list (+ dx 18) (- dy 60)) (list (+ dx 32) (- dy 80)) (list (+ dx 50) (- dy 100)) 
    "" "" ""
  )
  (command "_.COLOR" "_BYLAYER")


  ;; =========================================================
  ;; ЗАДАНИЕ 1: Кронштейн
  ;; =========================================================
  (setq dx 120 dy -50) ; Смещаем чертеж кронштейна правее

  ;; Контур левой стойки и горизонтальной базы
  (command "_.PLINE"
    (list dx dy)                  ; Левый нижний угол (0,0)
    (list dx (+ dy 85))           ; Вверх
    (list (+ dx 12) (+ dy 85))    ; Вправо (толщина 12)
    (list (+ dx 12) (+ dy 55))    ; Вниз до выреза
    (list (+ dx 9) (+ dy 55))     ; Глубина выреза 3
    (list (+ dx 9) (+ dy 35))     ; Длина выреза 20
    (list (+ dx 12) (+ dy 35))    ; Выход из выреза
    (list (+ dx 12) (+ dy 12))    ; Вниз до внутренней площадки
    (list (+ dx 145) (+ dy 12))   ; Вправо по площадке до начала скругления
    "_A" "_R" "12" (list (+ dx 157) dy) ; Скругление R12
    "_L" (list dx dy)             ; Замыкание контура
    "_C"
  )

  ;; Внешний контур цилиндрической бобышки (Ø54)
  (command "_.LINE" (list (+ dx 98) (+ dy 12)) (list (+ dx 98) (+ dy 44)) "") 
  (command "_.LINE" (list (+ dx 98) (+ dy 44)) (list (+ dx 152) (+ dy 44)) "")
  (command "_.LINE" (list (+ dx 152) (+ dy 44)) (list (+ dx 152) (+ dy 12)) "")
  (command "_.LINE" (list (+ dx 125) (+ dy -5)) (list (+ dx 125) (+ dy 55)) "") ; Осевая линия

  ;; Ступенчатое отверстие (Правая половина - Разрез)
  (command "_.LINE" (list (+ dx 125) (+ dy 44)) (list (+ dx 143) (+ dy 44)) "") ; Ø36
  (command "_.LINE" (list (+ dx 143) (+ dy 44)) (list (+ dx 143) (+ dy 34)) "")
  (command "_.LINE" (list (+ dx 143) (+ dy 34)) (list (+ dx 137) (+ dy 34)) "") ; Ø24
  (command "_.LINE" (list (+ dx 137) (+ dy 34)) (list (+ dx 137) (+ dy 22)) "")
  (command "_.LINE" (list (+ dx 137) (+ dy 22)) (list (+ dx 125) (+ dy 18)) "") ; Конус сверла
  (command "_.LINE" (list (+ dx 125) (+ dy 18)) (list (+ dx 125) (+ dy 44)) "") ; Замыкание разреза

  ;; Ступенчатое отверстие (Левая половина - Невидимый контур)
  (command "_.LINE" (list (+ dx 107) (+ dy 44)) (list (+ dx 107) (+ dy 34)) "")
  (command "_.LINE" (list (+ dx 107) (+ dy 34)) (list (+ dx 113) (+ dy 34)) "")
  (command "_.LINE" (list (+ dx 113) (+ dy 34)) (list (+ dx 113) (+ dy 22)) "")
  (command "_.LINE" (list (+ dx 113) (+ dy 22)) (list (+ dx 125) (+ dy 18)) "")

  ;; Параболическое ребро жесткости (Высчитано математически по сплайну)
  (command "_.SPLINE" 
    (list (+ dx 12) (+ dy 35)) 
    (list (+ dx 40) (+ dy 25)) 
    (list (+ dx 68.5) (+ dy 17.7)) 
    (list (+ dx 96) (+ dy 13.5)) 
    (list (+ dx 125) (+ dy 12)) 
    "" "" ""
  )

  ;; Возвращаем настройки
  (setvar "OSMODE" old_osnap)
  (command "_.ZOOM" "_E")
  (princ "\nПрактическая работа №3 (Вариант 12) успешно построена! Вызови команду PRAC3_VAR12.")
  (princ)
)
(c:PRAC3_VAR12)