Описание лабораторной работы №5

advertisement
ЛАБОРАТОРНАЯ РАБОТА № 5
Разработка программы на языке AutoLisp
(Продолжительность работы 4 часа)
В процессе работы необходимо получить навыки работы с интерпретатором
Autolisp и разработать программу для автоматизированного вычерчивания
линий
электрической связи. Программа должна обеспечивать создание линий связи между
блоками условных графических обозначений (УГО) элементов электрических схем,
используя объектную привязку типа "point", и создание линий связи между произвольными
точками схемы.
Программа должна автоматически, в соответствии с ЕСКД, вычерчивать
примитивы "donut" в точках объединяющих более 2-х линий электрической связи.
С этой целью:
1) открыть новый .dwg файл под именем соответствующим инициалам студента +
цифра 5 (номер лабораторной работы).
2) используя команды LIMITS, ZOOM, SNAP, ORTO настроить среду для работы.
3) с помощью команд INSERT вставить в чертеж два блока УГО из числа
подготовленных в лабораторной работе № 4.
4) с помощью команды LINE нарисовать два пересекающихся отрезка.
5) в командной строке AutoCAD набрать нижеприведенную команду Autolisp и
проанализировать ее действие
(setq ss (ssget))
- на запрос выбора указать мышью последовательно на вставленные в чертеж блоки и
нарисованные отрезки.
В командной строке Автокада ввести следующие строки, анализируя результаты
вывода в текстовое окно (переключается клавишей F2):
(setq count (sslength ss))
(setq entname (ssname ss 1))
(setq lst (entget entname))
(setq lst0 (assoc 0 lst))
(setq str (cdr lst0))
(setq pt (assoc 10 lst))
(setq xp (cadr pt))
(setq yp (caddr pt))
(setq xyp (list xp yp))
(osnap (getpoint) "ENDPOINT")
После ввода указать на один из отрезков.
(osnap (getpoint) "NEA")
Результаты работы, зафиксированные в текстовом окне AutoCAD (открывается
клавишей F2), скопировать в WORD и, после удаления лишних данных, распечатать на
принтере.
6) с помощью текстового редактора NOTEPAD или Far создать файл WIRE.LSP на
основе прилагаемого текста программы.
7) загрузить подготовленный файл командой (load "wire") и проверить правильность
функционирования программы при
соединении блоков
и
при
вычерчивании
произвольных линий электрической связи.
8) при обнаружении ошибок в программе, устранить
отлаженную программу для отчета по лабораторной работе.
их
и распечатать
(defun pointsel(p)
(setq pt (osnap p "_nea")
lst (if pt (nentselp pt) nil))
(if lst
(setq ent (car lst)
p (cadr lst)
lst (entget ent)
obj (cdr (assoc 0 lst)))
(setq obj nil))
(cond
((= obj "INSERT")
(setq p (osnap p "_node")))
((= obj "LINE")
(setq p (osnap p "_nea"))
(command "_BREAK" p p)))
(setq p p)
)
(defun donutset(p)
(setq ul (mapcar '- p '(2 2))
br (mapcar '+ p '(2 2))
ss (ssget "_W" ul br))
(if (= ss nil)
(setq ss (ssget "_C" ul br)))
(if (and ss (> (sslength ss) 2))
(command "_DONUT" 0 1 p ""))
)
(while t
(command "_SNAP" 5)
(setq p1 (getpoint "First point")
p1 (pointsel p1)
p2 (getpoint "Second point")
p2 (pointsel p2))
(command "_LINE" p1 p2 "")
(donutset p1)
(donutset p2)
)
9) оформить вызов программы в виде кнопки на панели "Рисование"
Рекомендуемая литература:
1. Кречко Ю.А., Полищук В.В. Автокад 13: новые возможности: В 2-х ч. - М.:
ДИАЛОГ - МИФИ, 1996. - 288+288 с.
Лектор потока
к.т.н. доцент
ГУСЕВ Ю.П.
Download