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


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