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



, а внутреннюю - командой pline:


(defun ramka()

(command '‘Iine” pt1 pt2 pt3 pt4 “с”)

(command “pline” pt5 “w” “0.4” “” pt6 pt7 pt8 “с”)

)


Теперь достаточно добавить в исходную программу функцию ramka, и при вызове команды A1 произойдет автоматическая обрисовка рамки на чертеже.

Объем программы может быть уменьшен, если рамки выполнить посредством команды rectangle, а изменение ширины внутренней рамки осуществить командой pedit. В этом случае требуется ввод координат диагонально противоположных точек прямоугольника, а сама программа выглядит следующим образом:


(defun C:A1 ()

(setq pt1 (list -20 -5))

(setq pt2 (list 821 589))

(setq pt3 (list 0 0))

(setq pt4 (list 816 584))

(ramka)

)


А функция (ramka) предстанет в форме:


(defun ramka ()

(command "rectangle" pt1 pt2)

(command "rectangle" pt3 pt4)

(setq e1 (entlast))

(command "pedit" e1 "w" "0.4" "")

)


3.3.2. Создание слоев

Процедура создания слоев может быть осуществлена автоматически при загрузке формата. В функции sloy, описанной далее, устанавливаются слои CONTUR, CENTER, DIM и HIDDEN, которым присваиваются соответственно цвета: белый, красный, зеленый и желтый, а в слои CENTER и HlDDEN загружаются соответственно типы линий AcadISO04w100 и AcadISO02w100. Поскольку любая функция может записываться в несколько строк, воспользуемся этим для построения программы.


(defun sloy ()

(command “linetype” “load” “AcadISO04w100” “acadiso.lin”

“load” “AcadISO02w100” “” “”)

(command “layer” “new” “contur”

“new” “center”

“new” “dim”

“new” “hidden”

“Itype” “AcadISO04w100” “center”

“Itype” “AcadlSO02w100” “hidden”

“color” “red” “center”

“color” “green” “dim”

“color” “yellow” “hidden”

“set” “contur” ""

) ; конец command

) ; конец defun


Последняя команда устанавливает в качестве текущего слой CONTUR.


3.3.3. Организация поля изображения

Поле изображения чертежа можно ограничить внешней рамкой. Но это неудобно, если в процессе работы над чертежом необходимо осуществить к внешней рамке объектную привязку. Поэтому многие пользователи предпочитают, чтобы размеры поля изображения превосходили размеры рамки. Организуем границы поля изображения таким образом, чтобы между рамкой и границами экрана оставалось не менее 10 мм. Для этого укажем координаты левого нижнего p1 и правого верхнего рЗ углов поля.


(defun pole ()

(setq p1 (polar pt1 (+ pi (/ pi 4)) 15))

(setq рЗ (polar pt3 (/ pi 4) 15))

(command “limits” p1 рЗ)

(command “zoom” “all”)

)


Дальнейших пояснений функция не требует.


3.3.4. Работа с системными переменными