第12章 對話框設計 清華CAD二次開發(fā) LISP課件_第1頁
第12章 對話框設計 清華CAD二次開發(fā) LISP課件_第2頁
第12章 對話框設計 清華CAD二次開發(fā) LISP課件_第3頁
第12章 對話框設計 清華CAD二次開發(fā) LISP課件_第4頁
第12章 對話框設計 清華CAD二次開發(fā) LISP課件_第5頁
已閱讀5頁,還剩145頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第12章對話框設計第12章對話框設計清華CAD二次開發(fā)LISP12.1概述1.對話框的特點對話框形象、直觀,可以隨意輸入、隨時修改,鼠標、鍵盤并用,是一種深受用戶歡迎的界面。對話框用DCL語言(DialogControlLanguage)定義,得到"DCL類型的文件,用AutoLISP或C程序驅動。

AutoCAD提供了兩個重要的DCL文件:ACAD.DCL存放AutoCAD系統(tǒng)定義的對話框,BASE.DCL為用戶提供了一些常用的對話框標準控件。2.對話框的組成對話框由若干控件組成,見圖12-1??丶梢允前粹o、切換開關、編輯框、列表或圖像等。

第12章對話框設計清華CAD二次開發(fā)LISP圖12-1對話框的組成

圖像按鈕彈出列表滑動條編輯框按鈕圖像互鎖按鈕切換開關文本第12章對話框設計清華CAD二次開發(fā)LISP3.實例【例12-1】用DCL定義一個簡單的對話框。進入VLISP環(huán)境,將下列源代碼輸入到文本編輯窗口,選取下拉菜單Tools

InterfaceTool

PreviewDCLinEditor,即可看到圖12-2所示該對話框的外觀。sample:dialog{label="簡單的對話框實例";:text{label="祝您成功!";}:button{key="accept";label="確認";is_default=true;fixed_width=true;alignment=centered;圖12-2簡單的對話框實例}}第12章對話框設計清華CAD二次開發(fā)LISP12.2對話框控件控件是構造對話框的元件。AutoCAD為用戶預定義了23種控件和8個常用的固定控件。每一種控件屬于一種類型。每一個控件有多個屬性。每個屬性都有一個名字和值。多數(shù)的屬性都有它的默認值。一個控件具有哪些屬性是由它的類型所決定的??丶倪@些屬性確定了它的外觀形式和動作行為。

例如上例中的"確認"按鈕,它的類型是button。當它的屬性label="確認"、key="accept"、is_default=true、fixed_width=true、alignment=centered,其余屬性為默認值時,就確定了圖12-2所示的外觀。按照控件的特點可以將控件分為以下幾類。第12章對話框設計清華CAD二次開發(fā)LISP12.2.1可以定義動作行為的控件這類控件具有動作行為(action)的屬性,動作行為是用AutoLISP的函數(shù)或表達式表示定義的,用鼠標單擊這樣的控件時,就會執(zhí)行相應的函數(shù)或表達式。1.按鈕(Button)按鈕適用于立即產生可視的操作,如退出對話框、彈出子對話框及其它特定操作。每個對話框至少包含一個OK按鈕(或功能相當?shù)目丶?。按鈕的類型是button。有action、alignment、fixed_height、fixed_width、height、is_cancel、is_default、is_enabled、is_tab_stop、key、label、mnemonic、width

共13個屬性。它的標簽(label)顯示在按鈕上。若要創(chuàng)建與OK等價的控件,其關鍵字必須為"accept",并將其屬性is_default設定為true(真)。參照例12-1中"確認"按鈕的定義。第12章對話框設計清華CAD二次開發(fā)LISP2.編輯框(EditBox)

編輯框用于輸入字符串。它的類型是edit_box。有action、alignment、allow_accept、edit_limit、edit_width、fixed_height、fixed_width、height、is_enabled、is_tab_stop、key、label、mnemonic、value、width、password_char16個屬性。其標簽顯示在該框的左邊,它的默認寬度為12個字符,當輸入的字符多于12時,文本自動向左滾動,框內的字符串即為編輯框的值(value)。圖12-3所示的編輯框定義如下::edit_box{key="test_text";label="長度:";value="100.0";width=12;圖12-3編輯框

}第12章對話框設計清華CAD二次開發(fā)LISP3.圖像按鈕(ImageButton)

圖像按鈕將圖像顯示在按鈕上。圖像由AutoLISP程序確定。它的類型是image_button。有action、alignment、allow_accept、aspect_ratio、color、fixed_height、fixed_width、height、is_enabled、is_tab_stop、key、mnemonic、width13個屬性。圖像按鈕很有用的一個特性是,通過AutoLISP程序可以獲取被單擊時的位置,從而根據(jù)不同的位置設計相應的動作。圖12-4所示圖像按鈕定義的如下::image_button{key="test_image_button";width=10;aspect_ratio=1.5;圖12-4圖像按鈕}第12章對話框設計清華CAD二次開發(fā)LISP4.列表框(ListBbox)列表框的類型是list_box。有action、alignment、allow_accept、fixed_height、fixed_width、height、is_enabled、is_tab_stop、key、label、list、mnemonic、multiple_select、tabs、value、width16個屬性。列表內含有若干行可供選擇的文本,當表的內容超出表的范圍時,將自動在表的右側出現(xiàn)一個滑動條。

列表的標簽顯示在列表框的上方作為文字說明。列表的值是被選中的文本行的序號,序號從0開始。屬性multiple_select為true時,允許同時選取框內的多行文本。圖12-5列表框

第12章對話框設計清華CAD二次開發(fā)LISP圖12-5所示對話框的列表定義如下::list_box{label="齒輪種類";list="圓柱直齒\n圓柱斜齒\n圓錐直齒\n螺旋傘齒\n蝸輪\n蝸桿\n";value="2";key="gear_list";height=6;}圖12-5列表框

第12章對話框設計清華CAD二次開發(fā)LISP5.下拉列表(PopupList)下拉列表的類型是popup_list。它具有action、alignment、edit_width、fixed_height、fixed_width、height、is_enabled、is_tab_stop、key、label、list、mnemonic、tabs、value、width15個屬性。下拉列表具有編輯框和列表框的兩個特點,初始狀態(tài)象一個編輯框,標簽顯示在框的左邊,框內只有一行字符和一個向下的箭頭,見圖12-6(a)。單擊框內箭頭,將彈出一個列表,見圖12-6(b),選取表內文本之后,列表自動關閉,在編輯框內顯示選中的內容。下拉列表的值是被選中的文本行的序號。

第12章對話框設計清華CAD二次開發(fā)LISP圖12-6所示下拉列表的定義如下::popup_list{label="齒輪種類:";list="圓柱直齒\n圓柱斜齒\n圓錐直齒\n螺旋傘齒\n蝸輪\n蝸桿\n";key="gear_list";}(a)(b)圖12-6下拉列表

第12章對話框設計清華CAD二次開發(fā)LISP6.互鎖按鈕(RadioButton)互鎖按鈕的類型是radio_button。有action、alignment、fixed_height、fixed_width、height、is_enabled、is_tab_stop、key、label、mnemonic、value、width12個屬性。互鎖按鈕不宜能單獨使用,必須由多個這樣的按鈕以行或列的形式組成一組,同組的按鈕之間是互鎖的,只能從中選取一個?;ユi按鈕的標簽顯示在按鈕的右邊。圖12-7所示互鎖按鈕的定義如下::radio_button

{key="unit_mm";label="毫米";}圖12-7互鎖按鈕第12章對話框設計清華CAD二次開發(fā)LISP7.滑動條(Slider)滑動條是一種直觀控制數(shù)值的控件。點取滑動條上的箭頭或拖動滑塊,可以得到字符串方式表示的整數(shù)。滑動條的類型是slider。有action、alignment、big_increment、fixed_height、fixed_width、height、key、label、layout、max_value、min_value、mnemonic、small_increment、value、width15個屬性。屬性max_value、min_value確定數(shù)值的最大和最小值,small_increment、big_increment確定點擊滑動條箭頭時的最小、最大增量。

圖12-8所示滑動條的定義如下::slider

{key="test_slider";min_value=0;max_value=100;}圖12-8滑動條第12章對話框設計清華CAD二次開發(fā)LISP8.切換開關(Toggle)切換開關又稱作復選開關、乒乓開關,它的類型是toggle。有action、alignment、fixed_height、fixed_width、height、is_enabled、is_tab_stop、key、label、value、width11個屬性。切換開關與互鎖按鈕不同的是它可以單獨使用,同組的切換開關各自是獨立的。標簽顯示在開關的右邊。圖12-9所示切換開關的定義如下::toggle{label="正交方式";key="ortho_mode";value=1;}圖12-9切換開關第12章對話框設計清華CAD二次開發(fā)LISP12.2.2組合類控件組合類控件可以將相關的控件組合在一起,使得對話框的布局更加美觀、合理,操作更加方便。1.列(Column)列是將若干控件構成垂直分布的一個組件。列的類型是column。有alignment、children_alignment、children_fixed_height、children_fixed_width、fixed_height、fixed_width、height、label、width9個屬性。

圖12-10列

圖12-11加框列

第12章對話框設計清華CAD二次開發(fā)LISP圖12-10所示列的定義如下::column{:button{label="光標拾取<";key="pick";}:edit_box{label="x=";width=12;key="x";mnemonic="x";value=0.0;}:edit_box{label="y=";width=12;key="y";mnemonic="y";value=0.0;}}圖12-10列

第12章對話框設計清華CAD二次開發(fā)LISP2.加框列(BoxedColumn)顧名思義加框列就是加了一個矩形框的列。加框列的類型是boxed_bolumn。有alignment、children_alignment、children_fixed_height、children_fixed_width、fixed_height、fixed_width、height、label、width9個屬性。如果將圖12-10所示列的定義的第一行":column{改為:boxed_column{label="左下角點";",即可定義一個加框列,見圖12-11。圖12-11加框列

第12章對話框設計清華CAD二次開發(fā)LISP3.互鎖列(RadioColumn)若干個互鎖按鈕組成的列即為互鎖列。互鎖列的類型是radio_column。有alignment、children_alignment、children_fixed_height、children_fixed_width、fixed_height、fixed_width、height、label、width9個屬性?;ユi列的特點是,它保證了其中只能有一個按鈕的值為1,即處于打開狀態(tài)。圖12-12互鎖列

圖12-13加框互鎖列

第12章對話框設計清華CAD二次開發(fā)LISP圖12-12所示互鎖列的定義如下::radio_column{key="size";:radio_button{label="A&0";key="a0";}:radio_button{label="A&1";key="a1";}:radio_button{label="A&2";key="a2";}:radio_button{label="A&3";key="a3";value=1;}:radio_button{label="A&4";key="a4";}:radio_button{label="A&5";key="a5";}}圖12-12互鎖列第12章對話框設計清華CAD二次開發(fā)LISP圖12-13加框互鎖列

4.加框互鎖列(BoxedRadioColumn)加框互鎖列就是加了一個矩形框的互鎖列。加框互鎖列的類型是boxed_radio_column。有alignment、children_alignment、children_fixed_height、children_fixed_width、fixed_height、fixed_width、height、label、width9個屬性。

如果將圖12-12所示互鎖列的定義的第一行":radio_column{"改為":boxed_radio_column{label="幅面規(guī)格";",即可定義一個加框互鎖列,見圖12-13。第12章對話框設計清華CAD二次開發(fā)LISP5.行(Row)行是將若干控件構成水平分布的一個組件。行的類型是row。有alignment、children_alignment、children_fixed_height、children_fixed_width、fixed_height、fixed_width、height、label、width9個屬性。

圖12-14行圖12-14所示行的定義如下::row{:toggle{label="縱向";key="dir";}:edit_box{label="W(mm)=";mnemonic="W";key="w";value=420;}:edit_box{label="H(mm)=";mnemonic="H";key="h";value=297;}}第12章對話框設計清華CAD二次開發(fā)LISP6.加框行(BoxedRow)加框行就是加了一個矩形框的行。加框行的類型是boxed_row。有alignment、children_alignment、children_fixed_height、children_fixed_width、fixed_height、fixed_width、height、label、width9個屬性。如果將圖12-14所示行的定義的第一行":row{"改為":boxed_row{label="圖紙幅面";",即可定義一個加框行,見圖12-15。圖12-15加框行第12章對話框設計清華CAD二次開發(fā)LISP7.互鎖行(RadioRow)若干個互鎖按鈕組成的行即為互鎖行?;ユi行的類型是radio_row。有alignment、children_alignment、children_fixed_height、children_fixed_width、fixed_height、fixed_width、height、label、width9個屬性。互鎖行中只能有一個選鈕的值為1。圖12-16所示互鎖行的定義如下::radio_row{key="size";:radio_button{label="A&0";key="a0";}:radio_button{label="A&1";key="a1";}:radio_button{label="A&2";key="a2";}:radio_button{label="A&3";key="a3";value=1;}:radio_button{label="A&4";key="a4";}:radio_button{label="A&5";key="a5";}}圖12-16互鎖行第12章對話框設計清華CAD二次開發(fā)LISP8.加框互鎖行(BoxedRadioRow)加框互鎖行就是加了一個矩形框的互鎖行。加框互鎖行的類型是boxed_radio_row。有alignment、children_alignment、children_fixed_height、children_fixed_width、fixed_height、fixed_width、height、label、width9個屬性。如果將圖12-16所示互鎖行的定義的第一行":radio_row{"改為":boxed_radio_row{label="幅面規(guī)格";",即可定義一個加框互鎖行,見圖12-17。

圖12-17加框互鎖行第12章對話框設計清華CAD二次開發(fā)LISP9.對話框(dialog)對話框本身也可以看作是一種控件,它是對話框的主體,不能單獨使用,且至少要有一個確認(OK)或取消(Cancel)按鈕。它的類型是dialog,有initial_focus、label、value3個屬性。標簽是對話框的標題。屬性value也可以作為標題,這樣的標題在程序運行時可以被改變。initial_focus用于指定初始聚焦的控件。見右圖所示對話框及以下程序代碼:

sample:dialog{label="簡單的對話框實例";:text{label="祝您成功!";}:button{key="accept";label="確認";簡單的對話框實例

is_default=true;fixed_width=true;alignment=centered;}}第12章對話框設計清華CAD二次開發(fā)LISP12.2.3裝飾性和信息類控件裝飾性和信息類控件無行為動作,也不能被選擇,主要用于顯示信息、加強視覺效果或協(xié)助對話框布局。1.圖像(Image)圖像是在一個矩形區(qū)域內顯示矢量圖形、色彩填充塊等的控件。它的類型是image。有alignment、aspect_ratio、color、fixed_height、fixed_width、height、is_enabled、is_tab_stop、key、mnemonic、width11個屬性。圖像的值是點取圖像時的位置,通過AutoLISP程序可以獲取該位置,從而根據(jù)這些位置設計相應的動作。必須指定圖像的width、height或二者之一和aspect_ratio屬性。圖像的內容由AutoLISP程序確定。第12章對話框設計清華CAD二次開發(fā)LISP圖12-18所示圖像的定義如下::image{width=30;aspect_ratio=0.6;key="rect";color=graphics_background;}圖12-18圖像

注意:圖像的內容由AutoLISP程序確定。第12章對話框設計清華CAD二次開發(fā)LISP2.文本(Text)文本控件通常用于顯示提示或警告信息。文本的類型是text。有alignment、fixed_height、fixed_width、height、is_bold、key、label、value、width9個屬性。屬性label和value都可以存放用戶要顯示的信息,且外觀相同。但是,label存放的信息是不變的,value存放的信息可以由AutoLISP程序賦以新的內容。若label和value同時存放了某些信息時,label的信息不予顯示。例12-2定義了用屬性label存放顯示信息的對話框,外觀見圖12-19?!纠?2-2】用屬性label存放顯示信息的對話框。iwarn1:dialog{label="警告信息";:text{label="選取的對象不是直線,請重新選擇!";}ok_cancel;}圖12-19文本第12章對話框設計清華CAD二次開發(fā)LISP

3.部分文本(text_part)部分文本的類型是text_part,只有l(wèi)abel一個屬性。單獨的部分文本與只含label屬性的文本(Text)等效。多個部分文本可以組成單行的文本或段落,彌補了文本(Text)只能單行的不足,例12-3定義了顯示兩行信息的對話框,外觀見圖12-20?!纠?2-3】定義多行文本的對話框。warn2:dialog{label="警告信息";:text_part

{label="選取的對象不是直線,";}:text_part

{label="請重新選擇!";}

ok_cancel;}圖12-20部分文本第12章對話框設計清華CAD二次開發(fā)LISP4.串聯(lián)(Concatenation)

串聯(lián)的類型是Concatenation,沒有屬性,它的作用是把多個部分文本組成單行的文本。例12-4是將兩個部分文本組成單行的文本的實例,結果見圖12-21。//例12-4將兩個部分文本組成單行的文本。Warn3:dialog{label="警告信息";:concatenation

{:text_part{label="選取的對象不是直線,";}:text_part{label="請重新選擇!";}}ok_cancel;}圖12-21串聯(lián)后的部分文本第12章對話框設計清華CAD二次開發(fā)LISP5.段落(Paragraph)段落的作用是把多個部分文本組成段落,它的類型是paragraph,沒有屬性。例12-5是將三個部分文本組成一個段落的實例,結果見圖12-22。warn:dialog{label="警告信息";:paragraph{:concatenation{:text_part{label="選取的對象不是直線,";}:text_part{label="請重新選擇!";}}:text_part{label="用單點方式選擇直線!";}}ok_cancel;}圖12-22段落文本第12章對話框設計清華CAD二次開發(fā)LISP6.間隔(Spacer、Spacer_0、Spacer_1)間隔(Spacer)也稱空白襯墊,是一種特殊的控件,它具有不可見的大小和對齊方式,用來調整其它一些控件之間的間隔。如果不用間隔,系統(tǒng)將采用均勻的布局,因此,間隔只用在需要局部調整控件間隙的地方。間隔控件的類型是spacer,有alignment、fixed_height、fixed_width、height、width5個屬性。

Spacer_0和Spacer_1是AutoCAD定義的具體控件。Spacer_0是Spacer的width、height為0的特例,Spacer_1是Spacer的width、height為1的特例。Spacer_0、Spacer_1可直接引用。以圖12-23為例,前4行每行是具有固定寬的3個按鈕。底行最寬,它確定了所有的行寬。第一行沒有插入間隔,這3個按鈕的兩端與底行對齊,且均勻分布。第二行插入間隔Spacer_0,Spacer_0雖然沒有寬度,但它參與等分底行大于該行的間隔,或者認為該行增加了一個寬度為0的按鈕。第三行插入間隔Spacer_1,相當于增加了一個寬度為1的按鈕,再均勻分布。第四行插入寬度為4的間隔Spacer,相當于增加了一個寬度為4的按鈕,再均勻分布。該對話框的定義見例12-6。第12章對話框設計清華CAD二次開發(fā)LISP圖12-23用spacer、spacer_0、spacer_1調整控件間的間隙

Spacer_0Spacer_1Spacer寬度=4

【例12-6】用spacer、spacer_0、spacer_1調整控件間的間隙spcr:dialog{label=“調整間隔實驗”;:row{//沒有插入間隔

:button{label="A0";key="a0";fixed_width=true;}:button{label="A1";key="a1";fixed_width=true;}:button{label="A2";key="a2";fixed_width=true;}}第12章對話框設計清華CAD二次開發(fā)LISP:row{spacer_0;//插入間隔Spacer_0:button{label="B0";key="b0";fixed_width=true;}:button{label="B1";key="b1";fixed_width=true;}:button{label="B2";key="b2";fixed_width=true;}}:row{spacer_1;//插入間隔Spacer_1:button{label="C0";key="c0";fixed_width=true;}:button{label="C1";key="c1";fixed_width=true;}:button{label="C2";key="c2";fixed_width=true;}}第12章對話框設計清華CAD二次開發(fā)LISP:row{:spacer{//插入寬度為4的間隔Spacerwidth=4;fixed_width=true;}:button{label="D0";key="d0";fixed_width=true;}:button{label="D1";key="d1";fixed_width=true;}:button{label="D2";key="d2";fixed_width=true;}}ok_cancel_help_info;}第12章對話框設計清華CAD二次開發(fā)LISP12.2.4AutoCAD預定義的控件

AutoCAD不僅預定義了25種控件的類型,還定義了以下8個最常用的控件。定義對話框時,可直接使用這些控件,但是在編寫AutoLISP驅動程序時,必須要準確地使用其關鍵字(大小寫字母不等價)。1.ok_only(確認)按鈕單個的OK按鈕,關鍵字為"accept"。用于確認施加在對話框上的操作。2.ok_cancel(確認和取消)按鈕

OK和Cancel兩個按鈕組成的行,OK按鈕的關鍵字同前,Cancel按鈕的關鍵字為"cancel"。Cancel按鈕用于放棄施加在對話框上的操作。3.errtile(出錯信息)控件

Errtile屬于Text類型的控件,其標簽為空,關鍵字為"error"。顯示該控件屬性value的內容。屬性value的值由AutoLISP程序確定。第12章對話框設計清華CAD二次開發(fā)LISP【例12-7】定義圖12-24所示出錯信息的對話框的源代碼和AutoLISP驅動程序。//用DCL定義對話框,文件名為12-7.dcl,存放在d盤的example\dcl目錄下。error:dialog{label="出錯信息";

errtile;

ok_only;

}圖12-24出錯信息對話框;用AutoLISP驅動對話框的程序,文件名為12-7.lsp。(defunc:erdlg()(if(<(setqid(load_dialog"d:example\\dcl\\12-7"))0)(exit))(if(not(new_dialog"error"id))(exit))(set_tile"error""長度必須大于0!")(action_tile"accept""(done_dialog)")(start_dialog)(unload_dialogid)(princ))第12章對話框設計清華CAD二次開發(fā)LISP4.ok_cancel_help(確認、取消和幫助)控件

OK、Cancel和Help三個按鈕組成的行,OK、Cancel按鈕的關鍵字同前,Help按鈕的關鍵字為"help"?!纠?2-8】定義圖12-25所示含有"OK"、"Cancel"和"Help"三個按鈕的對話框的源代碼和AutoLISP驅動程序。//用DCL定義對話框,文件名為12-8.dcl,存放在d盤的example\dcl目錄下。hlp:dialog{label="了解直線命令的用法";

ok_cancel_help;}圖12-25含有ok_cancel_help控件的對話框

第12章對話框設計清華CAD二次開發(fā)LISP;用AutoLISP驅動對話框的程序,文件名為12-8.lsp。(defunc:hlpdlg()(setqid(load_dialog"d:\\example\\12-8.dcl"))(if(<id0)(exit))(if(not(new_dialog"hlp"id))(exit))

(action_tile"help""(help\"\"\"line\")");定義help按鈕的活動是調用AutoLISP的help函數(shù),了解直線命令的用法。

(action_tile"accept""(done_dialog)")(action_tile"cancel""(done_dialog)")(start_dialog)(unload_dialogid)(princ))第12章對話框設計清華CAD二次開發(fā)LISP5.ok_cancel_help_errtile(確認、取消、幫助和出錯)控件該控件為OK、Cancel和Help共3個按鈕組成的行,出錯信息寫在該行的下面。這4個控件的關鍵字同前。控件errtile需要在AutoLISP驅動對話框程序中用set_tile函數(shù)為其屬性value賦值,例如:

(set_tile"error""無效的輸入")第12章對話框設計清華CAD二次開發(fā)LISP//定義ok_cancel_help_errtile對話框,文件名為error.dclerror:dialog{label="出錯信息";

ok_cancel_help_errtile;}(defunc:erdlg();AutoLISP驅動程序

(if(<(setqid(load_dialog"d:\\example\\dcl\\error"))0)(exit))(if(not(new_dialog"error"id))(exit))(set_tile"error""無效的輸入")(action_tile"accept""(done_dialog)")(start_dialog)(unload_dialogid)(princ))第12章對話框設計清華CAD二次開發(fā)LISP6.ok_cancel_help_info(確認、取消、幫助和信息)控件該控件為OK、Cancel、Help和info四個按鈕組成的行,OK、Cancel和Help的關鍵字同前。info按鈕的關鍵字為"info",需要在AutoLISP驅動程序定義info按鈕的活動,比如,彈出一個用text控件為主的顯示一些信息的對話框。

第12章對話框設計清華CAD二次開發(fā)LISP12.3控件的屬性控件的外觀和功能是由該控件的屬性確定的。屬性如同程序中的變量,具有名字和值。屬性的值有整型、實型和字符串類型,有的屬性值只能是預定義的保留字。實數(shù)的小數(shù)點前必須有數(shù)字,例如".1"是錯的,應為"0.1"。字符串是由雙引號括起的文本,與AutoLISP一樣,用"\"做轉義符。預定義的保留字有true、false、left、centered、right、top和bottom,它們必須小寫。AutoLISP程序在運行中可以改變控件的一些屬性??丶念愋筒煌鋵傩缘臄?shù)量也不同。有些屬性在所有的控件中的含義是相同的,有些屬性在不同的控件中含義也不同。AutoCAD為用戶預定義了35個屬性。第12章對話框設計清華CAD二次開發(fā)LISP按字母順序依次是:1.action

確定控件的活動,活動是是用雙引號括起的AutoLISP表達式或函數(shù)。表達式中不能含有AutoCAD的命令。當選中該控件時,執(zhí)行相應的AutoLISP表達式或函數(shù)。AutoLISP驅動程序可以設置控件的一些屬性,且覆蓋DCL定義時的該屬性。相關的控件有:button、edit_box、image、image_button、list_box、popup_list、radio_button、slider、toggle。默認值:無2.alignment

確定控件自身的定位方式。列類型的控件可選left(左對齊)、centered(中間對齊)和right(右對齊);行類型的控件可選top(頂對齊)、centered(中間對齊)和bottom(底對齊)。相關的控件有:全部控件。默認值:列類型控件為left,行類型控件為centered第12章對話框設計清華CAD二次開發(fā)LISP3.allow_accept

若該屬性的值為true,按下接受鍵(如Enter鍵),就如同單擊了默認按鈕(is_default為true的按鈕)。相關的控件有:edit_box、image_button、list_box

默認值:false4.aspect_ratio

圖像控件的寬與高之比,與寬、高之一確定圖像控件的大小。若該屬性的值為零,則默認為將圖像控件調整為最合適的寬與高之比。相關的控件有:image、image_button

默認值:無5.big_increment

確定滑動條最大增量的整數(shù)值,取值范圍在屬性min_value和屬性max_value之間。相關的控件有:slider

默認值:整個范圍的1/10。第12章對話框設計清華CAD二次開發(fā)LISP6.children_alignment

與屬性alignment的功能基本相同,區(qū)別在于它只針對子控件組群而言,確定組群內部控件的定位方式,控件自身的alignment屬性優(yōu)先于該屬性。相關的控件有:boxed_column、boxed_radio_column、boxed_radio_row、boxed_row、column、radio_column、radio_row、row

默認值:列類型控件為left,行類型控件為centered7.children_fixed_height

功能與fixed_height相同,不過它是控件組群的屬性,僅作用于組群內所有的控件并作為它們的默認值,低于屬性fixed_height的優(yōu)先級。相關的控件有:boxed_column、boxed_radio_column、boxed_radio_row、boxed_row、column、radio_column、radio_row、row

默認值:false第12章對話框設計清華CAD二次開發(fā)LISP8.children_fixed_width

功能與fixed_width相同,不過它是控件組群的屬性,僅作用于組群內所有的控件并作為它們的默認值,默認值為flase,低于屬性fixed_width的優(yōu)先級。相關的控件有:boxed_column、boxed_radio_column、boxed_radio_row、boxed_row、column、radio_column、radio_row、row

默認值:false9.color

確定圖像背景、矢量或填充塊的顏色。普通顏色與AutoCAD的標準顏色名(red、yellow等)和顏色號所定義的顏色含義相同,此外還有表12-1所示的特殊顏色。相關的控件有:image、image_button。默認值:7(白色)第12章對話框設計清華CAD二次開發(fā)LISP表12-1特殊的顏色

顏色值預定義含義

-2Graphics_background當前圖形屏幕的背景色

-15Dialog_background當前對話框背景色

-16Dialog_foreground當前對話框前景色

-18Dialog_lineCurrent當前對話框線條顏色10.edit_limit

確定編輯框可容納的最多字符數(shù),最大值為256。相關的控件有:edit_box。默認值:132第12章對話框設計清華CAD二次開發(fā)LISP11.edit_width

確定編輯框的寬度,以字符為單位。若該屬性的值默認為0,編輯框的寬度將是不固定的,布局時可自動擴充到整個可用空間。相關的控件有:edit_box、popup_list

默認值:擴充到整個可用空間。12.fixed_height

當該屬性的值為true時,屬性height有效,否則做相關調整。相關的控件有:全部控件。默認值:flase13.fixed_width

當該屬性的值為true時,屬性width有效,否則做相關調整。相關的控件有:全部控件。默認值:flasefixed_width=true;width=10;fixed_width=false;width=10;第12章對話框設計清華CAD二次開發(fā)LISP12.fixed_width_font

當該屬性的值為true時,對于列表框或下拉列表框內的字符,在行距、列距不變的情況下減小字符之間的間隔(字符盡可能地大)。相關的控件有:list_box、popup_list。默認值:flase15.height

確定控件的最小高度,數(shù)值類型是整數(shù)或實數(shù)型。單位為屏幕字符的最大高度。如果屬性fixed_height的值為ture,height是控件的實際高度,否則,在自動布局時,控件的實際高度會超出該值。通常,不需指定該值,系統(tǒng)能自動采用合適的數(shù)值(圖像及圖像按鈕除外)。相關的控件有:全部控件。默認值:無16.initial_focus

確定對話框內初始被聚焦的控件。相關的控件有:dialog。默認值:無Flaseture第12章對話框設計清華CAD二次開發(fā)LISP17.is_bold

若該屬性為true,該控件的字符用黑體顯示。相關的控件有:text。默認值:false18.is_cancel

若該屬性為true,所選中的按鈕與按取消鍵(如Esc)的作用相同。對話框中只能有一個按鈕的is_cancel為true,且點取該按鈕后,取消施加在對話框上的操作并終止對話框。相關的控件有:button。默認值:false19.is_default

若該屬性為true,單擊該按鈕與按接收受鍵(如Enter)的作用相同。對話框中只能有一個按鈕將該屬性設置為true。相關的控件有:button。默認值:false第12章對話框設計清華CAD二次開發(fā)LISP20.is_enabled

若該屬性為true,控件有效,否則,控件失效(變灰)。相關的控件有:button、edit_box、image、image_button、list_box、popup_list、radio_button、toggle。默認值:true21.is_tab_stop

確定控件是否可以用"Tab"選擇聚焦,若該屬性為false時,按Tab鍵時,將跳過該控件到下一個控件。相關的控件有:button、edit_box、image、image_button、list_box、popup_list、radio_button、toggle。默認值:trueflaseture第12章對話框設計清華CAD二次開發(fā)LISP22.key

確定控件的關鍵字,關鍵字是控件的標識,在一個對話框中的關鍵字必須是唯一的。關鍵字的值為字符串,且大小寫不等價。AutoLISP程序根據(jù)控件的關鍵字施加相應控件的操作。相關的控件有:Button、edit_box、image、image_button、list_box、popup_list、radio_button、slider、text、toggle。默認值:無23.Label

確定控件的標簽,label的值是一個由雙引號括起來的字符串。它的顯示位置取決于控件的類型。例如,對話框的標簽是顯示在頂部的標題,按鈕的標簽顯示在按鈕上,編輯框的標簽顯示在編輯框的左邊,切換開關、互鎖按鈕的標簽在顯示開關按鈕的右邊,行、列的標簽顯示在行、列的左上方。相關的控件有:boxed_column、boxed_radio_column、boxed_radio_row、boxed_row、button、dialog、edit_box、list_box、popup_list、radio_button、slider、text、text_part、toggle。默認值:無第12章對話框設計清華CAD二次開發(fā)LISP24.layout

確定slider(滑動條)的方位是horizontal(水平)還是vertical(垂直),默認值為horizontal。相關的控件有:slider。默認值:horizontal25.list

確定列表框或下拉列表框內的初始內容(字符串),行之間用"\n"分隔,行內用制表符"\t"分隔。相關的控件有:list_box、popup_list。默認值:無26.max_value

確定滑動條返回的最大值,是-32768~32767之間的整數(shù)。相關的控件有:slider。默認值:10000第12章對話框設計清華CAD二次開發(fā)LISP27.min_value

確定滑動條返回的最小值,是-32768~32767之間的整數(shù)。相關的控件有:slider。默認值:028.mnemonic

定義控件的熱鍵,即助記符。助記符是控件標簽中帶下劃線的字符。也可以在屬性label中用"&"定義助記符。若助記符是為控件組群設置的,則焦點自動落在第一個is_tab_stop屬性為true的控件上。相關的控件有:button、edit_box、image、list_box、popup_list、radio_button、slider、toggle。默認值:無29.multiple_select

若該屬性的值為true,允許在列表中選擇多個選項。相關的控件有:list_box。默認值:false第12章對話框設計清華CAD二次開發(fā)LISP30.password_char

確定用于屏蔽用戶輸入的字符,即用該字符代替實際輸入的字符顯示在編輯框內,達到為輸入內容保密的目的。相關的控件有:edit_box

默認值:無31.small_increment

確定滑動條最小增量的整數(shù)值,取值范圍在min_value和max_value之間。相關的控件有:slider

默認值:整個范圍的1/100。32.tabs

確定列表框或下拉列表框內的制表符"\t"停止的位置(字符個數(shù))。相關的控件有:list_box、popup_list

默認值:無第12章對話框設計清華CAD二次開發(fā)LISP33.tab_truncate

若該屬性的值為true,超出tabs屬性指定的字符被截掉(從第tabs個字符起被截掉)。相關的控件有:list_box、popup_list

默認值:false34.value

控件初始狀態(tài)時的值。值的含義由控件類型所決定。例如,對話框的value可以作為標題,編輯框的value作為它的初始值,互鎖按鈕或切換開關的value為1則表示處于打開的狀態(tài),列表或下拉列表的value確定了初始被選中的狀態(tài)。該屬性的值可通過AutoLISP程序被訪問、設置或修改。相關的控件有:dialog、edit_box、image、list_box、popup_list、radio_button、slider、text、toggle。默認值:無第12章對話框設計清華CAD二次開發(fā)LISP35.width

確定控件的最小寬度,數(shù)值類型是整數(shù)或實數(shù)型。寬度單位為大小寫字符的平均寬度。如果屬性fixed_width的值為ture,width是控件的實際寬度,否則,在自動布局時,控件的實際寬度會超出該值。通常,不需特別指定該值,系統(tǒng)能自動采用合適的數(shù)值(圖像及圖像按鈕除外)。相關的控件有:全部控件。默認值:無第12章對話框設計清華CAD二次開發(fā)LISP12.4對話框設計的原則與規(guī)范設計一個對話框除了考慮它的功能外,還應該考慮它的外觀和是否便于操作,需要遵循一定的設計準則。12.4.1一般原則1.美觀對話框的外觀是非常重要的。雜亂無章的對話框會使操作人員難以操作。因此,必須從用戶的觀點出發(fā),設計既美觀又實用的對話框。2.便于操作用戶關心的是控件的位置和使用是否便于操作。經常用到的控件,應盡可能安排在較為突出的位置。相關數(shù)據(jù)的控件,例如點的X、Y、Z坐標,應盡量位于相鄰的位置。3.語言文字盡管對話框可采用圖形界面,但大部分的信息還是需要文字描述的,如對話框的標題,按鈕的標簽等。因此文字說明既要準確,又要便于理解。

第12章對話框設計清華CAD二次開發(fā)LISP4.控件設計一致性對話框的樣式、風格不僅在具體的應用程序內部保持一致,而且應該與相關的應用程序保持一致,應盡量與AutoCAD系統(tǒng)的對話框風格一致,以便操作人員容易掌握。圖12-26插入圖塊對話框5.便于操作控制對話框相對于命令行的優(yōu)點是操作順序不受限制,例如圖12-26所示插入圖塊的對話框,圖塊的名字、插入基點、比例、旋轉角度的輸入順序是隨意的。但有些數(shù)據(jù)存在著一定的制約關系,例如圖塊的插入基點、比例、旋轉角既可以用鼠標在屏幕上確定,也可以在相應的編輯框輸入數(shù)據(jù),但不需要同時采用這兩種方式。利用切換開關的狀態(tài),即可很好地解決這個問題。若打開切換開關,相應的編輯框被禁用(變灰),就只能采用通過鼠標在屏幕上確定的方法。第12章對話框設計清華CAD二次開發(fā)LISP

若嵌套式地打開多個對話框,應采用層疊方式,保留已打開的對話框,且最后打開的對話框位于最上層。這樣便于了解這些對話框之間的關聯(lián)狀況,也表明每個對話框來自何處,歸于何處。6.實時反饋必須確保操作人員實時看到施加到對話框上的每一步操作,例如數(shù)據(jù)更新、顏色改變。當某一選擇排斥另外幾個選擇時,被排斥的控件應立即變灰并禁止使用。7.寬容性對話框應允許操作人員犯錯誤,例如輸入了類型錯誤或超出范圍的數(shù)據(jù),不要因錯誤的輸入導致系統(tǒng)退出或崩潰,例如,通過errtile控件顯示出錯信息,通過alert函數(shù)用報警框報告錯誤的性質,向操作人員指出正確的操作。第12章對話框設計清華CAD二次開發(fā)LISP8.提供幫助

"幫助"對操作人員至少在心理上是一個強大的支持,同時在線幫助對操作人員的確起著重要的指導作用。因此,應用程序的主對話框應設置Help按鈕。在多數(shù)情形下,Help按鈕可以直接調用acad_help.dlg來顯示標準的AutoCAD的Help對話框。9.測試在構造對話框時,每增加一個功能應該進行測試,這樣可確保對話框預期的布局和語法上的正確性。而且較小的改變即使出現(xiàn)錯誤也容易跟蹤和改正。

第12章對話框設計清華CAD二次開發(fā)LISP12.4.2通用規(guī)范1.布局將對話框內的控件按邏輯關系組成加框行或加框列,相關的編輯框或列表框應水平或垂直地對齊,這樣便于操作人員按照從左至右或從上到下的方向進行操作,也便于用Tab鍵在控件之間切換。同樣,行或列組件也應水平或垂直方向對齊,在組群之間不要保留太大的間隔,必要時應優(yōu)先考慮向右方擴展。2.對話框的大小和位置對話框的大小應以能簡潔明了地顯示必要的信息為宜。如果對話框尺寸可能超出作圖區(qū)域時,應考慮是否將單個的對話框分解為嵌套的多個對話框。對話框的位置應該在作圖區(qū)域的中心,這也是對話框的默認位置。

3.控件的禁止使用根據(jù)特定的條件,如果不再需要某些控件,應立即將這些控件設置為失效的狀態(tài),這樣可以避免無效的輸入。對于這些被禁用的控件,不能因為現(xiàn)在被禁用而改變其原有的數(shù)值。第12章對話框設計清華CAD二次開發(fā)LISP4.對話框嵌套對于嵌套的對話框,應做到子對話框小于父對話框。嵌套深度一般不要超過三層,除非第四層是報警框。父對話框按鈕標簽末尾的字符應為"…",表示啟動子對話框。5.隱藏對話框隱藏對話框時,對話框按鈕標簽末尾的字符應為"<",表示隱藏對話框進行交互操作。6.默認值盡可能為控件提供默認值,默認值應是最常用到的或最合理的。也可以將該控件在上一次運行時的值作為控件的默認值。第12章對話框設計清華CAD二次開發(fā)LISP7.鍵盤輸入應該將控件設置為可用Tab鍵在控件之間切換聚焦的狀態(tài)。如果操作平臺支持助記符,就應盡可能為每一個控件定義供助記符。8.顏色推薦使用AutoCAD的標準顏色。9.標準化盡可能使用AutoCAD預定義的控件類型和"OK"、"Cancel"等標準控件來構造對話框。第12章對話框設計清華CAD二次開發(fā)LISP12.4.3預定義控件的使用規(guī)范1.按鈕(Button)

按鈕的標簽應明確表達其動作效果。與按鈕關聯(lián)的動作應立即產生且為可視的。如標簽末尾為"…"的按鈕表示將啟動子對話框,標簽末尾為"<"的按鈕表示將隱藏對話框。2.編輯框(Editbox)

編輯框的標簽應以":"結束。編輯框的寬度應與輸入數(shù)據(jù)的平均長度相當。如果難以確定編輯框的寬度時,可設置用于輸入數(shù)值的編輯框的寬度為10,用于輸入字符的編輯框的寬度為20。如果限制了輸入字符的數(shù)量,應該在編輯框的鄰近位置用文本(text)加以說明。3.列表(Listbox)(1)列表的標簽應明確的說明列表的內容。(2)列表框的寬度應不小于該表其中最長的表項,因為列表框不象編輯框那樣,字符可以水平方向滾動。(3)表項的順序應按字母順序排列。(4)當表項的長度固定且項數(shù)很少時,可考慮用互鎖列來代替。

第12章對話框設計清華CAD二次開發(fā)LISP4.下拉列表(1)下拉列表的標簽應以":"結尾。為了便于布局,可以省去左邊的標簽而改用文本控件標注在右邊,不過此時就不能用助記符聚焦該下拉列表。(2)下拉列表不宜過長,不宜超過16項。5.圖像按鈕和圖像控件(1)相同的圖示內容不管出現(xiàn)在圖像按鈕還是圖像中,它的含義必須一致。(2)作為選擇用途的圖像按鈕,應該用簡短的文字補充說明。6.互鎖按鈕及互鎖選行或互鎖選列互鎖列美觀且易使用(鼠標上下移動距離?。?,故推薦優(yōu)先使用;互鎖行適用于按鈕數(shù)量較少(2~4)的場合。7.滑動條(slider)

應根據(jù)滑動條的長度及取值范圍來設置滑動條的增量??梢栽鲈Otext控件顯示滑動條的當前值。最好將滑動條與編輯框互聯(lián),既可以使之互動,又可以在編輯框看到滑動條的當前值。

第12章對話框設計清華CAD二次開發(fā)LISP8.組群框組群框是指加框的列或行。對于彼此相關的控件,應考慮組成一個組群框。標簽應明確指出該組群的特征。不要濫用組群框,例如加框列的外層還有組群框或者為單獨的按鈕增加組群框。9.文本文本可以作為控件標簽和值的補充說明,也可用來顯示狀態(tài)、警告或錯誤信息;但應將其放置到合理的位置。10.切換開關盡管切換開關不象互鎖按鈕那樣是互相排斥的,但是當它們同屬于某一主題時,最好用組群框將其組合,并用標簽來說明主題。當切換開關用來"激活"或"禁用"其它控件時,應將其放在醒目的位置,如放在相應控件的右邊或組群框的左上角。第12章對話框設計清華CAD二次開發(fā)LISP12.5對話框控制語言對話框控制語言(DCL)是定義對話框的語言。12.5.1對話框文件對話框文件是用DCL語言定義對話框的文件,是ASCII碼的文本文件。文件的擴展名為".dcl",因此也被稱做DCL文件。1.base.dcl與acad.dcl文件這是兩個非常重要的對話框文件,它們在AutoCAD的support子目錄下。(1)BASE.DCL

為用戶預定義了Button、Editbox等基本控件、Row、Column等組件和ok_cancel、ok_cancel_help_info等標準控件。該文件是所有其它DCL文件的基礎,被所有其它的DCL文件自動引用,因此不要修改該文件。(2)ACAD.DCLACAD.DCL文件定義了AutoCAD系統(tǒng)的大部分標準對話框。是編寫DCL文件的很好的學習參考資料。用戶不應直接引用ACAD.DCL文件,如果需要創(chuàng)建類似的對話框,可將ACAD.DCL中的相應內容復制到自己定義的DCL文件中。該文件與AutoCAD系統(tǒng)密切相關,因此不要修改該文件。第12章對話框設計清華CAD二次開發(fā)LISP2.用戶定義的對話框文件用戶定義的對話框文件可以含以下三部分內容:(1)包含其它DCL文件。格式為:@include"路徑\\DCL文件名",必須指定DCL文件的全名和擴展名,例如:@include"test.dcl",如果未指明路徑,系統(tǒng)在當前目錄中搜索。圖12-27所示是DCL層次性引用結構。其中user1.dcl和user2.dcl彼此獨立,而user3.dcl引用了定義在user1.dcl文件中的控件。圖12-27DCL文件層次性引用結構(2)典型控件及行、列組合控件的定義。(3)對話框定義。一個對話框文件可定義多個對話框。

第12章對話框設計清華CAD二次開發(fā)LISP12.5.2DCL文件的結構圖12-28所示為繪制圓的對話框,它有兩個行(row);第一行是由圖像控件和加框列組件組成的,第二行為ok_cancel組合控件;加框列是由三個編輯框組成的。該對話框的結構如圖12-29所示。

圖12-28繪制圓對話框圖12-29繪制圓對話框的結構圖

從圖12-29可以看到,對話框是一個樹型結構,對話框是這棵樹的樹根,行、列組件是樹枝,基本控件和組合控件是樹葉。

第12章對話框設計清華CAD

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論