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


(defun c:BRACKET ( / old_osmode i n t_val t_inv px py )
  ;; Сохраняем текущие настройки привязки и отключаем их на время отрисовки
  (setq old_osmode (getvar "OSMODE"))
  (setvar "OSMODE" 0)

  ;; 1. Основной профиль кронштейна (сразу со скруглениями)
  (command "_PLINE"
    '(0 0)
    '(12 0)
    '(12 63)
    "_A" "_CE" '(22 63) '(22 73)   ;; Внутреннее скругление R10
    "_L" '(113 73)
    "_A" "_CE" '(113 85) '(125 85) ;; Внешнее скругление R12
    "_L" '(0 85)
    '(0 68)
    "_A" "_CE" '(3 68) '(3 65)     ;; Скругление R3 в вырезе
    "_L" '(3 35)
    '(0 35)                        ;; Нижний угол выреза (оставлен прямым для надежности контура)
    "_C"
  )

  ;; 2. Бобышка (цилиндрическая часть сверху)
  ;; Внешний контур (D=54, высота 22)
  (command "_LINE" '(78 85) '(78 107) '(132 107) '(132 85) "")
  (command "_LINE" '(78 107) '(132 107) "") 
  
  ;; Расточка (D=36, глубина 3)
  (command "_LINE" '(87 107) '(87 104) '(123 104) '(123 107) "")
  
  ;; Центральное отверстие (D=25, глубина 32 - до Y=75)
  (command "_LINE" '(92.5 104) '(92.5 75) '(117.5 75) '(117.5 104) "")
  
  ;; Конус от сверла (стандартный угол)
  (command "_LINE" '(92.5 75) '(105 68) '(117.5 75) "")
  
  ;; Осевая линия бобышки
  (command "_LINE" '(105 60) '(105 115) "")

  ;; 3. Парабола (ребро жесткости)
  ;; Строим через полилинию, вычисляя точки по квадратичной кривой Безье
  (setq n 20 i 0)
  (command "_PLINE")
  (while (<= i n)
    (setq t_val (/ (float i) n))
    (setq t_inv (- 1.0 t_val))
    ;; P0=(12,12), P1=(12,73), P2=(105,73)
    (setq px (+ (* t_inv t_inv 12.0) (* 2.0 t_inv t_val 12.0) (* t_val t_val 105.0)))
    (setq py (+ (* t_inv t_inv 12.0) (* 2.0 t_inv t_val 73.0) (* t_val t_val 73.0)))
    (command (list px py))
    (setq i (1+ i))
  )
  (command "")

  ;; Линия, обозначающая начало ребра (Y=12)
  (command "_LINE" '(0 12) '(12 12) "")

  ;; Восстанавливаем привязки
  (setvar "OSMODE" old_osmode)
  
  (princ "\nГотово! Контур вычерчен.")
  (princ)
)

;; Автоматический запуск при вставке
(c:BRACKET)
(princ "\nКоманда BRACKET загружена и выполнена.")
(princ)