(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)