Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Создание САПР на базе продуктов Autodesk


Информационный Канал Subscribe.Ru


Информационная рассылка сайта CadDev.Narod.Ru

(с) 2004, Калугин Сергей Сергеевич

Сегодня в выпуске

Обновление сайта CadDev

Невероятная информация! Море новой и полезной информации в зазделе AutoLISP!!!

  • Справочник по командам AutoLISP
  • Параметризация
  • Работа с размерами
  • Работа с файлами
  • Подключение к базам данных MS Access и др.

 

Пример построения параметрической детали

Напишем программу параметрического проектирования детали, изображенной на рис. 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. Результат выполнения программы.


http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное