您當前的位置:主頁>>AutoCAD>>AutoCAD二次開發(fā)  
           自定義菜單文件

     實例創(chuàng)建新的菜單文件“user.mns”
         Step1 :定義菜單組
(1)打開記事本程序,創(chuàng)建一個新的文本文件。
(2)在文件中輸入如下代碼。
//
//SampleMenuFile
//
***MENUGROUP=USER
即定義該菜單文件屬于“USER”菜單組。
       Step2 :定義輔助菜單
在上一步驟輸入的代碼后繼續(xù)輸入如下代碼:
***AUX2
//Shift button
$P0=SHORTCUT$p0=*
該代碼定義用戶在使用Shift 右鍵時所調(diào)用的快捷菜單“SHORTCUT”。
       Step3 :定義下拉菜單和快捷菜單
在上一步驟輸入的代碼后繼續(xù)輸入如下代碼:
***POP0
**SHORTCUT
ID_SM[&SampleMenu]
ID_S1[&Polyline\tCtrl 3]^C^C_pline
ID_S2[&Array...\tCtrl 4]^C^C_array
[--]
ID_S3[->SubMenu]
ID_S31[SubMenu1]^C^C
ID_S32[<-SubMenu2...]^C^C
[--]
ID_S4[ImageMenu...]$I=USER.IMAGE_MENU$I=USER.*
ID_S5[~DisableMenu]^C^C
ID_S6[!.CheckedMenu]^C^C
***POP14
**PULL_DOWN
ID_SM[&SampleMenu]
ID_S1[&Polyline\tCtrl 3]^C^C_pline
ID_S2[&Array...\tCtrl 4]^C^C_array
[--]
ID_S3[->SubMenu]
ID_S31[SubMenu1]^C^C
ID_S32[<-SubMenu2...]^C^C
[--]
ID_S4[ImageMenu...]$I=USER.IMAGE_MENU$I=USER.*
ID_S5[~DisableMenu]^C^C
ID_S6[!.CheckedMenu]^C^C
注意上兩部分代碼分別定義了快捷菜單“SHORTCUT”和下拉菜單“PULL_DOWN”,這兩部分定義的菜單項完全一樣,不同之間僅在于菜單名稱。
這部分定義的菜單分別給出了菜單的加速鍵、級聯(lián)子菜單以及菜單項的顯示控制等功能的定義。
        Step4 :定義工具欄
在上一步驟輸入的代碼后繼續(xù)輸入如下代碼:
***TOOLBARS
**TB_USER1
ID_TbUser1[_Toolbar("UserToolbars1",_Floating,_Show,100,100,1)]
ID_Pline[_Button("Polyline","ICON_16_PLINE","ICON_16_PLINE")]^C^C_pline
ID_Array[_Button("Array","ICON_16_ARRREC","ICON_16_ARRREC")]^C^C_array
ID_Image[_Button("Image",user16.bmp,user32.bmp)]$I=USER.IMAGE_MENU
$I=USER.*
**TB_USER2
ID_TbUser2[_Toolbar("UserToolbars2",_Floating,_Show,200,100,1)]
ID_Flyout[_Flyout("Flyout","ICON_16_PLINE","ICON_16_PLINE",
_OtherIcon,USER.TB_USER1)]
[--]
[_Control(_Color)]
[--]
[_Control(_Layer)]
以上代碼定義了兩個工具欄“TB_USER1”和“TB_USER2”。工具欄“TB_USER1”中包括三個按鈕“Polyline”、“Array”和“Image”,其中“Image”按鈕的圖標資源為用戶創(chuàng)建的兩個位圖文件“user16.bmp”和“user32.bmp”,并保存在 AutoCAD 的庫搜索路徑中。
工具欄“TB_USER2”中引用“TB_USER1”來定義了一個彈出式工具欄,同時還定義了兩個控件“Color”和“Layer”。
        Step5 :定義圖像控件菜單
在上一步驟輸入的代碼后繼續(xù)輸入如下代碼:
***IMAGE
**IMAGE_MENU
[NutImage]
[user(s1)]^C^C
[user(s2)]^C^C
[user(s3)]^C^C
[user(s4)]^C^C
[user(s5)]^C^C
[user(s6)]^C^C
以上代碼定義了一個圖像控件菜單,其中所用到的幻燈片和幻燈片庫的創(chuàng)建,請參見第31章。由于該定義僅出于演示的目的,因此并沒有給出具體的命令序列,用戶可根據(jù)需要來添加。
       Step6 :定義屏幕菜單
在上一步驟輸入的代碼后繼續(xù)輸入如下代碼:
***SCREEN
**S
[MianMenu]^C^C^P(ai_rootmenus)^P
[Polyline]^C^C_pline
[Array...]^C^C_array
[SubMenu]$S=USER.SUBMENU
[ImageMenu...]$I=USER.IMAGE_MENU$I=USER.*
**SUBMENU2
[PrevMenu]$S=
[SubMenu1]^C^C
[SubMenu2]^C^C
以上代碼定義了帶有子菜單的屏幕菜單。
        Step7 :定義加速鍵
在上一步驟輸入的代碼后繼續(xù)輸入如下代碼:
***ACCELERATORS
ID_S1[CONTROL "3"]
ID_S2[CONTROL "4"]
["NUMPAD5"]@x^h
["NUMPAD6"]<0
["NUMPAD9"]<45
["NUMPAD8"]<90
["NUMPAD7"]<135
["NUMPAD4"]<180
["NUMPAD1"]<-135
["NUMPAD2"]<-90
["NUMPAD3"]<-45
以上代碼中除了定義“Pline”命令和“Array”的快捷鍵以外,還定義了擴展坐標輸入,即數(shù)字鍵區(qū)作如下修改:5鍵輸入@符號,其他數(shù)字鍵輸入小于號(<)和該鍵位置在數(shù)字鍵區(qū)中表示的角度值。這樣用戶來輸入相對極坐標時可利用數(shù)字鍵快速輸入,例如極坐標:@50<45,用戶只需按數(shù)字鍵區(qū)的5鍵、數(shù)字“50”和數(shù)字鍵區(qū)的9鍵即可。
        Step8 :定義菜單幫助
在上一步驟輸入的代碼后繼續(xù)輸入如下代碼:
***HELPSTRINGS
ID_S1[Createsa2Dpolyline]
ID_S2[Createsmultiplecopiesofobjectsinapattern]
ID_S31[Thesample1forSubMenu]
ID_S32[Thesample2forSubMenu]
ID_S4[ThesampleforImeageMenu]
ID_S5[ThesampleforDisableMenu]
ID_S6[ThesampleforCheckedMenu]
以上代碼給出了每個菜單項相應的提示。
        Step9 :保存文件
以“user.mns”為名保存該文件。
說明AutoCAD命令前加“_”是為了語言的兼容性。
34.3.2自定義菜單文件的使用
用戶編寫的菜單文件“USER.MNU”是文本文件。首次使用該菜單文件時,AutoCAD會對其進行編譯,編譯后生成可被直接使用的二進制菜單文件“USER.MNC”。加載菜單文件的命令如下:
命令行:menu
調(diào)用該命令后,系統(tǒng)彈出“SelectMenuFl1e(選擇菜單文件)”對話框。在該對話框中,指定打開文件類型為“MenuTemplate(*.MNU)”項,再選擇要加載的“USER.MNU”文件,結(jié)果如圖34-4所示。

用戶可再次使用“menu”命令,加載AutoCAD主目錄“Support”子目錄中的“acad.mns”文件來恢復原來的系統(tǒng)菜單。
如果用戶希望將自定義的菜單和原來的系統(tǒng)菜單結(jié)合起來使用,則可選擇菜單【Tools(工具)】→【Customize(自定義)】→【Menus…(菜單)】,系統(tǒng)彈出“MenuCustomization(菜單自定義)”對話框,如圖34-5所示。

選擇“MenuGroups(菜單組)”選項卡,并單擊Browse...按鈕選擇自定義的“user.mns”菜單文件,然后單擊Load...按鈕可加載該文件。加載后,在“MenuGroups(菜單組)”列表中將增加用戶所定義的菜單組“USER”。

選擇“MenuBar(菜單欄)”選項卡,如圖34-6所示。在“MenuGroup(菜單組)”下拉列表中選擇“USER”項,此時在“Menus(菜單)”列表中將相應地顯示出該菜單文件中定義的菜單項“SampleMenu。選擇該項后,再選擇“MenuBar(菜單欄)”列表中的“Help(幫助)”項,然后單擊Insert>>按鈕,將“SampleMenu”菜單插入到“Window(窗口)”和“Help(幫助)”之間。

完成上述設置后,單擊Close按鈕關閉該對話框使用戶定義的菜單生效,結(jié)果如圖34-7所示。
民眾工作室.制作      版權(quán)所有