(defun c:DrawBracket ( / old_osmode x dx y hatchPoly )
;; Сохраняем старые настройки привязок и отключаем их для чистого черчения
(setq old_osmode (getvar "OSMODE"))
(setvar "CMDECHO" 0)
(setvar "OSMODE" 0)
(princ "\nНачинаю построение кронштейна...")
;; 1. Строим основной внешний контур L-образного профиля
(command "_.PLINE"
'(12 0) ;; Нижний правый угол левой ножки
'(0 0) ;; Нижний левый угол
'(0 35) ;; Вверх до ступеньки
'(3 35) ;; Вправо на ступеньку 3мм
'(3 75) ;; Вверх до начала скругления (105 - 30 = 75)
"_A" "_D" '(0 1) '(0 78) ;; Дуга R3 (внутреннее скругление)
"_L"
'(0 105) ;; Вверх до верхней грани
'(133 105) ;; Вправо по верхней грани (145 - 12 радиус = 133)
"_A" "_D" '(1 0) '(145 93) ;; Дуга R12 (скругление правого носика)
"_L"
'(22 93) ;; Влево по нижней грани верхней полки до начала скругления
"_A" "_D" '(-1 0) '(12 83) ;; Дуга R10 (внутренний угол кронштейна)
"_L"
'(12 0) ;; Вниз до начальной точки
"_C" ;; Замкнуть контур
)
;; 2. Строим цилиндрическую бобышку сверху (Правая часть - вид)
(command "_.LINE" '(125 145) '(152 145) "") ;; Верхняя грань (D=54 -> R=27. 125+27=152)
(command "_.LINE" '(152 145) '(152 105) "") ;; Правая стенка
(command "_.LINE" '(152 105) '(125 105) "") ;; Низ правой части
;; 3. Строим левую часть бобышки (Внутренний разрез)
;; Внешняя граница разреза
(command "_.PLINE"
'(98 105) ;; Левый нижний край бобышки (125-27=98)
'(98 145) ;; Левый верхний край
'(125 145) ;; К центру
'(125 105) ;; Вниз по центру
"_C"
)
;; Ступенчатое отверстие внутри (D=34 и D=25)
(command "_.PLINE"
'(108 145) ;; Отверстие Ф34 (R=17, 125-17=108)
'(108 123) ;; Глубина 22 (145-22=123)
'(112.5 123) ;; Переход на Ф25 (R=12.5, 125-12.5=112.5)
'(112.5 113) ;; Глубина 32 (145-32=113)
'(125 105.8) ;; Конус сверла (примерный угол 120 град)
""
)
;; Осевая линия бобышки
(command "_.LINE" '(125 105.8) '(125 145) "")
;; 4. Штриховка разреза (ANSI31)
;; Создаем временный замкнутый контур для точной штриховки
(command "_.PLINE"
'(98 105) '(98 145) '(108 145) '(108 123)
'(112.5 123) '(112.5 113) '(125 105.8) '(125 105) "_C"
)
(setq hatchPoly (entlast))
;; Применяем стандартную косую штриховку
(command "_.-HATCH" "_P" "ANSI31" "2.0" "0" "_S" hatchPoly "" "")
;; Удаляем вспомогательный контур, чтобы не двоились линии
(command "_.ERASE" hatchPoly "")
;; 5. Построение ребра жесткости (Парабола)
;; Математическое уравнение параболы с вершиной в (145, 93) и проходящей через (12, 12)
(command "_.PLINE")
(setq x 12.0)
(while (<= x 145.0)
(setq dx (/ (- 145.0 x) 133.0))
(setq y (- 93.0 (* 81.0 (* dx dx)))) ; Y = 93 - 81 * ((145-X)/133)^2
(command (list x y))
(setq x (+ x 1.0)) ; Шаг 1 мм для идеальной плавности
)
(command '(145.0 93.0) "")
;; 6. Осевые линии (Центры)
(command "_.LINE" '(125 152) '(125 95) "") ;; Вертикальная ось бобышки
(command "_.LINE" '(90 145) '(160 145) "") ;; Горизонтальная линия верхнего габарита
;; Восстанавливаем привязки
(setvar "OSMODE" old_osmode)
(princ "\nЧертеж готов! Все размеры 1в1.")
(princ)
)
(princ "\nКоманда DrawBracket успешно загружена. Введите DrawBracket для запуска.")
(princ)