Пользовательский интерфейс системы AutoCAD. Адаптация существующих меню, создание новых меню, изменение функций элементов, страница 19

 Листинг 4.13. Фрагмент файла «acad.mnl»

;;;    AutoLISP routines used by the AutoCAD Standard Menu.

;;;    This file is loaded automatically following the menu ACAD.

(princ "\nAutoCAD menu utilities ")

;;;=== Icon Menu Functions ===

;;;  View -> Layout -> Tiled Viewports...

(defun ai_tiledvp__chk (new) (setq m:err *error* *error* *merrmsg*)

(if (= (getvar "TILEMODE") 0)

(progn

(princ "\n** Command not allowed in a Layout **")

(princ)

)                 

(progn

(if new

(menucmd "I=ACAD.IMAGE_VPORTI")

(menucmd "I=IMAGE_VPORTI")

)

(menucmd "I=*")

)     

)        (setq *error* m:err m:err nil) 

(princ)

)

(defun ai__tiledvp (num ori / ai_tiles_g ai__tiles_cmde)        (setq m:err *еrrоr* *error* *merrmsg* ai__tiles_cmde (getvar "CMDECHO") ai_tiles_g (getvar "GRIDMODE") )

(ai__undo_push)

(setvar "CMDECHO" 0)

(setvar "GRIDMODE" 0)

(cond ((= num 1)

(command "_.VPORTS" "_SI")

(setvar "GRIDMODE" ai_tiles_g)

)

( (< num 4)                                

(command "_.VPORTS" "_SI") 

(command "_.VPORTS" num ori)

(setvar "GRIDMODE" ai_tiles_g)

) ( (= ori nil)

(command "_.VPORTS" "_SI")

(command "_.VPORTS" num)

:(setvar "GRIDMODE" ai_tiles_g)

)

((=ori "_L")

(command "_.VPORTS" "_SI")

(command "_.VPORTS" "2" "")

(setvar "CVPORT" (car (cadr (vports))))

(command "_.VPORTS" "2" "")

(command "_.VPORTS" "_J" "" (car (cadr (vports)))) (setvar "CVPORT" (car (cadr (vports)))) (command "_.VPORTS" "3" "__H") (setvar "GRIDMODE" ai_tiles__g) (setvar "CVPORT" (car (cadddr (vports)))) (setvar "GRIDMODE" ai_tiles_g) (setvar "CVPORT" (car (cadddr (vports)))) (setvar "GRIDMODE" ai_tiles_g) (setvar "CVPORT" (car (cadddr (vports)))) (setvar "GRIDMODE" ai_tiles__g)   ) 

(command "_.VPORTS" "_SI")

(command "__.VPORTS" "2" "")

(command "_.VPORTS" "2" "")

(setvar "CVPORT" (car (caddr (vports))))

(command "_.VPORTS" "_J" "" (car (caddr (vports))))

(setvar "CVPORT" (car (cadr (vports))))

(command "_.VPORTS" "3" "_H")

(setvar "GRIDMODE" ai_tiles_g)

(setvar "CVPORT" (car (cadddr (vports) ) ) )

(setvar "GRIDMODE" ai_tiles_g)

(setvar "CVPORT" (car (cadddr (vports))))

(setvar "GRIDMODE" ai_tiles_g)

(setvar "CVPORT" (car (cadddr (vports))))

(setvar "GRIDMODE" ai_tiles_g)

) )       

(ai_undo_pop)

(setq  *error* m:err m:err nil)             (setvar   "CMDECHO"   ai_tiles__cmde)

(princ)                               

Из листинга видно, что это обычный файл, который может загружать необходимые описания функций или выполнять некоторые выражения на языке AutoLISP (просматривается аналогия с файлом «acaddoc.lsp», который загружается при открытии нового рисунка). Поэтому пользователь, создавая свой файл меню (например, «mynew.mnu»), может написать файл «mynew.mnl», в который включить необходимые LISP-программы или LISP-выражения. Такой файл следует поместить в ту же папку, что и файл меню, и они будут загружаться один за другим.