После окончания всех операций, предусмотренных программой, восстановить системные переменные можно пользовательской функцией moder. Эта функция работает аналогично функции modes и дополнительных пояснений, вероятно, не требует. Следует лишь обратить внимание на то, что обрабатываемым является список MLST, уже существующий в программе. Программа выглядит следующим образом:
(defun MODER ()
(repeat (length MLST)
(setvar (caar MLST) (cadar MLST))
(setq MLST (cdr MLST))
)
)
Обе функции можно использовать без изменения при составлении любых программ на Автолиспе.
При сохранении и изменении конфигурации целесообразно обратить внимание на системную переменную OSMODE (Object Snap Mode - режим объектной привязки). Не исключены ситуации, когда объектная привязка главенствует над указанием точки и примитив строится не из указанной точки, а из точки, определенной автоматической объектной привязкой. Поэтому автоматическую привязку целесообразно отключить, установив переменную OSMODE в ноль, или изменить ее значение в нужную сторону. Значение этой переменной устанавливается в соответствии с таблицей 5.
Tаблица 6. Битовые числа опций объектной привязки
Битовое число | Значение опции | Битовое число | Значение опции |
---|---|---|---|
0 | Отсутствие привязки | 32 | Intersection |
1 | Endpoint | 64 | Insertion |
2 | Midpoint | 128 | Perpendicular |
4 | Centre | 256 | Tangent |
8 | Node (узел) | 512 | Nearest |
16 | Quadrant | 1024 | Quick |
2048 | Apparent Intersection | ||
В версию Автокад 2000 включены дополнительно две опции: | |||
4096 | Extension | 8192 | Parallel |
Ранее уже отмечалось, что на время работы программы целесообразно устанавливать в 0 системную переменную CMDECHO и устанавливать в 1 переменную BLIPMODE, если оператор при ручной работе использует маркеры.
6.7. Программное редактирование наборов
Чертеж, выведенный на бумагу, содержит объекты, изображаемые линиями различной ширины. До появления 15-й версии Автокада они обычно выполнялись на экране монитора линиями нулевой ширины, а требуемое значение ширины устанавливалось при настройке печатающего устройства. Автокад 2000 снял эту проблему, добавив новую системную переменную - LINEWEIGHT, управляющую шириной линии. Но и в более ранних версиях иногда удобно уже в чертеже задавать необходимую ширину линий, особенно если объекты расположены в одном слое. Автокад в этой ситуации позволяет использовать примитивы, обладающие шириной линии, например, полилинии, полосы, кольца. Однако часто бывает удобнее выполнить чертеж в линиях нулевой толщины, а впоследствии отредактировать нужные примитивы. Автокад предоставляет возможность осуществить это, применив команду Pedit, но подобную обработку, во-первых, воспринимают не все примитивы, во-вторых, она трудоемка и требует особой сосредоточенности в связи с необходимостью постоянно отслеживать информацию в поле сообщений.
Ниже приводится фрагмент программы, осуществляющей одновременное преобразование в примитивы, обладающие шириной, некоторого набора отмеченных примитивов, включающего линии, полилинии, дуги и окружности. Программа использовалась в версиях 11...14, может быть небесполезной и в версии AutoCAD 2000.
(defun MODES (a)
(setq MLST '())
(repeat (length a)
(setq MLST (append MLST (list (list (car a) (getvar (сar a))))))
(setq a (cdr a))
) ; Конец repeat
) ; Конец MODES
(defun MODER ()
(repeat (length MLST)
(setvar (caar MLST) (cadar MLST))
(setq MLST (cdr MLST))
)
)
(defun C:PLW (/ sset pl_w n type_e)
(modes ‘(“BLIPMODE” “CMDECHO”))