Введение в Автолисп | страница 12




(defun C:FUNCNAME ([ / переменные])

...... ; тело функции

).


Если локальные переменные отсутствуют, круглые скобки после имени функции обязательно сохраняются, т.е. формат функции в этом случае выглядит следующим образом:


(defun C:FUNCNAME ()

........

).


Работу в Автокаде над новым чертежом конструктор начинает с организации инструментария, в частности с создания нескольких необходимых слоев чертежам В прототипах чертежей acad.dwg (12-я), unnamed.dwg (13-я), drawing.dwg (14-я) и drawingN.dwg (15-я версия) заложен по умолчанию один нулевой слой с присущим ему белым цветом и сплошными линиями. Изначальная установка пределов изображения (limits) позволяет назначить границы экрана, но не исключает необходимости организации слоев. Заложенные в последних версиях готовые рамки с угловыми штампами, соответствующие международным и региональным стандартам, расположены в пространстве бумаги и не соответствуют стандартам отечественным. Разумеется, создание аналогичной графической базы, опирающейся на отечественные стандарты, не представляет сложностей, однако не лишним представляется и другой путь - программное описание необходимых установок.

Предлагаемая в качестве иллюстрации программа используется в практике выполнения графических работ как в учебных курсах компьютерной графики, так и в ряде специальных дисциплин. Цель программы заключается в выводе на экран стандартных рамок, соответствующих принятым в отечественной практике форматам A0...A4, и организации поля чертежа с заранее установленными характерными слоями. Программа рассматривается на примере формата A1.


3.3.1. Функция обрисовки рамки

В принципе, угловые точки рамки могут быть напрямую определены их координатами. Однако поступим иначе. Определим некоторую начальную точку рамки, а остальные привяжем к ней функцией polar. Установим начало координат в нижнем левом углу внутренней рамки, т.е. в углу поля изображения содержательной части чертежа, а вычерчивание начнем с нижнего левого угла внешней рамки, отстоящего от начала координат на 20 мм по горизонтали и 5 мм по вертикали.


(defun C:A1()

;;; Устанавливаем угловые точки внешней рамки,

(setq pt1 (list -20 -5)

(setq pt2 (polar pt1 0 840))

(setq pt3 (polar pt2 (/ pi 2) 594))

(setq pt4 (polar pt3 pi 840))

;;; Устанавливаем таковые для внутренней рамки.

(setq pt5 (list 0 0))

(setq pt6 (polar pt5 0 815))

(setq pt7 (polar pt6 (/ pi 2) 584))

(setq pt8 (polar pt7 pi 815))

)


После определения точек можно сразу ввести команду обрисовки рамки, но лучше для этого создать отдельную функцию, работающую аналогично процедуре в Паскале или подпрограмме- функции в Фортране. Целесообразность такого подхода будет ясна далее. Поскольку внешняя и внутренняя рамки отличаются шириной линии, учтём это в создаваемой функции, обрисовывая внешнюю рамку командой