<<
Назад
Пример построения параметрической детали
Напишем программу параметрического проектирования детали, изображенной
на рис. 1
Рис.1. Задание
Для начала нарисуем параметрический эскиз детали. Указываются
размеры детали, которые являются входными параметрами к программе, а также
точки, которые будут рассчитываться при программировании. Эскиз должен
использоваться на этапе программирования как пособие для верного понимания
детали и как руководство к расчету точек, необходимых для отображения
детали (рис.2).
Рис. 2. Параметрический эскиз детали.
Пришем программу (необходимо отметить, что программа без проверки данных
на допустимость/совместимость, которая обеспечила бы стабильность работы
программы):
;******************************************
; Блок ввода данных
;******************************************
;основная функция:
(defun Try_param ( / p1 d1 d2 d3 s h )
; инициализация всех данных для рисования
(initget 1)
(setq p1 (Getpoint "Укажите базовую точку детали :"))
(initget 6)
(setq d1 (Getreal "\nВведите d1 <10.0>:"))
(if (not d1) (setq d1 10.0))
(initget 6)
(setq d2 (Getreal "Введите d2 <5.0>:"))
(if (not d2) (setq d2 5.0))
(initget 6)
(setq d3 (Getreal "Введите d3 <15.0>:"))
(if (not d3) (setq d3 15.0))
(initget 6)
(setq s (Getreal "Введите s <6.0>:"))
(if (not s) (setq s 10.0))
(initget 6)
(setq h (Getreal "Введите h <12.0>:"))
(if (not h) (setq h 12.0))
; рисование детали - запуск параметрического чертежа
(DrawDetail p1 d1 d2 d3 s h)
)
(prompt "Try_param, ")
;******************************************
; Блок построения чертежа детали
;******************************************
;основная функция:
(defun DrawDetail (p1 d1 d2 d3 s h / p2 p3 p4 p5 p6 p7
x y det)
; обходим деталь по часовой стрелке
(setq
x (nth 0 p1)
y (nth 1 p1)
p2 (list x (+ y (/ d2 2.0)))
p3 (list x (+ y (/ d1 2.0)))
p4 (list (+ x s) (+ y (/ d1 2.0)))
p5 (list (+ x s) (+ y (/ d3 2.0)))
p6 (list (+ x h) (+ y (/ d3 2.0)))
p7 (list (+ x h) (+ y (/ d2 2.0)))
)
; отключение привязок
(command "_.osnap" "_none")
; рисование
(command "-layer" "s" "BaseLine" "")
(command "_.pline" p2 "w" "0" "" p3
p4 p5 p6 p7 "c")
; сохранение нарисованного примитива
(setq det (entlast))
; отражение нарисованной детали
(command "_.mirror" det "" p1 "@1,0" "N")
; рисование
(command "_.pline" p2 (list x (- y (/ d2 2.0))) "")
(command "_.pline" p7 (list (+ x h) (- y (/ d2 2.0)))
"")
; установка белого цвета
(command "-layer" "s" "Lines" "")
; ось
(command "_.line" (list (- x 5) y) (list (+ x h 5) y)"")
; штриховка
(command "-layer" "s" "Hath" "")
(command "_.bhatch" "p" "ansi31"
(/ (+ d3 h) 70.0) ; расчет относительного
масштаба штриховки
"0" ; угол наклона
(list (+ x (/ h 10.0)) (+ y (/ d2
2.0) (/ (- d1 d2) 4.0))) ; точки внутри шртихуемой области
(list (+ x (/ h 10.0)) (- y (/ d2
2.0) (/ (- d1 d2) 4.0))) ; точки внутри шртихуемой области
""
)
)
(prompt "DrawDetail ")
;******************************************
; Блок создания слоев
;******************************************
(defun create_layers()
(command "-linetype" "L" "DASHDOT" "" "")
; Слой с толщиной линий 0.5 мм - BaseLine, 0.2 мм - Lines, для штриховки
Hath
(command "-layer" "M" "BaseLine" "LW" "0.5" "" "C" "white"
"" "M" "Lines" "LW" "0.2" "" "C" "blue" "" "L" "DASHDOT" ""
"M" "Hath" "LW" "0.2" "" "C" "blue" "" "")
)
Сохраняем программу в файл с именем, например, param.lsp в
папку Support, где установлен AutoCAD.
Запускаем AutoCAD, и в коммандной строке набираем (load
"param").
В первый раз и только один! раз выполняем обязательную комманду в коммандной
строке (create_layers).
Запускаем нужное количество раз функцию параметрического проектирования
детали (try_param) в коммандной строке AutoCAD
и отвечая на запросы строим деталь. Пример выполнения программы показан
на рис. 3.
Рис. 3. Результат выполнения программы.
Чтобы быть в курсе всех событий, получения
необходимой и интересной информации, подпишись на рассылку "Создание
САПР на базе продуктов Autodesk"
|