




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第7章
建立應(yīng)用程序清華大學(xué)的《CAD二次開發(fā)》電子教LIS共44頁,您現(xiàn)在瀏覽的是第1頁!AotuCAD既可以將直接加載的AutoLISP源代碼解釋執(zhí)行,也可以通過編譯器先將AutoLISP源代碼編譯為可執(zhí)行程序,然后加載執(zhí)行。前者的優(yōu)點(diǎn)是可隨時(shí)測(cè)試或修改源代碼,可以利用所有的調(diào)試程序的工具。后者的優(yōu)點(diǎn)是提高了執(zhí)行速度、對(duì)源代碼保密。如果確認(rèn)已加載過的AutoLISP源代碼運(yùn)行正常,則應(yīng)將該源代碼編譯為可執(zhí)行的機(jī)器代碼文件。該文件的擴(kuò)展名為".fas",是只有機(jī)器才能認(rèn)識(shí)的目標(biāo)文件。這樣,不僅提高了程序的加載和運(yùn)行速度,也起到了保護(hù)源代碼的作用。VisualLISP還可生成更復(fù)雜的擴(kuò)展名為".vlx"的可執(zhí)行文件。該文件是包括已編譯的AutoLISP代碼和dcl、vba等資源文件,是一個(gè)打包的應(yīng)用程序。VisualLISP可以用vlisp-pile函數(shù)編譯單個(gè)的AutoLISP文件,也可以用"生成應(yīng)用程序向?qū)?,將多個(gè)AutoLISP文件編譯成單個(gè)的".fas"和".vlx"文件。清華大學(xué)的《CAD二次開發(fā)》電子教LIS共44頁,您現(xiàn)在瀏覽的是第2頁!7.1通過VisualLISP_pile函數(shù)編譯單個(gè)文件該函數(shù)的調(diào)用格式為:(vlisp-pile'mode"filename"[out-filename])其中:mode為編譯的模式、filename為源文件的名字、out-filename為編譯后輸出的".fas"類型的執(zhí)行文件的名字。1.選擇編譯模式
mode參數(shù)指定編譯模式,它可以是以下三種編譯模式之一:(1)st標(biāo)準(zhǔn)編譯模式標(biāo)準(zhǔn)編譯模式可以生成最小的執(zhí)行文件,它適合于只包括單個(gè)文件的程序。(2)lsm優(yōu)化并間接鏈接(3)lsa優(yōu)化并直接鏈接優(yōu)化選項(xiàng)可使生成的的編譯文件效率更高,它適合于較大而且復(fù)雜的程序。優(yōu)化的基本功能如下:清華大學(xué)的《CAD二次開發(fā)》電子教LIS共44頁,您現(xiàn)在瀏覽的是第3頁!VisualLISP默認(rèn)源文件的擴(kuò)展名為".lsp"。3.確定編譯器生成的輸出文件名如果未指定輸出文件名,編譯器生成的文件和源文件同名同路徑,擴(kuò)展名為".fas"。例如,(vlisp-pile'st"d:/user/example.lsp")編譯生成的文件在"d:/user/"路徑下,文件名為"example.fas"。如果指定了輸出文件名但沒有指定輸出文件的路徑,VisualLISP將把輸出文件放在AutoCAD的安裝目錄下。例如,假定安裝目錄為"d:\autocad2006\",用表達(dá)式(vlisp-pile'st"sample.lsp""sample.fas")編譯生成的sample.fas,在"d:\autocad2006\"路徑下。通常,應(yīng)該指定輸出文件的完整路徑,可以省略輸出文件的擴(kuò)展名。例如:(vlisp-pile'st"d:/user1/example1""d:/user2/example2")這樣可以保證將輸出文件放到指定的目錄下。清華大學(xué)的《CAD二次開發(fā)》電子教LIS共44頁,您現(xiàn)在瀏覽的是第4頁!如果編譯器檢查到錯(cuò)誤,將在編譯輸出窗口顯示出錯(cuò)信息并停止編譯。如果編譯器遇到重定義現(xiàn)有的AutoLISP函數(shù)或?yàn)槭鼙Wo(hù)的符號(hào)賦值,將會(huì)發(fā)出警告消息。當(dāng)編譯器顯示警告和出錯(cuò)信息時(shí),雙擊該類信息,將自動(dòng)切換到文本編輯窗口,并亮顯含有該類出錯(cuò)信息的源程序代碼。圖7-1編譯輸出窗口
清華大學(xué)的《CAD二次開發(fā)》電子教LIS共44頁,您現(xiàn)在瀏覽的是第5頁!也可以選擇VisualLISP菜單"File""LoadFile…",通過隨后彈出的"Loadlispfile"對(duì)話框來選擇要加載的文件。(2)在VisualLISP控制臺(tái)提示下,輸入用括號(hào)括起的函數(shù)名,即可運(yùn)行該函數(shù)。運(yùn)行用LISP定義的AutoCAD命令,不能省略命令名前面的"C:"而且必須用括號(hào)括起。在AutoCAD窗口調(diào)用函數(shù)時(shí),輸入的函數(shù)名和參數(shù)用括號(hào)括起,調(diào)用LISP定義的AutoCAD命令時(shí),直接鍵入自定義的AutoCAD命令名。
(3)加載AutoLISP擴(kuò)展函數(shù)VisualLISP對(duì)AutoLISP語言進(jìn)行了擴(kuò)展,這些擴(kuò)展函數(shù)的名稱以vla-、vlax-和vlr-開頭。啟動(dòng)AutoCAD時(shí)它們不會(huì)被自動(dòng)加載。在使用這些函數(shù)之前,必須調(diào)用vl-load-函數(shù)加載這些AutoLISP擴(kuò)展函數(shù)。其格式如下:(vl-load-)
清華大學(xué)的《CAD二次開發(fā)》電子教LIS共44頁,您現(xiàn)在瀏覽的是第6頁!(1)調(diào)用應(yīng)用程序生成向?qū)腣isualLISP菜單上選擇FileMakeAplicationNewAplicationWizard,啟動(dòng)向?qū)?。VisualLISP將顯示圖7-2所示向?qū)J綄?duì)話框。圖7-2向?qū)J綄?duì)話框
清華大學(xué)的《CAD二次開發(fā)》電子教LIS共44頁,您現(xiàn)在瀏覽的是第7頁!(3)確定待建程序的位置和名稱在圖7-3所示應(yīng)用程序路徑對(duì)話框的ApplicationLocation編輯框填寫應(yīng)用程序所處的位置(目錄)??梢酝ㄟ^Browse(瀏覽)按鈕在目錄樹上指定應(yīng)用程序所處的位置,也可以在文本框中輸入完整的路徑名。例如:d:/user2。在ApplicationName編輯框填寫要?jiǎng)?chuàng)建的應(yīng)用程序名。例如:chilun,這樣將在d:/user2/目錄下創(chuàng)建應(yīng)用程序文件chilun.vlx和程序生成文件chilun.prv。圖7-4應(yīng)用選項(xiàng)對(duì)話框
在簡(jiǎn)單模式和專家模式下都會(huì)出現(xiàn)圖7-3所示應(yīng)用程序路徑對(duì)話框。單擊Next按鈕。彈出圖7-4所示應(yīng)用選項(xiàng)對(duì)話框。本例不打開SeparateNamespace切換開關(guān),單擊Next按鈕將彈出圖7-5所示的包含LISP文件對(duì)話框。清華大學(xué)的《CAD二次開發(fā)》電子教LIS共44頁,您現(xiàn)在瀏覽的是第8頁!(6)添加lisp源文件可以使用標(biāo)準(zhǔn)的Windows文件選取方法來選取多個(gè)文件。在圖7-6所示對(duì)話框上選取gear.lsp文件之后,單擊打開按鈕可以將該文件添加到應(yīng)用程序中,見圖7-7所示包含Lisp文件的對(duì)話框。如果想繼續(xù)添加其他類型的文件,先從下拉列表處選擇文件類型后再單擊Add按鈕。圖7-6添加lisp源文件對(duì)話框如果指定的是AutoLISP源文件,VisualLISP在打包成VLX文件前先編譯成FAS類型的文件;如果指定的是FAS類型的文件,則直接將其打包;如果指定的是PRJ類型的工程文件,則工程文件中的所有文件將根據(jù)其具體類型先編譯再打包或直接打包成VLX文件。清華大學(xué)的《CAD二次開發(fā)》電子教LIS共44頁,您現(xiàn)在瀏覽的是第9頁!應(yīng)用程序文件的加載順序和它們?cè)?LISPFilestoInclude"對(duì)話框中列出的順序相同。如果在加載時(shí)調(diào)用某函數(shù),則必須在調(diào)用該函數(shù)前定義它。在這種情況下,應(yīng)該把定義該函數(shù)的文件放在調(diào)用該函數(shù)的文件之前。選取待調(diào)整的文件名,然后點(diǎn)取下列按鈕即可。
①Top:移到列表頂端。②Up:移到上一文件之前。③Down:移到下一文件之后。④Bottom:移到列表底端。也可以先選取待調(diào)整的文件名,然后單擊鼠標(biāo)右鍵,從隨后彈出的快捷菜單上選取相應(yīng)選項(xiàng)。如果是工程文件,因其內(nèi)的源文件順序已在工程文件內(nèi)定義,只能通過修改工程文件以改變?cè)次募捻樞?。清華大學(xué)的《CAD二次開發(fā)》電子教LIS共44頁,您現(xiàn)在瀏覽的是第10頁!(7)添加資源文件通過添加資源文件對(duì)話框??梢杂锰砑釉次募念愃撇僮魈砑樱ㄒ迫ィ?duì)話框控制DCL文件、DVB文件、文本文件等資源文件。如果添加的是LISP工程文件,在該工程文件中的所有文件都將被編譯并包含到VLX文件。
圖7-9添加DCL文件對(duì)話框
清華大學(xué)的《CAD二次開發(fā)》電子教LIS共44頁,您現(xiàn)在瀏覽的是第11頁!(8)確定編譯選項(xiàng)僅在專家模式下才出現(xiàn)圖7-11所示確定編譯選項(xiàng)如果選擇了Standard,此為標(biāo)準(zhǔn)模式,將生成最小的輸出文件,它適合于只包括單個(gè)文件的程序;如果選擇了OptimizeandLink,此為優(yōu)化和鏈接模式,可使生成的的編譯文件效率更高,它適合于較大和較復(fù)雜的程序。圖7-11確定編譯選項(xiàng)對(duì)話框
本例選擇兩種模式均可,確定編譯選項(xiàng)后,單擊Next按鈕將彈出圖7-12所示的查看選項(xiàng)/編譯應(yīng)用程序?qū)υ捒颉?/p>
清華大學(xué)的《CAD二次開發(fā)》電子教LIS共44頁,您現(xiàn)在瀏覽的是第12頁!運(yùn)行應(yīng)用程序生成向?qū)ЫY(jié)束。在d:\user2路徑下,生成了chilun.prv、chilun.vlx和gear.fas文件。其中chilun.prv是包括VisualLISP創(chuàng)建應(yīng)用程序所需的程序生成文件,gear.vlx是打包的可執(zhí)行文件,gear.fas是編譯gear.lsp時(shí)生成的目標(biāo)文件。加載gear.vlx或gear.fas,在"Command:"提示下鍵入GEAR即可調(diào)用該應(yīng)用程序繪制齒輪。如果只有AutoLISP文件(源文件或目標(biāo)文件),在創(chuàng)建應(yīng)用程序時(shí),第(2)步應(yīng)選擇Simple(簡(jiǎn)單)作為向?qū)У哪J?,這樣可以省略第(4)、(7)和(8)步。清華大學(xué)的《CAD二次開發(fā)》電子教LIS共44頁,您現(xiàn)在瀏覽的是第13頁!下面通過一個(gè)實(shí)例介紹利用工程管理器管理和維護(hù)多個(gè)LISP文件的有關(guān)操作。【例7-1】定義以遞規(guī)方式繪制旋轉(zhuǎn)正六邊形的命令。正六邊形的旋轉(zhuǎn)中心pc、最大邊長(zhǎng)lmax、最小邊長(zhǎng)lmin和旋轉(zhuǎn)角alf是交互輸入的參數(shù)。正六邊形在旋轉(zhuǎn)過程中,除了最外層的正六邊形之外,每一個(gè)正六邊形的頂點(diǎn)都在前一個(gè)正六邊形的邊上,當(dāng)正六邊形的邊長(zhǎng)縮短到近似最小邊長(zhǎng)lmin時(shí),繪制結(jié)束,見圖7-13(a)。從圖7-13(b)可以看出每個(gè)正六邊形與旋轉(zhuǎn)后的下一個(gè)正六邊形的邊長(zhǎng)之間具有以下的關(guān)系:
清華大學(xué)的《CAD二次開發(fā)》電子教LIS共44頁,您現(xiàn)在瀏覽的是第14頁!文件file1.lsp的源代碼如下:(defunc:r-hexagon(/pclmaxlminalf)(setvar"cmdecho"0);關(guān)閉普通命令提示信息(setvar"blipmode"0);關(guān)閉光標(biāo)痕跡(setvar"osmode"0);關(guān)閉對(duì)象捕捉狀態(tài)(setqpc(getpoint"\n輸入正六邊形的旋轉(zhuǎn)中心:"))(setqlmax(getdistpc"\n輸入正六邊形的最大邊長(zhǎng):"))(setqlmin(getdistpc"\n輸入正六邊形的最小邊長(zhǎng):"))(setqalf(getanglepc"\n輸入正六邊形的旋轉(zhuǎn)角:"))
(hexagonpclmaxlmin0.0)
;調(diào)用遞歸方式繪制旋轉(zhuǎn)正六邊形的函數(shù)(princ);靜默退出)清華大學(xué)的《CAD二次開發(fā)》電子教LIS共44頁,您現(xiàn)在瀏覽的是第15頁!7.3.2創(chuàng)建一個(gè)工程1.創(chuàng)建一個(gè)工程文件選擇菜單ProjectNewproject,將彈出圖7-14所示的新工程對(duì)話框,此對(duì)話框用于確定新工程的路徑和文件名。例如輸入工程的名字為rh,存放在d盤的user2目錄下。
圖7-14新工程對(duì)話框
清華大學(xué)的《CAD二次開發(fā)》電子教LIS共44頁,您現(xiàn)在瀏覽的是第16頁!圖7-15所示為工程文件選項(xiàng)卡。通過按鈕指定LISP源文件的路徑,路徑下方的列表顯示了該路徑下所有的LISP文件名。選取該列表的一個(gè)或多個(gè)文件,單擊按鈕,被選的文件就會(huì)轉(zhuǎn)移到右邊的列表內(nèi)。右邊的列表顯示了該工程當(dāng)前包含的所有LISP文件名。如果選取右邊列表的一個(gè)文件,單擊按鈕,被選的文件就會(huì)從當(dāng)前的工程中移回原處。按鈕Top、Up、Down和Bottom用于排列LISP文件在列表框中的順序,該順序即為加載這些文件的順序。例如,在圖7-15所示為工程文件選項(xiàng)卡上單擊按鈕,指定LISP源文件的路徑為d盤的user1。路徑下方的列表內(nèi)顯示了user1路徑下的LISP文件名。選取該列表的文件file1和file2之后,單擊按鈕,文件file1和file2將移至右邊的列表作為rh工程的成員。單擊確定按鈕,將彈出圖7-16所示的工程窗口,名字為rh的工程創(chuàng)建完畢,同時(shí)在d盤的user2目錄下得到了名字為rh.prj的工程文件。清華大學(xué)的《CAD二次開發(fā)》電子教LIS共44頁,您現(xiàn)在瀏覽的是第17頁!:加載工程中所有經(jīng)過編譯的.fas文件。如果某些LISP文件尚未被編譯,則顯示如圖7-17所示的是否編譯這些文件的詢問信息。單擊按鈕"是",則首先編譯這些文件,然后將其加載,單擊按鈕"否",則直接加載這些LISP源文件和已經(jīng)存在的.fas文件。假定文件file1.lsp和file2.lsp尚未被編譯,單擊此按鈕,在圖7-17所示的詢問框中單擊按鈕"是",則首先編譯這兩個(gè)文件,然后加載剛生成的file1.fas和file2.fas。這時(shí)在AutoCAD的"Command:"提示下,鍵入r-hexagon命令即可繪制旋轉(zhuǎn)正六邊形。清華大學(xué)的《CAD二次開發(fā)》電子教LIS共44頁,您現(xiàn)在瀏覽的是第18頁!Edit:編輯選中的文件AddFile:打開工程特性對(duì)話框,向工程中添加文件Removefile:從工程中刪除選中的文件Load:加載所選文件的.fas文件,如果所選文件尚未被編譯,則加載其LISP源文件Loadsource:加載所選文件的LISP源文件Checksyntax:對(duì)所選的文件進(jìn)行語法檢查Touch:"處理"所選的文件。經(jīng)過"處理"的文件即使是新編譯過的,單擊圖標(biāo)時(shí)也要再次重新編譯。Arrangefiles:根據(jù)該菜單項(xiàng)的下一級(jí)菜單提供的規(guī)則對(duì)工程中的成員排序MultipleSelection:?jiǎn)螕粼摬藛雾?xiàng)可以切換否具有多選功能的狀態(tài)。若設(shè)置為多選,菜單項(xiàng)前加標(biāo)記""[Un]Selectall:沒有一個(gè)文件被選取時(shí),選取所有文件。已經(jīng)選取了一些文件時(shí),放棄選取的那些文件Closeproject:關(guān)閉當(dāng)前的工程Saveproctas:將當(dāng)前的工程另存為其他名字
清華大學(xué)的《CAD二次開發(fā)》電子教LIS共44頁,您現(xiàn)在瀏覽的是第19頁!例如,通過Project下拉列表選取工程rh,在FindWhat列表輸入hexagon,單擊Find按鈕,在圖7-20所示的查找輸出窗口中顯示了在文件file2.lsp和file1.lsp中含有源代碼hexagon的4個(gè)表達(dá)式。雙擊其中任意一個(gè)表達(dá)式,就會(huì)激活該表達(dá)式所在的文件,并且亮顯所查找的源代碼,例如hexagon處于被選狀態(tài)。
圖7-20查找輸出窗口
清華大學(xué)的《CAD二次開發(fā)》電子教LIS共44頁,您現(xiàn)在瀏覽的是第20頁!圖7-21選擇了VisualLISPproject選項(xiàng)的包含LISP文件的對(duì)話框
清華大學(xué)的《CAD二次開發(fā)》電子教LIS共44頁,您現(xiàn)在瀏覽的是第21頁!1.CompilationMode欄該欄的功能是確定設(shè)置編譯模式,它有以下兩個(gè)選項(xiàng)。l
Standar(標(biāo)準(zhǔn)):選擇標(biāo)準(zhǔn)模式時(shí),編譯器將保留函數(shù)和全局變量的符號(hào)名,因?yàn)檫@些符號(hào)可能被其他程序引用。在引用某一符號(hào)時(shí),編譯器將在符號(hào)表中查找這個(gè)符號(hào)。該模式比較適合于單個(gè)文件的程序。l
Optimize(優(yōu)化):選擇優(yōu)化模式時(shí),編譯器將認(rèn)為工程中的所有文件將最終生成一個(gè)完整的應(yīng)用程序。因此編譯器將不考慮符號(hào)名,而是直接引用存放符號(hào)值的內(nèi)存區(qū)域地址。優(yōu)化模式可以生成體積更小,運(yùn)行效率更高的應(yīng)用程序,它比較適用于含有事件反應(yīng)器或?qū)υ捒蚬δ艿某绦?。清華大學(xué)的《CAD二次開發(fā)》電子教LIS共44頁,您現(xiàn)在瀏覽的是第22頁!4.Messagemode欄此欄的功能是確定信息顯示的模式,它有以下3個(gè)選項(xiàng)。
Fatalerrors:顯示致命的錯(cuò)誤,即導(dǎo)致編譯失敗的錯(cuò)誤信息。Errorsandwarnings:顯示錯(cuò)誤和警告信息。Fullreports:顯示所有的出錯(cuò)信息。5.Localizevariables(定位變量)切換開關(guān)如果在編譯模式欄選擇了Optimize(優(yōu)化),該切換開關(guān)才處于可用狀態(tài),若該開關(guān)為打開狀態(tài),則編譯器將從編譯過的文件中刪除局部變量的名字。
清華大學(xué)的《CAD二次開發(fā)》電子教LIS共44頁,您現(xiàn)在瀏覽的是第23頁!①對(duì)已編譯函數(shù)直接引用,而不是引用函數(shù)名。該功能可提高代碼的運(yùn)行速度并防止在運(yùn)行時(shí)對(duì)函數(shù)的重定義。②去掉函數(shù)名使得已編譯代碼更安全、減少程序的長(zhǎng)度和縮短程序的加載時(shí)間。③去掉所有局部變量名并對(duì)其直接鏈接引用,同樣使得已編譯代碼更安全、并減小程序的大小和加載程序所用的時(shí)間。2.確定要編譯的LSP源文件如果源文件在AutoCAD支持的搜索路徑下,可以不包括路徑名。選擇AutoCAD菜單ToolsOptions,然后打開Files選項(xiàng)卡并選取SupportFileSearchPath,可設(shè)置文件搜索路徑。例如,已設(shè)置文件搜索路徑為"d:\user",就可以用表達(dá)式(vlisp-pile'st"sample.lsp")編譯驅(qū)動(dòng)器D的"\user1"目錄下的文件"sample.lsp"。如果"d:\user"不是文件搜索路徑,那么,在指定源文件時(shí)必須包括完整的路徑名,如:(vlisp-pile'st"d:\\user\\example.lsp")或(vlisp-pile'st"d:/user/example.lsp")清華大學(xué)的《CAD二次開發(fā)》電子教LIS共44頁,您現(xiàn)在瀏覽的是第24頁!4.舉例假定AutoLISP源文件的名字是example1.lsp,存放在驅(qū)動(dòng)器d的user1目錄下,文件的內(nèi)容是定義繪制螺釘?shù)拿?,命令的名字是screw。編譯后的執(zhí)行文件名字是example2存放在驅(qū)動(dòng)器d的user2目錄下。(1)在AutoCAD的Command:或控制臺(tái)_$提示下,調(diào)用vlisp-pile函數(shù)(vlisp-pile'st"d:/user1/example1""d:/user2/example2")以標(biāo)準(zhǔn)模式編譯驅(qū)動(dòng)器d的user1目錄下的LSP文件"example1.lsp",在驅(qū)動(dòng)器d的user2目錄下得到可執(zhí)行文件"example2.fas"。(2)了解編譯輸出(BuildOutput)窗口如果源程序沒有錯(cuò)誤,將在圖7-1所示為編譯輸出窗口顯示編譯過程各階段的有關(guān)信息。首先是源代碼的語法和詞匯檢查,然后進(jìn)行編譯,并顯示源文件中所定義的函數(shù)名或AutoCAD命令名,最后報(bào)告所生成的執(zhí)行文件的名字和路徑。清華大學(xué)的《CAD二次開發(fā)》電子教LIS共44頁,您現(xiàn)在瀏覽的是第25頁!5.加載和運(yùn)行已編譯程序無論是".fas"文件,還是可以包含多個(gè)已編譯程序的".vlx"打包文件,都可以在VisualLISP控制臺(tái)窗口、AutoCAD命令提示處加載這些已編譯的AutoLISP程序,也可以在AutoCAD菜單上選取ToolsLoadApplication、ToolsAutoLISPLoad或VisualLISP菜單上選取FileLoadFile加載這些已編譯的AutoLISP程序。(1)在VisualLISP控制臺(tái)窗口加載已編譯的LSP程序(load"d:/user2/example.fas")如果不指定文件擴(kuò)展名,load函數(shù)首先查找并加載擴(kuò)展名為".vlx"的文件;如果沒有找到".vlx"文件,load函數(shù)將查找并加載".fas"文件;如果沒有找到".fas"文件,load函數(shù)將查找并加載".lsp文件"。清華大學(xué)的《CAD二次開發(fā)》電子教LIS共44頁,您現(xiàn)在瀏覽的是第26頁!7.2用應(yīng)用程序生成器創(chuàng)建應(yīng)用程序應(yīng)用程序生成器以向?qū)У姆绞綄utoLISP源代碼、已編譯的AutoLISP程序、對(duì)話框定義文件等資源文件生成獨(dú)立的可執(zhí)行文件,該文件的擴(kuò)展名為".vlx",稱為VLX文件。應(yīng)用程序生成器在創(chuàng)建VLX文件的同時(shí),還生成了展名為".fas"的已編譯的AutoLISP文件,擴(kuò)展名為".prv"的程序生成文件。后者包括VisualLISP創(chuàng)建應(yīng)用程序所需的所有指令。用應(yīng)用程序生成器創(chuàng)建應(yīng)用程序之前,應(yīng)該對(duì)源程序進(jìn)行完整的調(diào)試或試運(yùn)行,以免在生成過程中出現(xiàn)的編譯錯(cuò)誤導(dǎo)致其不能完成創(chuàng)建工作。假定gear.lsp是以對(duì)話框?yàn)檩斎虢缑娴睦L制齒輪的LISP源程序,gear.dcl是定義輸入齒輪參數(shù)的對(duì)話框文件,它們存放在驅(qū)動(dòng)器d的user1目錄下,創(chuàng)建的應(yīng)用程序名字為"chilun",存放在驅(qū)動(dòng)器D的user2目錄下。用應(yīng)用程序生成器創(chuàng)建可執(zhí)行的程序步驟如下:清華大學(xué)的《CAD二次開發(fā)》電子教LIS共44頁,您現(xiàn)在瀏覽的是第27頁!(2)確定向?qū)J綉?yīng)用程序生成向?qū)в蠸imple(簡(jiǎn)單)和Expert(專家)兩種模式。在簡(jiǎn)單模式下,只需指出LISP源文件、LISP編譯文件或VisualLISP工程文件和要?jiǎng)?chuàng)建的文件名;在專家模式下,可以設(shè)置許多其他的選項(xiàng)。如果是單一LISP程序,應(yīng)該選Simple模式,本例因?yàn)檫€要包含有對(duì)話框文件,因此選擇Expert模式。單擊Next按鈕。將彈出圖7-3所示應(yīng)用程序路徑對(duì)話框。圖7-3應(yīng)用程序路徑對(duì)話框
清華大學(xué)的《CAD二次開發(fā)》電子教LIS共44頁,您現(xiàn)在瀏覽的是第28頁!(5)確定LISP文件的類型LISP文件可以是AutoLISP源代碼文件、編譯AutoLISP文件(FAS)或VisualLISP工程文件三種類型。通過圖7-5所示的包含LISP文件對(duì)話框的下拉菜單確定LISP文件類型。
圖7-5包含LISP文件對(duì)話框
例如選擇了Lispsourcefiles類型,并且單擊Add按鈕,將彈出圖7-6所示添加lisp源文件對(duì)話框。清華大學(xué)的《CAD二次開發(fā)》電子教LIS共44頁,您現(xiàn)在瀏覽的是第29頁!如果要從應(yīng)用程序中刪除文件,只需選取這些文件后單擊Remove按鈕即可,也可以在選取一個(gè)或多個(gè)文件后,單擊鼠標(biāo)右鍵并從快捷菜單中選擇Remove項(xiàng)。圖7-7包含Lisp文件的對(duì)話框清華大學(xué)的《CAD二次開發(fā)》電子教LIS共44頁,您現(xiàn)在瀏覽的是第30頁!由于將應(yīng)用程序生成向?qū)Т_定為專家模式,因此,單擊Next按鈕,將彈出圖7-8所示的包含資源文件對(duì)話框。圖7-8包含資源文件對(duì)話框
清華大學(xué)的《CAD二次開發(fā)》電子教LIS共44頁,您現(xiàn)在瀏覽的是第31頁!點(diǎn)取圖7-8所示對(duì)話框的下拉列表,選取DCLfiles,點(diǎn)取Add按鈕,將彈出圖7-9所示的添加DCL文件對(duì)話框。選取gear.dcl文件,點(diǎn)取打開按鈕,該DCL文件將被加入到應(yīng)用程序中,見圖7-10。
圖7-10包含資源文件對(duì)話框單擊Next按鈕,將彈出圖7-11所示的確定編譯選項(xiàng)對(duì)話框。
清華大學(xué)的《CAD二次開發(fā)》電子教LIS共44頁,您現(xiàn)在瀏覽的是第32頁!(9)創(chuàng)建應(yīng)用程序這是應(yīng)用程序生成向?qū)У淖詈笠徊?,單擊Back按鈕,返回到上一步,查看上一步的選擇;單擊Finish按鈕,創(chuàng)建應(yīng)用程序結(jié)束。圖7-12查看選項(xiàng)/編譯應(yīng)用程序?qū)υ捒?/p>
清華大學(xué)的《CAD二次開發(fā)》電子教LIS共44頁,您現(xiàn)在瀏覽的是第33頁!7.3利用工程管理器管理和維護(hù)LISP文件AutoLISP應(yīng)用程序通常都是由多個(gè)獨(dú)立的LISP文件組成的。隨著應(yīng)用程序中文件數(shù)量的增加,對(duì)這些文件的管理和維護(hù)就變得很困難。在這種情況下,應(yīng)該使用VisualLISP提供的最有效的工具——工程管理器。7.3.1工程管理器的功能工程管理器通過命名的工程對(duì)工程所包含的LISP文件進(jìn)行管理和維護(hù)。一個(gè)工程在本質(zhì)上就是一個(gè)LISP源文件表和一套如何編譯這些文件的規(guī)則。工程管理器具有以下的功能?!駲z查應(yīng)用程序中哪些LISP源文件尚未被編譯或者在上一次編譯后又被修改過,并自動(dòng)編譯這樣的一些文件。
●通過一個(gè)命名的工程的列表,可以很簡(jiǎn)單地查找并打開相關(guān)的文件。
●可以在一個(gè)工程的所有的文件中查找指定的源程序代碼。
●可以通過直接鏈接多個(gè)源文件中的相同描述來優(yōu)化編譯結(jié)果。
清華大學(xué)的《CAD二次開發(fā)》電子教LIS共44頁,您現(xiàn)在瀏覽的是第34頁!(a)(b)圖7-13以遞歸方式繪的制旋轉(zhuǎn)正六邊形
為了演示多文件的操作,將該程序分別存放于兩個(gè)文件。文件file1.lsp存放該程序的主函數(shù)部分。主函數(shù)定義了名字為r-hexagon的AutoCAD命令。文件file2.lsp定義了名字為hexagon的函數(shù)。函數(shù)hexagon被主函數(shù)調(diào)用。它們都存放在d盤的user1目錄下。
清華大學(xué)的《CAD二次開發(fā)》電子教LIS共44頁,您現(xiàn)在瀏覽的是第35頁!文件file2.lsp的源代碼如下:(defunhexagon(pcllminphi)
;變?cè)猵hi是正六邊形的初始角度(mand"pline"(polarpcphil)(polarpc(+phi(/pi3.0))l)(polarpc(+phi(/pi1.5))l)(polarpc(+phipi)l)(polarpc(+phi(/pi0.75))l)(polarpc(+phi(/pi0.6))l)"c")(if(>=llmin)(progn(setql(/l(+(cosalf)(*(sinalf)0.5773503))));下一個(gè)正六邊形的邊長(zhǎng)(setqphi(+phialf));下一個(gè)正六邊形的旋轉(zhuǎn)角度
(hexagonpcllminphi)
;繪制下一個(gè)正六邊形)))清華大學(xué)的《CAD二次開發(fā)》電子教LIS共44頁,您現(xiàn)在瀏覽的是第36頁!2.向工程添加LISP源文件
單擊圖7-14新工程對(duì)話框的保存按鈕,將彈出圖7-15所示的工程特性對(duì)話框。該對(duì)話框有工程文件和編譯選項(xiàng)兩個(gè)選項(xiàng)卡。工程文件選項(xiàng)卡用于向工程添加LISP源文件。
圖7-15工程特性對(duì)話框
清華大學(xué)的《CAD二次開發(fā)》電子教LIS共44頁,您現(xiàn)在瀏覽的是第37頁!7.3.3工程窗口工程窗口的標(biāo)題顯示了該工程的名字,列表框內(nèi)顯示了該工程包含的所有的LISP源文件的名字,雙擊列表框內(nèi)的任意一個(gè)文件名(無論文件是否打開)即可激活包含該文件的文本編輯窗口。
圖7-16工程窗口
工程窗口的工具欄上有5個(gè)按鈕,它們分別具有以下的功能。:彈出圖7-15所示的工程特性對(duì)話框,通過該對(duì)話框修改該工程的特性。清華大學(xué)的《CAD二次開發(fā)》電子教LIS共44頁,您現(xiàn)在瀏覽的是第38頁!:加載工程中所有的LISP源文件。:編譯工程中所有的在上一次編譯后被修改過的文件,生成新的.fas文件。:重新編譯工程中所有的LISP,無論這些文件是否已經(jīng)被編譯過。以上操作也可以通過工程的快捷菜單的相應(yīng)選項(xiàng)完成。將鼠標(biāo)移至工程窗口的列表框內(nèi),單擊鼠標(biāo)右鍵,將彈出圖7-18所示的快捷菜單,其中各菜單項(xiàng)的功能見下一頁。圖7-18工程窗口的快捷菜單
清華大學(xué)的《CAD二次開發(fā)》電子教LIS共44頁,您現(xiàn)在瀏覽的是第39頁!7.3.4在工程中查找源程序代碼單擊查找按鈕,彈出圖7-19所示的查找對(duì)話框。打開Project互鎖按鈕,通過Project下拉列表選取一個(gè)工程,在FindWhat列表輸入或選擇要查找的源程序代碼,單擊Find按鈕,在圖7-20所示的查找輸出窗口報(bào)告了在指定工程的所有文件中查找的結(jié)果。
圖7-19查找對(duì)話框
清華大學(xué)的《CAD二次開發(fā)》電子教LIS共44頁,您現(xiàn)在瀏覽的是第40頁!7.3.5通過工程創(chuàng)建應(yīng)用程序上一節(jié)介紹了用應(yīng)用程序生成器創(chuàng)建應(yīng)用程序的全過程。在第5步確定LISP文件的類型時(shí)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 關(guān)于洗煤合同范例
- 臨時(shí)財(cái)務(wù)用工合同范本
- 各種勞務(wù)合同范本
- 中國(guó)掀起數(shù)字化浪潮的心得體會(huì)
- 醫(yī)學(xué)三基康復(fù)科模擬練習(xí)題
- 勞務(wù)合同范本務(wù)
- 醫(yī)院房屋建設(shè)施工合同范本
- 醫(yī)藥廠家銷售合同范本
- 美術(shù)基礎(chǔ)習(xí)題及參考答案
- 半包家裝合同范本
- 2025年鄂東高三語文2月調(diào)研聯(lián)考試卷附答案解析
- 滬教版數(shù)學(xué)四年級(jí)下冊(cè)全冊(cè)教案
- 數(shù)字孿生技術(shù) 課件 第1、2章 概述;數(shù)字孿生中的物聯(lián)網(wǎng)和人工智能
- 2025年廣東省廣晟控股集團(tuán)有限公司招聘筆試參考題庫含答案解析
- 2025語文新教材三下全冊(cè)8個(gè)單元教材解讀分析匯編
- java安全編碼規(guī)范
- 美麗的春天課件
- 2025年山東青島自貿(mào)發(fā)展有限公司招聘筆試參考題庫含答案解析
- 液化氣罐的使用和安全防范
- 2025年中考物理總復(fù)習(xí)《內(nèi)能》專項(xiàng)測(cè)試卷含有答案
- 會(huì)計(jì)法律法規(guī)答題答案
評(píng)論
0/150
提交評(píng)論