版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
對話框設(shè)計技術(shù)第一頁,共五十七頁,編輯于2023年,星期日6.1對話框的組成對話框的特點:對話框是用對話框控制語言DCL(dialogcontrollanguage)編寫的ASCII文件定義的。使用DCL描述對話框的組成構(gòu)件、構(gòu)件布局形式和構(gòu)件的初始狀態(tài),形成一個對話框定義文件(擴展名為DCL)。對話框的設(shè)計是以約束條件為基礎(chǔ)的,框的尺寸及布局均遵循統(tǒng)一規(guī)則,用戶不需指定每一部分尺寸大小及定位關(guān)系,系統(tǒng)自動進行布置。一個對話框由位于其中的構(gòu)件組成,構(gòu)件(tile)就是構(gòu)成對話框的部件。這些構(gòu)件按其功能可以分為六類。第二頁,共五十七頁,編輯于2023年,星期日表構(gòu)件的類型及其相應(yīng)的構(gòu)件類型組成構(gòu)件預(yù)定義動作構(gòu)件button,dialog,editbox,imagebutton,listbox,popuplist,radiobutton,slide,toggle構(gòu)件組column,boxedcolumn,row,boxedrow,radiocolumn,boxedradiocolumn,radiorow,boxedradiorow修飾和說明列image,text,spacer正文聚合textpart,concatenation,paragraph對話框退出按鈕ok,okandcancel,okcancelhelp,okcanelhelpinformation出錯構(gòu)件errortile,okcancelhelperrortile下表按構(gòu)件的字母順序列出了各類構(gòu)件。表中各類預(yù)定義構(gòu)件定義在\support\base.dcl文件中。第三頁,共五十七頁,編輯于2023年,星期日1.預(yù)定義的有效動作構(gòu)件在構(gòu)件組成中相當(dāng)一部分構(gòu)件的作用是供操作人員作出一定的決定并產(chǎn)生相應(yīng)的操作,稱為動作構(gòu)件。(1)按鈕(button)(2)編輯框(edit_box)(3)圖象按鈕(image_button)(4)列表框(list_box)(5)彈出表(popup_list)(6)單選按鈕(radio_button)(7)滾動條(slider)(8)切換開關(guān)(toggle)第四頁,共五十七頁,編輯于2023年,星期日(1)按鈕(button)
按鈕是一種類似下壓鍵的有效構(gòu)件,其標(biāo)號(label)指出按鈕內(nèi)出現(xiàn)的提示文本,適用于用戶立即產(chǎn)生可視的操作,如退出對話框、進入子對話框及其它特定操作。三個常用按鈕功能及產(chǎn)生的相應(yīng)操作:OK,Cancel,Help。若要創(chuàng)建與OK相應(yīng)的構(gòu)件,該構(gòu)件的關(guān)鍵字應(yīng)為“accept”,并將其屬性is_default設(shè)定為真(True)。
(2)編輯框(edit_box)
編輯框用于輸入或編輯一行文字,其提示標(biāo)號(label)顯示在該框左邊,當(dāng)輸入文本比編輯框長度長時,文本能自動水平向左滾動。
(3)圖象按鈕(image_button)
圖象按鈕是一種顯示圖象而不是文字的按鈕,也稱icon,pictrue或graph;按鈕上的圖象由AutoLISP或ADS程序驅(qū)動。AutoCAD中SETTING菜單下PointStyle所彈出的對話框中包含了與點類型相對應(yīng)的圖象按鈕應(yīng)用實例。第五頁,共五十七頁,編輯于2023年,星期日(4)列表框(list_box)
該構(gòu)件包含若干行可供選擇的文字所組成的表,供用戶單擊選擇。通常表長是變的,當(dāng)使用自動布局的對話框占用較大空間時,常將該構(gòu)件制作成固定長度的列表框。用戶選擇表中的某一行時,該行會以醒目方式顯示,當(dāng)列表框包含的文本行數(shù)超出列表框縱向長度時,列表框右邊的滾動條會自動激活,可拖動滾動條光標(biāo)或通過按壓箭頭滾動顯示文本信息。MULTIPLE_SELECT屬性決定是否允許選擇列表框中多行文本;標(biāo)識(label)是顯示在列表框上方的文字說明。第六頁,共五十七頁,編輯于2023年,星期日(5)彈出表(popup_list)
彈出表結(jié)合了編輯框和列表框兩個概念,初始狀態(tài)包括一行文字和一個向下的箭頭,單擊箭頭會彈出包含全部文本的列表,選中后恢復(fù)到關(guān)閉狀態(tài),并在編輯框中顯示出已選中的列表項內(nèi)容。第七頁,共五十七頁,編輯于2023年,星期日(6)單選按鈕(radio_button)
單選按鈕為一組按鈕,這些按鈕由radio_column或radio_row組成,具有多選一的功能;該構(gòu)件適用從一個表中選一項,而表中的各項彼此又是互斥的場合。第八頁,共五十七頁,編輯于2023年,星期日(7)滾動條(slider)
滾動條是一種直觀控制數(shù)值的構(gòu)件,用戶可左右(上下)拖動滾動條指示器來獲取相應(yīng)值,返回值是以字符串方式表示的-32768至32767之間的一個整數(shù)。應(yīng)用程序可根據(jù)需要設(shè)置最大值或最小值,如圖為滾動條的應(yīng)用示例。第九頁,共五十七頁,編輯于2023年,星期日(8)切換開關(guān)(toggle)
切換開關(guān)控制邏輯布爾值(“0”或“1”)。功能與radio_button相似。但toggle不和其它開關(guān)發(fā)生聯(lián)系,因此同一行(或列)的toggle可以同時為“true”或“false”。如圖中目標(biāo)捕捉方式就是通過切換開關(guān)控件設(shè)定的。第十頁,共五十七頁,編輯于2023年,星期日2.構(gòu)件組群彼此功能相關(guān)的構(gòu)件組合在一起可以使對話框的布局更加合理、美觀,通過行、列等組合方式可使原來獨立的構(gòu)件自動對齊。操作人員不能選擇組群,只能選擇組群中的有效動作構(gòu)件進行操作,base.dcl文件中定義了幾種標(biāo)準(zhǔn)組合方式供用戶使用。
(1)列(column)、行(row)
列(行)是按照構(gòu)件在DCL文件(對話框控制語言)中的順序垂直(水平)列出的構(gòu)件集合,可以包括別的構(gòu)件組群和有效構(gòu)件。
(2)有界列(boxed_column)、有界行(boxed_row)
該構(gòu)件與列(行)功能相同,只不過有界列(行)四周有邊框并可以帶標(biāo)識(單純的列(行)不能帶標(biāo)識)。
(3)單選列(radio_column)、單選行(radio_row)
單選列(行)與其它組合方式不同,該構(gòu)件應(yīng)包括一定數(shù)目的單選鈕,各單選鈕之間互相排斥,其中只能有一個單選鈕為“true”。
(4)有界單選列(boxed_radio_column)、有界單選行(boxed_radio_row)
有界單選列(行)概念與單選列(行)相同,但其四周可以有邊框和標(biāo)識。第十一頁,共五十七頁,編輯于2023年,星期日3.裝飾性和信息性構(gòu)件裝飾性和信息性構(gòu)件無任何操作,也不能被選擇,主要用于顯示信息、加強視覺效果或幫助對話框布局。
(1)圖象(image)
圖象構(gòu)件是在一個矩形區(qū)域內(nèi)顯示向量、色彩填充或顯示幻燈等圖形的構(gòu)件。如EntileSelectSetting對話框中的目標(biāo)選擇框是顯示向量;Grips中的顏色選擇是色彩填充;Points則是各種點標(biāo)記的幻燈。
(2)文本(text)
文本構(gòu)件通常用于標(biāo)題或信息提示,大多數(shù)的報警框均包含該類構(gòu)件。
(3)空白襯框(spacer)
此構(gòu)件用于布局對所需的空間進行調(diào)整,它會影響鄰接構(gòu)件的相互位置及尺寸布局,由于PDB具有自動處理空白的能力,故通常不使用,僅在最終局部調(diào)整布局時才使用該構(gòu)件。第十二頁,共五十七頁,編輯于2023年,星期日4.標(biāo)準(zhǔn)退出按鈕
DCL文件中定義了四個常用的標(biāo)準(zhǔn)退出按鈕,即缺省按鈕“OK”,廢棄退出按鈕“Cancel”、求助對話框彈出按鈕“Help…”和附加信息對話框彈出按鈕“Info…”,如圖所示。它們的標(biāo)準(zhǔn)原型由BASE.DCL文件定義如下:ok_button:retirement_button{label="OK";
key="accept";
is_default=true;
}cancel_button:retirement_button{label="Cancel";
key="cancel";
is_cancel=true;
}help_button:retirement_button{label=“Help…”;
key="help";
mnemonic="H";
}info_button:retirement_button{label="Info…";
key="info";
mnemonic="I";
}第十三頁,共五十七頁,編輯于2023年,星期日
用戶在設(shè)計對話框時,應(yīng)盡量選用標(biāo)準(zhǔn)退出組件,如果不能滿足需要,可由標(biāo)準(zhǔn)退出按鈕進行組合,生成對話框退出組件。下面介紹的四種標(biāo)準(zhǔn)退出組件,用戶可以在設(shè)計對話框時直接引用。它們是“ok_only”、“ok_cancel”、“ok_cancel_help”和“ok_cancel_help_info”。通過下面的介紹,可以了解利用退出按鈕定義退出組件的方法。(1)退出組件ok_only的定義如下:
ok_only:column{fixed_width=true;
alignment=centered;:ok_button{is_cancel=true;
}}(2)退出組件ok_cancel的定義如下:
ok_cancel:column{
:row{fixed_width=true;
alignment=centered;
ok_button;:spacer{width=2;}cancel_button;
}}第十四頁,共五十七頁,編輯于2023年,星期日(3)退出組件ok_cancel_help的定義如下:ok_cancel_help:column{
:row{fixed_width=true;
alignment=centered;
ok_button;:spacer{width=2;}cancel_button;:spacer{width=2;}help_button;
}}(4)退出組件ok_cancel_help_info的定義如下:
ok_cancel_help_info:column{
:row{fixed_width=true;
alignment=centered;
ok_button;:spacer{width=2;}cancel_button;:spacer{width=2;}help_button;:spacer{width=2;}info_button;
}}第十五頁,共五十七頁,編輯于2023年,星期日6.2對話框構(gòu)件的屬性
屬性(attribute)用來控制對話框構(gòu)件的設(shè)置,如同編程語言中的變量,包含名字和值兩部分內(nèi)容。屬性的數(shù)據(jù)類型必須是下列四種數(shù)據(jù)類型之一。
(1)整型:通常表示距離,如構(gòu)件高度和寬度,用字符高度和寬度單位的整數(shù)倍表示。
(2)實數(shù)型:也可表示距離屬性,注意實數(shù)的小數(shù)點前一定要有數(shù)字,例如0.1,不能表示為.1。
(3)字符串:由雙括號括起的文本或轉(zhuǎn)義符,下表給出了DCL識別的轉(zhuǎn)義符意義。轉(zhuǎn)義符字符意義\"引號\\反向斜杠\t水平制表符\n換行符(4)保留字:DCL語言預(yù)定義的具有特殊意義的字符串,需用小寫字母表示,并對字母的大小寫敏感。預(yù)定義屬性是已經(jīng)定義了的、在對話框設(shè)計過程中可直接使用的屬性。下表給出了部分預(yù)定義屬性的分類。第十六頁,共五十七頁,編輯于2023年,星期日類屬性名相關(guān)構(gòu)件說明關(guān)鍵字和值屬性Key所有構(gòu)件構(gòu)件名稱Value文本、激活的構(gòu)件(除去按鈕和圖象按鈕)構(gòu)件的初始值布局與尺寸屬性List列表、彈出表顯示表中的初始值max_value滾動條滾動條最大值min_value滾動條滾動條最小值A(chǔ)lignment全部構(gòu)件組群中水平、垂直方向?qū)R方式aspect_ratio圖象、圖象按鈕圖象長寬比Color圖象、圖象按鈕圖象背景色edit_limit編輯框用戶可輸入的最大字符串長度edit_width編輯框、彈出表構(gòu)件中編輯部分的寬度Height全部構(gòu)件構(gòu)件高度Width全部構(gòu)件構(gòu)件高度布局與尺寸觀感屬性is_bold文本是否用黑體方式Label單選行、單選列、有界行、有界列、有界單選行、有界單選列、對話框、列表框、彈出表、單選按鈕、文本、切換開關(guān)構(gòu)件的標(biāo)記動作響應(yīng)屬性Action全部構(gòu)件AutoLISP操作表達式allow_accept編輯框、圖象按鈕、列表框當(dāng)選中該構(gòu)件時,激活is_default按鈕is_default按鈕接受按鈕,當(dāng)輸入Enter按鈕時有效表預(yù)定義的構(gòu)件屬性分類第十七頁,共五十七頁,編輯于2023年,星期日1.關(guān)鍵字和值屬性關(guān)鍵字和值屬性是對話框設(shè)計中最重要的屬性,它們提供了約束構(gòu)件功能的數(shù)值。
(1)關(guān)鍵字(key)
關(guān)鍵字是一個包含在引號內(nèi)的字符串。用戶指定一個AutoLISP或ADS程序引用此特定構(gòu)件的ASCII碼,在一特定的對話框中,每個key值都是唯一的。
(2)值(value)
一個用于初始化構(gòu)件的字符串,其值的含義由構(gòu)件類型所決定。該屬性值的變化不會影響到構(gòu)件的尺寸和位置,在構(gòu)件運行過程中,該值可通過用戶輸入或通過調(diào)用set_tile函數(shù)來改變,除按鈕(包括圖象按鈕)以外的動作構(gòu)件(如:text,list等)均需指定構(gòu)件的初始化值。第十八頁,共五十七頁,編輯于2023年,星期日2.布局屬性和尺寸屬性此類屬性值用于構(gòu)件的布局和形狀,下面對相應(yīng)的屬性作出說明。(1)寬度(width)和高度(height)該值表示構(gòu)件的最小寬度和高度,數(shù)值類型是整數(shù)或?qū)崝?shù)型。(2)對齊屬性(alignment)控制構(gòu)件在組群空間內(nèi)垂直或水平方向的定位方式。(3)子控件對齊屬性(children_alignment)與alignment功能基本相同,只不過它只確定所有子組群內(nèi)部的定位方式,構(gòu)件自身的alignment屬性優(yōu)先于該值。(4)固定高度(fixed_height)和固定寬度(fixed_width)當(dāng)這二個屬性值為true時,布局時將保持構(gòu)件的大小固定不變,默認值為false。(5)子控件固定高度(chileren_fixed_height)和子控件固定寬度(children_fixed_width)功能與(4)相同,不過它是構(gòu)件組群的屬性,只作用于組群內(nèi)所有的構(gòu)件并作為缺省值,默認值為false,優(yōu)先級較(4)的屬性低。第十九頁,共五十七頁,編輯于2023年,星期日3.功能屬性功能屬性定義了動作構(gòu)件的用途和操作。因為修飾和說明構(gòu)件是非動作構(gòu)件,故不需要功能屬性。(1)action
該屬性包含一個AutoLISP有效表達式組成的字符串,當(dāng)選中構(gòu)件時,執(zhí)行相應(yīng)的AutoLISP表達式操作,AutoCAD提供AutoLISP和ADS驅(qū)動程序來設(shè)定構(gòu)件的動作。注意不能用C語言指定action屬性。(2)is_enabled
該屬性設(shè)置構(gòu)件的有效性,默認值為true。當(dāng)is_enabled屬性為false時,構(gòu)件無效(變灰),只可見而不可選。(3)is_tab_stop
該屬性控制一個部件是否可以用制表鍵(Tab)選擇聚焦,默認值為true。(4)mnemonic
該屬性定義了快速聚焦于相應(yīng)構(gòu)件的熱鍵(即助記符),助記符通常是構(gòu)件標(biāo)識中帶下劃線的字母。助記符須符合下列規(guī)則:該屬性值必須是ASCII的單個字符,如“A”。同時該字符必須是構(gòu)件標(biāo)識中的字符。助記符在DCL文件中必須用大寫字母。第二十頁,共五十七頁,編輯于2023年,星期日4.預(yù)定義構(gòu)件屬性(1)獨立構(gòu)件1)按鈕(button)
包含三個屬性:label,is_cancel,is_default。
label是一個由引號括起來的字符串,出現(xiàn)的按鈕框內(nèi)的文本標(biāo)記(無缺省)。
is_cancel可為true或false。若為true,則所選中的按鈕與按取消鍵(如ESC或CTRL+C)作用相同;對話框中只能有一個按鈕的is_cancel為true,且該按鈕應(yīng)在操作回調(diào)動作完成后終止對話框。
is_default值也可為true或false。若為true,其作用與按接受鍵(如Enter)相同;通常該按鈕應(yīng)以一種與眾不同的方式顯示。對話框中只能有一個按鈕可置is_default為真(true)?!鐖D所示對話框中的按鈕定義如下::button{key="accept";
label="按此按鈕";
is_default=true;
}第二十一頁,共五十七頁,編輯于2023年,星期日2)對話框(Dialog)
包含三個屬性:label,value,initial_focus。
label顯示對話框的標(biāo)題文本,缺省為空。
value與label一樣,值屬性將字符串當(dāng)作一個可選擇的對話框標(biāo)題顯示,該值在布局時不作檢查,因此應(yīng)確定對話框有足夠的寬度來滿足該值的要求。使用set_tile函數(shù)可以動態(tài)地改變對話框的標(biāo)題。
initial_focus指明對話框內(nèi)初始聚焦的構(gòu)件?!纾?dialog{
label="對話框示例";……}第二十二頁,共五十七頁,編輯于2023年,星期日3)編輯框(Edit_box)
包含五個屬性:label,allow_accept,edit_width,edit_limit,value。
label為顯示在編輯框左邊的標(biāo)識文本。
allow_accept是邏輯型值(true或false)。當(dāng)該值為true時,用戶按下接受鍵(如Enter或雙擊鼠標(biāo)等),就如同激活了缺省按鈕(is_default為true的按鈕)。
edit_width控制編輯框的寬度,該值缺省值為0時,寬度不固定,編輯框可根據(jù)需要自動擴充到整個可用空間,當(dāng)該值為非零值時,該框右對齊,控制編輯框?qū)挾?,并在?biāo)識和編輯框之間保留一個空格。
edit_limit為編輯框中允許輸入的最多字符數(shù),默認為132個,最大可達256個字符。
value為編輯框中的初始文本字符串。※如圖所示對話框中的編輯框定義如下::edit_box{
key="test_text";label="編輯框";value="0";edit_limit=12;//限制編輯框最大的輸入字數(shù)
edit_width=25;//輸入?yún)^(qū)寬度
}第二十三頁,共五十七頁,編輯于2023年,星期日4)列表框(List_box)
包含六個屬性:label,allow_accept,list,multiple_select,tabs,value。
label為顯示在列表框上方的標(biāo)識字符串。
allow_accept意義與Edit_box中allow_accept屬性相同。
list為表中顯示表項內(nèi)容(字符串),行間用“\n”分隔,行內(nèi)用制表符“\t”分隔。
multiple_select為是否允許一次選擇表中多個選項的控制邏輯值(true或false),缺省值為false。
tabs包含整數(shù)或?qū)崝?shù),并由空格分開的字符串,每一個數(shù)均表示相應(yīng)的制表站(tabs)所處的位置。以確定制表符“\t”的文本列的位置。
value是初始選擇的列表項的索引值,如value=“02”,分別表示初始選中第1,3行,該值缺省為空“”?!鐖D所示對話框的列表框定義如下::list_box{
key="test_list_box";
multiple_select=true;//顯示選單中能否多選
label="列表框應(yīng)用";list="軸類零件\n盤蓋類零件\n叉件類零件";}第二十四頁,共五十七頁,編輯于2023年,星期日5)彈出表(Popup_list)
包含五個屬性:label,edit_width,list,tabs,value。
label為顯示在彈出表左邊的標(biāo)識字符串。
edit_width為編輯框或彈出表的寬度,與edit_box作用相同;缺省或為零時,該構(gòu)件寬度可擴展到整個可用空間。
list、tabs、value與list_box相應(yīng)屬性意義作用相同。
6)圖象按鈕(Image_button)
包含三個屬性:allow_accept,aspect_ratio,color。
allow_accep是一邏輯型值(true或false)。當(dāng)為true時,選中該構(gòu)件等同于同時選中缺省按鈕;缺省為false。
aspect_ratio為圖象的長寬比,若為零,則構(gòu)件即為圖象的原有大小。
color為圖象的背景色(填充色)?!鐖D所示對話框中的彈出表定義如下::popup_list{key="test_popup_box";
edit_width=20;
label="選擇零件";
list="軸類零件\n盤蓋類零件\n叉架類零件";
}第二十五頁,共五十七頁,編輯于2023年,星期日7)單選按鈕(radio_button)
包含二個屬性:label,value。
label為單選按鈕右邊的標(biāo)記文本。
value為單選鈕是否被選中的標(biāo)志:“1”表示被選中;“0”表示不選中。當(dāng)用戶將多個單選鈕置為“1”時,只有最后一個單選鈕被選中。
8)單選列組(radio_column)、有界單選列組(boxed_radio_column)
包含二個屬性:value,label(只有boxed_radio_column有此屬性)。
value為當(dāng)前被選中(value=“1”)的關(guān)鍵字字符串。
label為顯示在boxed_radio_column左上方的標(biāo)記文本。
9)單選行組(radio_row)、有界單選行組(boxed_radio_row)
包含二個屬性:value,label(只有boxed_radio_row有此屬性)。
value為當(dāng)前被選中(value=“1”)的關(guān)鍵字字符串。
label為顯示在boxed_radio_row左上方的標(biāo)記文本?!纾?boxed_radio_column{label="選擇零件";:radio_button{label="軸類零件";value="1";}:radio_button{label="盤蓋類零件";}:radio_button{label="叉件類零件";}}第二十六頁,共五十七頁,編輯于2023年,星期日10)滾動條(slide)
包含六個屬性:big_increment,small_increment,layout,max_value,min_value,value。
big_increment,small_increment控制滾動條增量使用值的整數(shù),取值范圍在min_value和max_value之間。其中big_increment的缺省值是整個范圍的1/10;small_increment的缺省值是整個范圍的1/100。
layout為滾動條的放置方向(水平或垂直),缺省為水平方向。
max_value,min_value是-32768~32767之間的整數(shù),表示滾動條返回值的范圍。缺省min_value為0;缺省max_value為10000。
value為包含當(dāng)前滾動條數(shù)值(整數(shù))字符串。※例如::slider{ key="slider_abc";min_value=1; //滑動條最小值
max_value=26; //滑動條最大值
width=30; //滑動條寬度
height=1; small_increment=1; //滑動條外箭頭位移量
big_increment=1; //滑動條內(nèi)位移量
}第二十七頁,共五十七頁,編輯于2023年,星期日(2)修飾及說明構(gòu)件
1)文本(text)
包含三個屬性:label,value,is_bold。
label為顯示的文本內(nèi)容。
value如label一樣也表示文本構(gòu)件的顯示內(nèi)容,但它對構(gòu)件的布局不發(fā)生影響。若試圖將文本信息靜態(tài)表示,直接在label中指定內(nèi)容即可,若試圖在運行過程改變這些信息,可用value指定它,并用一足夠長的width來包含將來可能賦給value的字符串長度;一旦布局完成,該文本的尺寸就不能改變,當(dāng)發(fā)生大于限定寬度的字符串對value賦值時,顯示文本將被自動截斷。
is_bold為一邏輯值(true或false),控制是否以黑體字顯示,缺省為false。※例如::text{label="A←英文字→Z";}第二十八頁,共五十七頁,編輯于2023年,星期日2)圖象(image)
包含二個屬性:color,aspect_radio。有關(guān)的屬性與Image_button說明相同。
3)空白襯框(spacer)
只具有“布局屬性和尺寸屬性”。
※例如:
:image_button{key="test_image_button";aspect_ratio=1.5;//圖象高度/寬度比值
color=1;alignment=right;}(3)聚合構(gòu)件組群屬性列(column)、行(row)
此二構(gòu)件只具有“布局屬性和尺寸屬性”。有界列(boxed_column)、有界行(boxed_row)
屬性label表示顯示在該構(gòu)件左上方的標(biāo)記文本。其余屬性均為“布局屬性和尺寸屬性”。第二十九頁,共五十七頁,編輯于2023年,星期日6.3對話框控制語言和設(shè)計原則
在AutoCAD環(huán)境下運行的面向?qū)υ捒虻膽?yīng)用程序由兩部分組成:①DCL對話框文件:用對話框控制語言(DCL)來描述對話框的組成構(gòu)件、構(gòu)件的布局形式和構(gòu)件的初始狀態(tài),形成一個對話框定義文件。②LISP驅(qū)動程序:用擴充了對話框操作語句的AutoLISP語言編寫對話框及其構(gòu)件的驅(qū)動程序,負責(zé)對話框定義文件的裝入、對話框的彈出、隱藏和退出,以及當(dāng)用戶激活構(gòu)件時每個構(gòu)件所產(chǎn)生的動作,建立一個對話框驅(qū)動文件(.LSP)。第三十頁,共五十七頁,編輯于2023年,星期日1.DCL文件結(jié)構(gòu)對話框是由構(gòu)件組成的樹狀結(jié)構(gòu),對話框控制語言DCL是描述樹的ASCII文本文件(擴展名為.DCL)。文件中可以包括一個或多個對話框的描述及其構(gòu)件的定義,也可以包含來自其它DCL文件的構(gòu)件定義。BASE.dcl文件是標(biāo)準(zhǔn)對話框,也是用戶定義對話框的標(biāo)準(zhǔn)零部件庫或工具箱。對話框文件ACAD.dcl包含了AutoCAD所使用的大部分標(biāo)準(zhǔn)對話框定義。DCL文件可以由以下三個部分組成:(1)引用其它DCL文件。格式為@include“user.dcl”用戶應(yīng)用程序不能直接引用ACAD.DCL文件,如果用戶要定義類似的對話框,可用文本編輯程序把其中的相應(yīng)部分剪貼到自己的DCL文件中。第三十一頁,共五十七頁,編輯于2023年,星期日(2)對話框的定義。格式為
dlgname:dialog{
對話框?qū)傩远x語句原型和子組件引用語句
}
其中,對話框的名字dlgname是必須指定的,可以由字母數(shù)字下劃線組成,并由字母開頭。字母一般全部使用小寫,并不應(yīng)與系統(tǒng)定義的用@include語句嵌入的其它DCL文件以及當(dāng)前DCL文件定義的子組件和對話框重名。(3)構(gòu)件的定義。格式為
tilename:item{attribute1=value1;
attribute2=value2;
…;
}
其中,tilename為構(gòu)件名稱,item表示構(gòu)件原型名稱,attribute是對構(gòu)件的屬性賦值。構(gòu)件除了直接定義外,還可通過引用的方式來繼承,新構(gòu)件可根據(jù)需要修改或繼承原先的屬性。第三十二頁,共五十七頁,編輯于2023年,星期日例如,標(biāo)準(zhǔn)構(gòu)件button的內(nèi)部定義為:
button:tile{fixed_height=true;
is_tab_stop=true;
}
而BASE.DCL中default_button引用button的定義如下:
default_button:button{is_default=true;
}
例中default_button不僅繼承了button的fixed_height及is_tab_stop屬性外,又加入了新的屬性is_default。注釋方式有兩種:第一種注釋方式為:/*注釋內(nèi)容*/
系統(tǒng)把注釋起始符“/*”到結(jié)束符“*/”的全部內(nèi)容看作注釋;
第二種注釋方式為://注釋內(nèi)容系統(tǒng)把從“//”開始到本行結(jié)束的全部內(nèi)容看作注釋。這種注釋方式比第一種方便,僅僅用于單行注釋。第三十三頁,共五十七頁,編輯于2023年,星期日2.對話框設(shè)計的基本原則(1)一般原則1)美觀2)便于操作3)語言文字準(zhǔn)確4)控件設(shè)計一致性5)便于操作控制6)實時反饋7)寬容性(errtile)8)提供幫助9)測試(2)通用規(guī)范1)布局2)對話框的尺寸和放置位置3)構(gòu)件禁止4)嵌套對話框5)隱藏對話框6)缺省值7)鍵盤輸入8)顏色9)標(biāo)準(zhǔn)化(3)預(yù)定義構(gòu)件設(shè)計原則1)按鈕2)編輯框3)列表框4)彈出表5)圖象按鈕和圖象構(gòu)件6)單選按鈕及單選行或單選列7)滾動條8)組群框9)文本10)切換開關(guān)(也稱checkbox)第三十四頁,共五十七頁,編輯于2023年,星期日3.對話框?qū)嵗涸O(shè)計如圖所示的對話框,用來輸入繪制一個圓環(huán)所需要的參數(shù):圓環(huán)內(nèi)徑、外徑和圓心坐標(biāo)。當(dāng)用戶按“OK”按鈕后,退出對話框,調(diào)用AutoCAD內(nèi)部命令DONUT繪出圓環(huán)。首先用對話框控制語言在對話框定義文件sample.dcl中描述對話框的組成和布局,其內(nèi)容如下:
第三十五頁,共五十七頁,編輯于2023年,星期日練習(xí):1.繪出在AutoCAD編輯狀態(tài)中下述文件在屏幕上顯示的對話框內(nèi)容test1:dialog{ label="輸入圓心坐標(biāo)和直徑"; :edit_box{ value="0.00"; key="x"; label="X:"; } :edit_box{ value="0.00"; key="y"; label="Y:"; } :edit_box{ value="0.00"; key="z"; label="Z:"; } :edit_box{ value="0.00"; key="d"; label="D:"; } ok_cancel; }第三十六頁,共五十七頁,編輯于2023年,星期日2.在AotuCAD編輯狀態(tài)中,在屏幕上顯示的對話框內(nèi)容如下圖,編寫dcl文件。test2:dialog{label="熱處理";:list_box{key="test_list_box";label="熱處理方法";list="淬火\n調(diào)質(zhì)\n回火\n正火\n退火";}ok_cancel;}第三十七頁,共五十七頁,編輯于2023年,星期日3.在AotuCAD編輯狀態(tài)中,在屏幕上顯示的對話框內(nèi)容如下圖,編寫dcl文件。test:dialog{label="選擇零件";:row{:list_box{label="選擇零件";width=15;list="軸類零件\n盤蓋類零件\n叉件類零件";}:boxed_radio_column{label="數(shù)量";:radio_button{label="10";}:radio_button{label="20";value="1";}:radio_button{label="30";}:edit_box{label="設(shè)計者";value="工程師";}}}spacer_1;ok_cancel;}第三十八頁,共五十七頁,編輯于2023年,星期日6.4對話框驅(qū)動程序設(shè)計
AutoCAD的對話框驅(qū)動程序可由AutoLISP及ADS二種方式完成,為了便于學(xué)習(xí)和理解驅(qū)動程序的主要構(gòu)造過程和程序內(nèi)容,下面介紹AutoLISP驅(qū)動程序以及對話框處理函數(shù)。
1.驅(qū)動程序的結(jié)構(gòu)如圖所示給出了對話框驅(qū)動程序的常規(guī)流程。第三十九頁,共五十七頁,編輯于2023年,星期日圖示對話框的驅(qū)動程序通常應(yīng)包含以下內(nèi)容:(1)加載對話框DCL文件(load_dialogfilename)
使用對話框的第一件事就是通過load_dialog函數(shù)載入DCL文件(可省略擴展名.dcl),若加載成功則返回一個大于零的整數(shù)值,通常該值應(yīng)由一內(nèi)存變量保存以便將來被new_dialog和unload_dialog函數(shù)所調(diào)用。同時當(dāng)檢測到該值不大于零時,可以及時地顯示出錯信息并返回系統(tǒng)。(2)顯示特定的對話框(new_dialogdialog_nameload_dcl_id)
該函數(shù)中dialog_name指DCL文件中所包含的某一對話框名稱(不是label),不是DCL文件名(一個DCL文件可以同時定義多個對話框);load_dcl_id是(load_dialog)的返回值。當(dāng)對話框顯示成功時,該函數(shù)返回true,否則返回false。第四十頁,共五十七頁,編輯于2023年,星期日(3)設(shè)置必要的構(gòu)件初始值
new_dialog成功后,系統(tǒng)自動根據(jù)DCL文件中的內(nèi)容對構(gòu)件進行初始化;此時用戶也可根據(jù)自己的需要利用程序?qū)?gòu)件作相應(yīng)的初始化設(shè)置:如函數(shù)set_tile和mode_tile可改變構(gòu)件的初始值及構(gòu)件的初始狀態(tài);函數(shù)start_list,add_list,endlist可以變更列表框表項內(nèi)容;函數(shù)start_image,vector_image,fill_image,slide_image和end_image均用于初始化圖象構(gòu)件的顯示內(nèi)容。同時用戶可以通過函數(shù)action_tile對構(gòu)件設(shè)置動作和回調(diào)函數(shù),也可通過調(diào)用client_data_tile將應(yīng)用程序中的特定數(shù)據(jù)與對話框中某些組成部分相聯(lián)系。(4)激活對話框(start_dialog)
此函數(shù)將控制權(quán)交給對話框,并可開始交互操作。此時對話框中的構(gòu)件均成為可選擇構(gòu)件(用mode_tile“禁止”的構(gòu)件除外),并始終處于活動狀態(tài);直至執(zhí)行done_dialog關(guān)閉對話框為止,對話框選中的構(gòu)件會自動執(zhí)行由action_tile設(shè)定的動作。第四十一頁,共五十七頁,編輯于2023年,星期日(5)處理用戶操作激活對話框后,根據(jù)用戶的交互動作,應(yīng)同時執(zhí)行相應(yīng)的動作函數(shù),此過程被稱為回調(diào)(callback)。通常用戶須使用get_tile,get_attr函數(shù)返回構(gòu)件的value及相應(yīng)的屬性值,再通過set_tile,mode_tile進行相應(yīng)的處理。(6)卸載對話框文件(unload_dialog)
對話框完成操作并且不再使用時,應(yīng)從內(nèi)存中釋放對話框文件。這是對話框操作的最后一個步驟,注意:若DCL文件中有多個對話框(dialog)定義,其中有的對話框仍在使用時,不應(yīng)卸載DCL文件。第四十二頁,共五十七頁,編輯于2023年,星期日2.對話框回調(diào)用戶選中某一構(gòu)件,就開始了回調(diào)過程,通常用action_tile完成相應(yīng)的動作。為了在回調(diào)響應(yīng)過程中及時獲取用戶的操作信息,常需通過以下六個變量來獲取回調(diào)數(shù)據(jù):
1)$key:被選中構(gòu)件的關(guān)鍵字。
2)$value:被選中構(gòu)件的當(dāng)前值。
3)$data:初始化過程中所設(shè)置的相關(guān)數(shù)據(jù)。
4)$reason:指明用戶操作細節(jié),常用于處理編輯框、列表框、圖象和滑塊。對不同的構(gòu)件其值也有不同的含義:
=1:用戶選中了該構(gòu)件。
=2:用戶退出編輯框,但尚未作最后決定,此時聚焦已在其它的構(gòu)件上,但編輯框的內(nèi)容仍有可能再次被修改,因此,此時不能將編輯框中的內(nèi)容存為永久性全局變量。
=3:用戶已改變滑塊值,但尚未作最后決定。此時也不宜將滑塊的值保存為永久性全局變量。
=4:用戶在該構(gòu)件(列表框、圖象按鈕)上連擊,連擊的意義由用戶設(shè)定。
5)$x:返回圖象構(gòu)件中的x坐標(biāo)值。該值以圖象內(nèi)部坐標(biāo)系為參照系,介于0~dimx_tile_1之間。
6)$y:返回圖象構(gòu)件中的y坐標(biāo)值。該值以圖象內(nèi)部坐標(biāo)系為參照系,介于0~dimy_tile_1之間。第四十三頁,共五十七頁,編輯于2023年,星期日
(1)接受鍵的回調(diào)對話框通常包含二組變量:隨構(gòu)件回調(diào)而變化的局部變量以及對應(yīng)于對話框最終構(gòu)件取值的全局變量。當(dāng)用戶選擇接受鍵以后,應(yīng)用程序需調(diào)用一個函數(shù)將局部變量永久性地賦給相應(yīng)的全局變量。接受鍵的另一個重要調(diào)用函數(shù)是(done_dialog1)。注意此時的狀態(tài)值一定為1。接受鍵的回調(diào)函數(shù)可按以下二種方式進行:
(action_tile"accept""(set_variables)(done_dialog1)")(action_tile"cancel""(done_dialog0)")
或
(action_tile"accept""(done_dialog1)")(action_tile"cancel""(done_dialog0)")(setqresult(start_dialog))(if(=1result)(set_varibles))
式中set_varibles是用戶自定義的將局部變量賦給永久性全局變量的函數(shù)。第四十四頁,共五十七頁,編輯于2023年,星期日(2)對話框活動期間禁止使用的AutoLISP函數(shù)1)AutoCAD中還包含許多由AutoLISP基本函數(shù)組成的復(fù)雜函數(shù)。2)在對話框活動期間要使用上述禁用函數(shù),應(yīng)首先將對話框隱藏,完成操作后,再將對話框重新顯示。函數(shù)名禁止原因command,osnap不能使用命令行Entdel,Entmak,Entmod,Entsel,Entnpd,Nentsel因?qū)υ捒蛑械乃胁僮骶赡鼙蝗∠?,不能使用可改變圖形數(shù)據(jù)的函數(shù)Getangle,Getcorner,Getdist,Getint,Getkword,Getorient,Getpoint,Getreal,Getstring,Ssget,Graphscr,Grclear,Grdraw,Grread,Grtext,Grvecs,Menucmd,Prompt,Redraw,Textpage,Textscr這些函數(shù)須通過屏幕或命令行進行交互操作,均會影響到屏幕顯示對話框活動期間被禁止的AutoLISP函數(shù)第四十五頁,共五十七頁,編輯于2023年,星期日3.對話框特殊處理
(1)嵌套對話框,圖示為嵌套對話框常規(guī)流程圖。※為了使屏幕保持清晰,嵌套層次應(yīng)控制在三或四層之內(nèi)。第四十六頁,共五十七頁,編輯于2023年,星期日(2)隱藏對話框?qū)υ捒蛴行r,用戶只能對對話框操作而不能對圖形屏幕作交互操作,也不能進行命令行操作。(3)移動對話框系統(tǒng)可通過done_dialog返回對話框位置坐標(biāo)(x,y),應(yīng)用程序可將該點記錄供下一次new_dialog指明顯示位置。(4)設(shè)置顏色可通過調(diào)用acad_colordlg函數(shù)返回所選的顏色值供應(yīng)用程序使用。(5)幫助對話框調(diào)用acad_helpdlg可調(diào)用acad幫助文件對話框,用戶可生成自己的幫助文件。第四十七頁,共五十七頁,編輯于2023年,星期日4.對話框驅(qū)動函數(shù)下面按函數(shù)功能對PDB軟件包中的函數(shù)進行分類介紹,包括函數(shù)的名稱、變元、功能及示例。為了便于說明,字符變量前用“c”引導(dǎo),整數(shù)變量前用“i”引導(dǎo),變量類型為表的用“1”引導(dǎo)。(1)打開、關(guān)閉DCL文件1)(load_dialogcDclfile)此函數(shù)載入一個DCL文件,該DCL文件可同時包含多個對話框定義,cDclfile為載入的DCL文件名(可省略擴展名dcl),函數(shù)返回一整數(shù)值(iDcl_id)供new_dialog或unload_dialog函數(shù)使用。例如:
(setqiDcl_id(load_dialog"示例.dcl"))
若返回值大于0,則表示載入成功;若小于0,則表示載入失敗。2)(unload_dialogiDcl_id)
該函數(shù)卸載一個與iDcl_id相關(guān)聯(lián)的dcl文件,其iDcl_id為load_dialog的返回值,不論成功與否,該函數(shù)返回值均為nil。例如:
(unload_dialogiDcl_id)第四十八頁,共五十七頁,編輯于2023年,星期日(2)打開、關(guān)閉對話框1)(new_dialogcDialog_name,iDcl_id[cAction_expression][1Screen_pt])
此函數(shù)顯示對話框,并初始化對話框構(gòu)件,如缺省值或缺省操作。變元cDialog_name為字符串,指DCL文件中已定義的對話框名稱,iDcl_id是load_dialog函數(shù)的返回值;cAction_expression是一個字符串,可包含一個AutoLISP表達式作為缺省操作。lScreen_pt是一個二維表,指定對話框在屏幕中顯示的位置(x,y)。2)(start_dialog)
激活由new_dialog顯示對話框,在調(diào)用該函數(shù)之前,應(yīng)完成對話框的初始化,該函數(shù)沒有變參,其返回值由done_dialog函數(shù)設(shè)定。3)(done_dialogiStatus)
該函數(shù)關(guān)閉對話框,變元iStatus指明關(guān)閉對話框的原因。該值將返回給start_dialog函數(shù)。第四十九頁,共五十七頁,編輯于2023年,星期日(3)初始化操作表達式或回調(diào)函數(shù)
(action_tilecKeycAction_expression)
此函數(shù)指定構(gòu)件的相應(yīng)動作。變元cKey為構(gòu)件的關(guān)鍵字,cAction_expression為對構(gòu)件初始動作表達式,同時,可對回調(diào)值進行相應(yīng)的處理。例如:
(action_tile"accept""(set_varible)(done_dialog1)")(4)構(gòu)件屬性處理
1)(mode_tilecKeyiMode)
設(shè)置關(guān)鍵字為cKey構(gòu)件的狀態(tài),iMode表示的狀態(tài)碼如下:
0——啟動構(gòu)件;1——禁止構(gòu)件動作;
2——聚焦于該構(gòu)件;3——選擇編輯框的內(nèi)容;
4——變換圖象按鈕或圖象構(gòu)件的顯示狀態(tài)。
2)(get_attrcKeycAttribute)
此函數(shù)返回DCL文件中關(guān)鍵字為cKey構(gòu)件的相應(yīng)屬性設(shè)定值。cAttribute表示需返回的屬性名稱。
3)(get_tilecKey)
此函數(shù)用于獲取由cKey指定的構(gòu)件值,由于它能返回不是當(dāng)前聚焦的構(gòu)件值,較常見于回調(diào)函數(shù)的應(yīng)用中。
4)(set_tilecKeycValue)
此函數(shù)用cValue的值轉(zhuǎn)換由cKey所指定的構(gòu)件值。第五十頁,共五十七頁,編輯于2023年,星期日(5)建立列表框和彈出表1)(start_listcKeyiOperation[iIndex])
此函數(shù)打開關(guān)鍵字為cKey的表并進行由iOperation所指定的表項操作。1——編輯表項;2——增加表項;3——創(chuàng)建新表,若cKey指定的構(gòu)件已有舊表,則舊表被刪除。iOperation缺省值為3,iIndex參數(shù)值指明編輯的表項缺省為0。2)(add_listcItem)
此函數(shù)根據(jù)start_list中的iOperation值不同而有不同功能:
iOperation=3:打開一個新表,并將cItem作為一個表項增加到新表中。
iOperation=1:用cItem內(nèi)容替換由iIndex所指定的表項內(nèi)容,若未能定iIndex值,則替換第一個表項的內(nèi)容。
iOperation=2:在表的末端以cItem內(nèi)容作為新增加的表項內(nèi)容。3)(end_list)
結(jié)束當(dāng)前表的處理。顯然,表操作中的創(chuàng)建表、編輯表項及增加表項均可通過start_list中的iOperation參數(shù)值不同而進行。第五十一頁,共五十七頁,編輯于2023年,星期日(6)建立圖象
1)(start_imagecKey)(end_image)start_image函數(shù)打開由cKey指定的圖象構(gòu)件以便對其進行編輯操作(如fill_image,slide_image,vactor_image)。完成圖象構(gòu)件的編輯操作后應(yīng)調(diào)用end_image函數(shù)關(guān)閉圖象的編輯功能。
2)(vector_imagex1y1x2y2color)
該函數(shù)在當(dāng)前已激活的圖象構(gòu)件中,從始點(x1,y1)至終點(x2,x2)之間畫一矢量,坐標(biāo)值為相對坐標(biāo),構(gòu)件左上角為(0,0),右下角由構(gòu)件尺寸確定,(dimx_tile)及(dimy_tile)可提供構(gòu)件的寬度和高度尺寸,(x2,y2)的值不能超出構(gòu)件的寬度和高度值。
3)(fill_imagex1y1x2y2color)
在當(dāng)前激活的圖象中畫一個填充的矩形,矩形的二個對角坐標(biāo)分別為第一個角點坐標(biāo)(x1,y1)與第二個角點坐標(biāo)(x2,y2)。
4)(slide_imagex1y1x2y2sldname)
該函數(shù)在當(dāng)前激活圖象中顯示一個幻燈片,(x1,y1)對應(yīng)于幻燈片的輸入點,(x2,y2)對應(yīng)于該幻燈顯示后的對角點坐標(biāo)。第五十二頁,共五十七頁,編輯于2023年,星期日(7)專用數(shù)據(jù)處理(client_data_tilecKeycClientdata)
把應(yīng)用程序管理數(shù)據(jù)與cKey所指定的構(gòu)件相聯(lián)系,當(dāng)構(gòu)件被選中時,自動將cClientdata數(shù)據(jù)保存在變量$data中。(8)相關(guān)的AutoLISP函數(shù)函數(shù)名說明(acad_colordlgcolornum,[flag])顯示setcolor對話框(acad_helpdlghelpfile[topic])顯示help對話框(acad_strsortlist)返回排序后的表(appendex
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024牛肉供應(yīng)鏈優(yōu)化與物流配送合同
- 二零二五年鮑魚海鮮產(chǎn)品進出口合同2篇
- 2025年度中小企業(yè)財務(wù)輔導(dǎo)與融資對接服務(wù)合同3篇
- 2025年工藝品FOB出口合同標(biāo)準(zhǔn)范本2篇
- 2024年相機設(shè)備采購正式協(xié)議樣本
- 2024特定事項補充協(xié)議范本版B版
- 2025年度淋浴房安全檢測與安裝服務(wù)合同4篇
- 2025年環(huán)保型小區(qū)車棚租賃與充電樁建設(shè)合同3篇
- 2025年度綠色生態(tài)園林景觀項目苗木采購合同樣本3篇
- 2025年度消防設(shè)施設(shè)備安全性能評估合同3篇
- 軟件項目應(yīng)急措施及方案
- 2025河北邯鄲經(jīng)開國控資產(chǎn)運營管理限公司招聘專業(yè)技術(shù)人才5名高頻重點提升(共500題)附帶答案詳解
- 2024年民法典知識競賽考試題庫及答案(共50題)
- 2025老年公寓合同管理制度
- 2024-2025學(xué)年人教版數(shù)學(xué)六年級上冊 期末綜合卷(含答案)
- 2024中國汽車后市場年度發(fā)展報告
- 鈑金設(shè)備操作培訓(xùn)
- 感染性腹瀉的護理查房
- 天津市部分區(qū)2023-2024學(xué)年高二上學(xué)期期末考試 物理 含解析
- 水利工程招標(biāo)文件樣本
- 第17課 西晉的短暫統(tǒng)一和北方各族的內(nèi)遷(說課稿)-2024-2025學(xué)年七年級歷史上冊素養(yǎng)提升說課稿(統(tǒng)編版2024)
評論
0/150
提交評論