版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、本資料來源本章目錄本章目錄 AutoCAD軟件作為CAD工業(yè)的旗幟產(chǎn)品,以其強(qiáng)大的功能得到廣大用戶的青睞。它具有精確的坐標(biāo)系,能夠完成各種圖形的精確繪制、任意縮放和修改,支持?jǐn)?shù)字化儀的精確輸入。盡管如此,由于AutoCAD是作為一個(gè)通用的繪圖軟件而設(shè)計(jì)開發(fā)的,但各行各業(yè)都有自己的行業(yè)和專業(yè)標(biāo)準(zhǔn),許多單位也有自己的技術(shù)規(guī)格和企業(yè)標(biāo)準(zhǔn),化工行業(yè)也不例外,有著大量的各種圖紙?jiān)O(shè)計(jì)標(biāo)準(zhǔn),因而,AutoCAD不可能完全滿足每一用戶的具體應(yīng)用要求。但是,AutoCAD具有開放的體系結(jié)構(gòu),它允許用戶和開發(fā)者在幾乎所有方面對(duì)其進(jìn)行擴(kuò)充和修改,同時(shí)可以利用多種開發(fā)語言,開發(fā)可以自動(dòng)完成某一繪制任務(wù)的軟件,可大大提
2、高繪制速度,改善工作效率。以上工作可稱之為AutoCAD的二次開發(fā)技術(shù)。也就說AutoCAD二次開發(fā)技術(shù)主要包括兩個(gè)方面:一方面是對(duì)它的功能進(jìn)行擴(kuò)充和修改,如修改或增加菜單、進(jìn)行各種定制工作;另一方面是利用開發(fā)工具編寫能夠完成特殊任務(wù)的自動(dòng)繪制軟件,如下面將介紹的通過人機(jī)交互界面輸入必要的數(shù)據(jù)后,系統(tǒng)自動(dòng)完成法蘭的繪制,就屬于這一類型,在化工繪圖中,我們需要的也是有關(guān)這一方面的開發(fā)軟件,它能最大限度地滿足用戶的特殊需要,通過調(diào)用各種已經(jīng)開發(fā)好的專用零件圖繪制軟件,加快繪制速度,提高工作效率。尤其重要的是,可以將大量的計(jì)算工作交給計(jì)算機(jī)去完成。這樣,不僅提高了繪圖速度,同時(shí)也提高了繪制精度,避免
3、了人為的計(jì)算錯(cuò)誤。 目前很多化工技術(shù)人員對(duì)AutoCAD的使用一般還僅限于它自身的各種繪圖功能,使用鼠標(biāo)手工繪制各種圖件,對(duì)其強(qiáng)大的二次開發(fā)功能還沒有進(jìn)行深入使用。如果能使用AutoCAD的二次開發(fā)技術(shù)開發(fā)出一套軟件,讓AutoCAD自動(dòng)繪制我們目前使用的各種圖件,就可以大大提高作圖效率,發(fā)揮出AutoCAD的強(qiáng)大圖形編輯、修改功能,對(duì)圖件中的各種元素進(jìn)行任意修改,滿足各種不同的圖件格式和繪圖標(biāo)準(zhǔn),由此可見,對(duì)于一個(gè)化工技術(shù)人員來說,學(xué)會(huì)自己開發(fā)AutoCAD二次應(yīng)用軟件顯得十分必要,因?yàn)檫@將大大減少具體的繪制工作,而可以將主要精力集中到設(shè)備的設(shè)計(jì)中去,從而加快化工設(shè)備的開發(fā)速度。 近幾年來,
4、隨著計(jì)算機(jī)軟、硬件技術(shù)的飛速發(fā)展及其應(yīng)用的普及,也帶來了化工領(lǐng)域使用計(jì)算機(jī)的浪潮。首先是各課程教學(xué)使用了CAI課件,學(xué)生們可以清楚地看到各種物質(zhì)的具體顏色,并可以看到動(dòng)畫反應(yīng),讓學(xué)生們能夠形象生動(dòng)地上課。然后是各種實(shí)驗(yàn)仿真軟件的出現(xiàn),讓學(xué)生們不用親自下到工廠,也不用浪費(fèi)任何原料,在沒有危險(xiǎn)的情況下就可以完成對(duì)實(shí)驗(yàn)過程或者是生產(chǎn)流程的學(xué)習(xí)和實(shí)習(xí)。同時(shí)計(jì)算機(jī)可以對(duì)反應(yīng)進(jìn)行模擬,對(duì)實(shí)驗(yàn)數(shù)據(jù)的擬合都大大方便了化工工作者。隨之誕生的各種化工專用軟件,給化學(xué)工業(yè)的發(fā)展注入了新鮮血液,使化學(xué)工業(yè)的發(fā)展如虎添翼。目前,隨著化學(xué)工業(yè)的進(jìn)一步向前發(fā)展,各種新的機(jī)械設(shè)備被人們?cè)O(shè)計(jì)和制造,這些設(shè)備的工程圖都是一件很大
5、的工程。比如一個(gè)完整熱交換器圖紙,就需要一個(gè)專人12天的工夫才能完成。利用AutoCAD的二次開發(fā)技術(shù),可以編出對(duì)熱交換器的圖進(jìn)行批處理的程序,只需通過簡單的人機(jī)會(huì)話,計(jì)算機(jī)能自動(dòng)繪制出圖紙,這也是化工技術(shù)人員學(xué)習(xí)掌握AutoCAD二次開發(fā)技術(shù)的目的之所在。隨著化學(xué)工業(yè)的不斷日新月異,對(duì)設(shè)備圖紙繪制的速度要求也將越來越快,利用AutoCAD二次開發(fā)技術(shù)開發(fā)而成的軟件直接繪制各種設(shè)備的技術(shù)將在化學(xué)工業(yè)中得到更加廣泛的應(yīng)用,其開發(fā)技術(shù)必將伴著化學(xué)工業(yè)一起發(fā)展。 AutoLISP AutoLISP語言是AutoCAD所支持的一種內(nèi)嵌式語言,它由美國Autodesk公司開發(fā),其目的是使用戶十分方便地利
6、用AutoLISP編程語言對(duì)AutoCAD進(jìn)行二次開發(fā),它采用了與LISP語言中的Common LISP最近的語法和習(xí)慣約定,同時(shí)又針對(duì)AutoCAD增加了許多新的功能,使用戶可以直接調(diào)用幾乎全部的AutoCAD命令,因此它既具有一般高級(jí)語言的基本結(jié)構(gòu)和功能,又具有AutoCAD強(qiáng)大的圖形處理能力,是目前計(jì)算機(jī)輔助設(shè)計(jì)和繪圖中較廣泛采用的語言之一。 Visual LISP Visual LISP(簡稱VLISP)是為加速AutoLISP程序開發(fā)而設(shè)計(jì)的強(qiáng)有力的工具。它提供了一個(gè)完整的集成開發(fā)環(huán)境(包括編譯器、調(diào)試器及其他工具,它可以顯著地提高自定義AutoCAD的效率)。Visual LISP
7、提供的主要工具有:文本編輯器、格式編排器、語法檢查器、源代碼調(diào)試器、檢驗(yàn)和監(jiān)視工具、文件編譯器、工程管理系統(tǒng)/快捷相關(guān)幫助與自動(dòng)匹配功能和智能化控制臺(tái)等。 Visual LISP克服了AutoLISP一直以來開發(fā)中所存在的諸多不便和某些局限性。從語言方面看,Visual LISP對(duì)AutoLISP語言進(jìn)行了擴(kuò)展,可以通過Microsoft ActiveX Automation接口與對(duì)象交互。同時(shí),通過實(shí)現(xiàn)事件反應(yīng)器函數(shù),還擴(kuò)展了AutoLISP響應(yīng)事件的能力。 VisualLISP已經(jīng)被完整地集成到AutoCAD中。VBAVBA(Visual Basic for Application)最早是
8、建立在Office 97中的標(biāo)準(zhǔn)宏語言,由于它在開發(fā)方面的易用性且功能強(qiáng)大,許多軟件開發(fā)商都將其嵌入自己的應(yīng)用程序中,作為一種開發(fā)工具提供給用戶使用。而AutoCAD VBA就是集成在AutoCAD中的Visual Basic開發(fā)環(huán)境,與VB的主要區(qū)別是VBA在與AutoCAD相同的進(jìn)程空間中運(yùn)行,提供了與AutoCAD關(guān)聯(lián)的快捷的編程環(huán)境,程序設(shè)計(jì)直觀快捷。它還提供了與其它可使用VBA應(yīng)用程序集成的能力,可以作為其它應(yīng)用程序如Word或Excel的自動(dòng)化控制器。可以看出,VBA是其中編程很為快捷方便的一種,對(duì)于非計(jì)算機(jī)專業(yè)而更多熟悉VB編程語言的人來說,可以很快就掌握它。ADSADS的全名是
9、AutoCAD Development System,它是AutoCAD的C語言開發(fā)系統(tǒng),ADS本質(zhì)上是一組可以用C語言編寫AutoCAD應(yīng)用程序的頭文件和目標(biāo)庫,它直接利用用戶熟悉的各種流行的C語言編譯器,將應(yīng)用程序編譯成可執(zhí)行的文件在AutoCAD環(huán)境下運(yùn)行,這種可以在AutoCAD環(huán)境中直接運(yùn)行的可執(zhí)行文件叫做ADS應(yīng)用程序。ADS由于其速度快,又采用結(jié)構(gòu)化的編程體系,因而很適合于高強(qiáng)度的數(shù)據(jù)處理,如二次開發(fā)的機(jī)械設(shè)計(jì)CAD、工程分析CAD、建筑結(jié)構(gòu)CAD、土木工程CAD、化學(xué)工程CAD、電氣工程CAD等。ObjectARX ObjectARX是一種嶄新的開發(fā)AutoCAD應(yīng)用程序的工具
10、,她以C+為編程語言,采用先進(jìn)的面向?qū)ο蟮木幊淘?,提供可與AutoCAD直接交互的開發(fā)環(huán)境,能使用戶方便快捷地開發(fā)出高效簡潔的AutoCAD應(yīng)用程序。ObjectARX并沒有包含在AutoCAD中,可在AutoDESK公司網(wǎng)站中去下載,其最新版本是ObjectARX for AutoCAD 2005,它能夠?qū)utoCAD的所有事務(wù)進(jìn)行完整的、先進(jìn)的、面向?qū)ο蟮脑O(shè)計(jì)與開發(fā),并且開發(fā)的應(yīng)用程序速度更快、集成度更高、穩(wěn)定性更強(qiáng)。ActiveX AutomationActiveX技術(shù)來源于 OLE(Object Linking and Embedding)技術(shù)。OLE最初是對(duì)象鏈接與嵌入,后來發(fā)展
11、成為復(fù)合文檔技術(shù),包括文字、圖片、聲音、動(dòng)畫片和視頻等媒體可以共同存在于一個(gè)文檔中。它們可以由不同的應(yīng)用程序產(chǎn)生,同時(shí)也可以在該文檔中編輯。如果應(yīng)用程序支持OLE文檔,則在不同應(yīng)用程序之間的切換由OLE自動(dòng)完成。OLE技術(shù)和其它技術(shù)共同作用,從而實(shí)現(xiàn)不同應(yīng)用程序之間的無縫鏈接。自動(dòng)化技術(shù)(Automation)允許一個(gè)應(yīng)用程序驅(qū)動(dòng)另外一個(gè)程序。驅(qū)動(dòng)程序被稱為自動(dòng)化客戶,另一個(gè)為自動(dòng)化服務(wù)器。自動(dòng)化技術(shù)后來發(fā)展成為ActiveX Automation。Visual Java Java是最早由Sun公司創(chuàng)建的一種頗具魅力的程序設(shè)計(jì)語言,她是針對(duì)嵌入系統(tǒng)而設(shè)計(jì)的。像許多開發(fā)語言一樣,Java是一組實(shí)
12、時(shí)庫的集合,可為軟件開發(fā)者提供多種工具來創(chuàng)建軟件、管理用戶接口、進(jìn)行網(wǎng)絡(luò)通訊、發(fā)布應(yīng)用程序等。對(duì)AutoCAD用戶和開發(fā)者而言,Java代表著新一代的編程語言,它主要用于開發(fā)出全新的優(yōu)秀產(chǎn)品。 化工AutoCAD二次軟件的開發(fā)和其它軟件的開發(fā)一樣,均需遵循一定的規(guī)律。一般來說,一個(gè)完善的AutoCAD二次軟件開發(fā)過程可以分成4個(gè)階段的內(nèi)容,它們分別是系統(tǒng)規(guī)劃、系統(tǒng)開發(fā)、系統(tǒng)運(yùn)行與維護(hù)、系統(tǒng)更新。而系統(tǒng)規(guī)劃又可以分成3個(gè)方面的內(nèi)容,它們分別是戰(zhàn)略規(guī)劃、需求分析、資源分配。在這個(gè)階段,我們主要任務(wù)是確定所需要開發(fā)軟件的目的、使用對(duì)象、使用者的要求、開發(fā)者目前的能力及擁有的資源。軟件開發(fā)的第二階段是
13、系統(tǒng)開發(fā),它包括系統(tǒng)分析、系統(tǒng)設(shè)計(jì)、系統(tǒng)實(shí)施。這時(shí)的主要任務(wù)根據(jù)第一階段已經(jīng)做的工作基礎(chǔ)上,提出所開發(fā)軟件的邏輯方案、確定系統(tǒng)開發(fā)中每一步的內(nèi)容和任務(wù),在此基礎(chǔ)上,再進(jìn)行系統(tǒng)總體結(jié)構(gòu)設(shè)計(jì),提出系統(tǒng)總體布局的方案。至此,軟件開發(fā)工作還停留在邏輯開發(fā)狀態(tài),尚未進(jìn)入具體的編碼工作。 軟件開發(fā)完成第二階段的系統(tǒng)設(shè)計(jì)后,就進(jìn)入了實(shí)質(zhì)性的編碼工作,也就是說進(jìn)入了系統(tǒng)的實(shí)施階段,這時(shí)要完成各種編碼工作,完善系統(tǒng)各個(gè)接口之間的聯(lián)絡(luò),改善界面的友好程度,對(duì)整個(gè)軟件進(jìn)行組裝及調(diào)試,最后完成交付使用前的各項(xiàng)工作。如該保密的部分需要進(jìn)行封裝;可以公開的部分需要做好友善的人機(jī)界面。 軟件開發(fā)的第三階段是運(yùn)行和維護(hù)階段,
14、一般對(duì)于規(guī)模較小的軟件,對(duì)這方面的考慮就比較少。比如我們自己經(jīng)常開發(fā)一些小軟件來解決一些實(shí)際問題,就較少考慮以后的維護(hù),一般只要滿足目前的應(yīng)用就可以了。但對(duì)于一個(gè)完善的軟件來說,就需要考慮實(shí)際運(yùn)行過程中出現(xiàn)的各種情況,并有解決方案及維護(hù)方法。這樣,就會(huì)使得一個(gè)看上去較小的軟件,也會(huì)變得復(fù)雜起來,但這種復(fù)雜為使用和維護(hù)帶來了方便,提高了軟件對(duì)付外來情況的能力,提高了軟件的使用壽命,實(shí)際上等于節(jié)約了軟件使用成本。 任何一個(gè)軟件,總有它更新的時(shí)候,此時(shí),進(jìn)入了軟件開發(fā)的第4階段,即系統(tǒng)更新階段,在新的情況下,對(duì)原有的系統(tǒng)進(jìn)行更新開發(fā)。本章目錄本章目錄 基本運(yùn)算基本運(yùn)算 基本函數(shù)基本函數(shù) 編程中常用的
15、分支及條件判斷函數(shù)編程中常用的分支及條件判斷函數(shù) 常用的繪圖命令常用的繪圖命令 AutoLISP命令調(diào)用過程命令調(diào)用過程 加法加法 格式:(+ ) 功能:求出所列數(shù)的總和實(shí)例:(+ 20 30) 結(jié)果為50 (+ 15 -10) 結(jié)果為5減法減法 格式:(- ) 功能:求出第一個(gè)數(shù)逐次減去后面數(shù)的差實(shí)例:(- 120 30 50) 結(jié)果為40 (- 15 -10) 結(jié)果為25乘法乘法格式:(* ) 功能:求出所列數(shù)的乘積實(shí)例:(* 20 30) 結(jié)果為600 (* 1.5 -10 2) 結(jié)果為-30除法除法格式:(/ )功能:求出第一個(gè)數(shù)逐次除以后面數(shù)的商實(shí)例:(/ 20 ) 結(jié)果為20 (/
16、 130 2) 結(jié)果為65 (/ 3 30) 由于表中的兩個(gè)元素均為整型數(shù),結(jié)果也為整型數(shù),故結(jié)果為0 (/ 3.0 30) 結(jié)果為0.1 (/ 30 (/ 6 9) 系統(tǒng)顯示被0除,原因在于表(/ 6 9)的值為0自然數(shù)求冪自然數(shù)求冪格式:(exp )功能:求e的次冪值,e=2.71828實(shí)例:(exp 2.0 ) 結(jié)果為7.3890561 (exp 0) 結(jié)果為1普通數(shù)求冪普通數(shù)求冪格式:(expt )功能:求的 次方值實(shí)例:(expt 2 3) 結(jié)果為8求自然對(duì)數(shù)求自然對(duì)數(shù)格式:(log )功能:求的自然對(duì)數(shù),要求必須大于零實(shí)例:(log 10.0) 結(jié)果為2.3025851求平方根求平
17、方根格式:(sqrt )功能:求的平方根,要求必須大于零實(shí)例:(sqrt 4.0) 結(jié)果為2.0求絕對(duì)值求絕對(duì)值格式:(abs )功能:求的絕對(duì)值實(shí)例:(abs -3) 結(jié)果為3求最大值求最大值格式:(max )功能:求, 的最大值實(shí)例:(max 2 3 4 10) 結(jié)果為10求余數(shù)求余數(shù)格式:(rem )功能:求整除的余數(shù),若參數(shù)多于兩個(gè),則將整除后的余數(shù)再整除,求出余數(shù),以此類推。實(shí)例:(rem 50 9 4) 結(jié)果為1正弦函數(shù)正弦函數(shù)SINSIN格式:(sin ) ,其中 用弧度表示功能:求的正弦值實(shí)例:(sin (/ pi 2) 結(jié)果為1余弦函數(shù)余弦函數(shù)COSCOS格式:(cos )
18、,其中 用弧度表示功能:求余弦值實(shí)例:(cos (/ pi 2) 結(jié)果為0正切正切TANTAN格式:(tan ) ,其中 用弧度表示功能:求正切值實(shí)例:(tan (/ pi 4) 結(jié)果為1反正切函數(shù)反正切函數(shù)ATANATAN格式:(atan ) 功能:求反正切值,單位為弧度,為-/2,/2實(shí)例:(atan (1) 結(jié)果為0.785398 , 即(/4) 實(shí)例:(cos (/ pi 2) 結(jié)果為0取整函數(shù)取整函數(shù)FIXFIX格式:(fix )功能:求的整數(shù)部分,相當(dāng)于高級(jí)語言中的“INT(數(shù))”語句。實(shí)例:(fix 7.8) 結(jié)果為7 (fix -7.8) 結(jié)果為-7 (fix 9) 結(jié)果為9實(shí)
19、型化函數(shù)實(shí)型化函數(shù)FLOATFLOAT格式:(float )功能:求轉(zhuǎn)化為實(shí)型數(shù),不考慮該數(shù)原來的類型實(shí)例:(float 3) 結(jié)果為3.0 (float 3.3) 結(jié)果為3.3賦值函數(shù)賦值函數(shù)SETQSETQ格式:(setq )功能:將表達(dá)式的值賦給變量,變量和表達(dá)式需成對(duì)出現(xiàn)實(shí)例:(setq a 10) 結(jié)果 a=10 (setq s “it” ) 結(jié)果 s=“it” (setq b 123 c 10 d 45) 結(jié)果 b=123 c=10 d=45 (setq t (+ 34 45) 結(jié)果 t=79 (setq P1( 34 45) (setq p1 (30 40) /確定點(diǎn)P1的坐標(biāo)
20、(setq p2 (300 400) /確定點(diǎn)P2的坐標(biāo) (command “l(fā)ine” p1 p2 “”) /繪制從P1點(diǎn)到P2點(diǎn)的直線 取表中第一元素取表中第一元素CARCAR函數(shù)函數(shù) 格式:(car ),表必須為引用表而非標(biāo)準(zhǔn)表,但可以是簡單表,也 可以是嵌套表。 功能:提取的頂層第一個(gè)元素 實(shí)例:(car (1 3 5) 結(jié)果為1 (car ((1 3)6 5) 結(jié)果為(1 3) 取表中除第一元素外其它元素的取表中除第一元素外其它元素的CDRCDR函數(shù)函數(shù) 格式:(cdr ),表必須為引用表而非標(biāo)準(zhǔn)表,但可以是簡單表,也可以是嵌套表。 功能:提取的除頂層第一個(gè)元素外的其它元素 實(shí)例:(
21、cdr (1 3 5) 結(jié)果為(3 5) (cdr ((1 3)6 5) 結(jié)果為(6 5) CARCAR和和CDRCDR的組合函數(shù)的組合函數(shù) CAR和CDR可以任意組合,其組合深度可達(dá)4層,執(zhí)行時(shí)從右到左依次執(zhí)行,若搞錯(cuò)次序,其結(jié)果必然出錯(cuò)。4個(gè)層次的組合形式為CAR、CXXR、CXXXR、CXXXXR,其中X既可以是A也可以是D,例如: (cadr (2 (1 2 3) 34 ) 結(jié)果為(1 2 3) (caadr (2 (11 6) 2 3) 34 ) 結(jié)果為(11 6) (caaadr (2 (11 6) 2 3) 34 ) 結(jié)果為11 (caaddr (2 (11 6) 2 3) (3
22、 4) ) 結(jié)果3 LASTLAST函數(shù)函數(shù) 格式:(last ),表必須為引用表而非標(biāo)準(zhǔn)表,但可以是簡單表,也可以是嵌套表。 功能:提取的頂層中最后一個(gè)元素 實(shí)例:(last (1 2 3) 結(jié)果為3 (last (12 3 (4 5) 結(jié)果為(4 5) NTHNTH函數(shù)函數(shù) 格式:(nth ),表必須為引用表而非標(biāo)準(zhǔn)表,但可以是簡單表,也可以是嵌套表。 功能:提取中第個(gè)元素,注意第一個(gè)元素的序號(hào)為0號(hào),以此類推。 實(shí)例:(nth 2 (2 3 (4 5) 5) 結(jié)果為(4 5) (nth 3 (2 3 (4 5) 5) 結(jié)果為5 LISTLIST函數(shù)函數(shù) 格式:(list ) 功能:將所有
23、的按原位置構(gòu)成新表,可用于確定點(diǎn)的坐標(biāo)位置。 實(shí)例:(list 2 3 (5 6) 結(jié)果為(2 3 (5 6) (list 2 3) 結(jié)果為(2 3) 下面是一個(gè)利用list確定點(diǎn)的位置,繪制圓的小程序: (setq p1 (list 222 33) (setq p2 (list 200 300) (command circle p2 160) (command circle p1 160) ATOFATOF函數(shù)函數(shù)格式:(atof )功能:將轉(zhuǎn)換成實(shí)型數(shù),返回實(shí)型數(shù)實(shí)例:(atof 23) 返回結(jié)果為23.0ASCIIASCII函數(shù)函數(shù)格式:(ascii )功能:將中第一個(gè)字符轉(zhuǎn)換成ASCI
24、I碼,并返回該值實(shí)例:(ascii b c) 返回結(jié)果為98CHRCHR函數(shù)函數(shù)格式:(chr )功能:將ASCII碼為的轉(zhuǎn)換成相應(yīng)字符,并返回該字符實(shí)例:(chr 69) 返回結(jié)果為E (chr 80) 返回結(jié)果為P“ITOAITOA函數(shù)函數(shù)格式:(itoa )功能:將轉(zhuǎn)換成整數(shù)字符串實(shí)例:(itoa 5) 返回結(jié)果為5“ATOIATOI函數(shù)函數(shù)格式:(atoi )功能:將轉(zhuǎn)換成整數(shù),返回值截去小數(shù)部分實(shí)例:(atoi 45.4) 返回結(jié)果為45 (atoi -5.6) 返回結(jié)果為-5 (atoi 7) 返回結(jié)果為7 (atoi 34.6ac) 返回結(jié)果為34 (atoi df43)45 返
25、回結(jié)果為0說明:當(dāng)數(shù)字串中有非數(shù)字字符時(shí),則轉(zhuǎn)換到第一個(gè)非數(shù)字原子時(shí)終止。STRCATSTRCAT函數(shù)函數(shù)格式:(strcat )功能:將按先后順序頭尾相連起來,組成一個(gè)新的字符串。實(shí)例:(strcat bc etr ty) 返回結(jié)果為bcetrty(20)SUBSTR(20)SUBSTR函數(shù)函數(shù)格式: (substr 功能:從中提取一個(gè)子串,該子串從起點(diǎn)的字符位置開始,由連續(xù)個(gè)字符組成,若缺省,則到字符串結(jié)束。實(shí)例: (substr b212c 2 3) 返回結(jié)果為212 (substr b2er12c 2) 返回結(jié)果為2er12c“(21)READ(21)READ函數(shù)函數(shù)格式: (read
26、 )功能:將轉(zhuǎn)化成表或原子,文件處理時(shí)經(jīng)常使用實(shí)例:(read ad) 返回結(jié)果為AD (read b) 返回結(jié)果為B (read (a b) 返回結(jié)果為(A B) (read (3 4) 返回結(jié)果為(3 4) 在程序編寫中經(jīng)常會(huì)用到一些條件判斷函數(shù)及循環(huán)函數(shù),沒有這些函數(shù),就難以完成一個(gè)理想的程序,下面將一些在編程中使用程度較高的函數(shù)介紹一下。 關(guān)系運(yùn)算函數(shù)關(guān)系運(yùn)算函數(shù) 關(guān)系運(yùn)算函數(shù)是編程中分支及條件判斷函數(shù)的基礎(chǔ),它對(duì)數(shù)值型表達(dá)式的大小進(jìn)行比較,表達(dá)式可以是兩個(gè)或兩個(gè)以上,其返回值是邏輯變量。比較運(yùn)算成立,則返回T;不成立則返回nil,常作為條件用于條件判斷語句和循環(huán)判斷語句中,這一點(diǎn)將在
27、下面講解中提到。AutoLISP共有6種關(guān)系運(yùn)算函數(shù),它們分別是“=”等于、“/=”不等于、“”大于、“=”大于等于。其中等于的關(guān)系函數(shù),其表達(dá)式只能兩個(gè),下面是6種關(guān)系函數(shù)的實(shí)際例子:( 2 4 5 6) 返回結(jié)果T( 8 7 3 9) 返回結(jié)果nil,全程比較( 8 7 3 1) 返回結(jié)果T(= 2 2) 返回結(jié)果T(= s b) 返回結(jié)果nil(/= 1 2 3) 返回結(jié)果T(/= 1 1 3) 返回結(jié)果nil,只比較前面兩個(gè)表達(dá)式(= 5 5 1) 返回結(jié)果T邏輯運(yùn)算函數(shù)邏輯運(yùn)算函數(shù)AutoLISP共有3種邏輯運(yùn)算函數(shù),分別是邏輯和AND、邏輯或OR、邏輯非NOT,下面通過實(shí)例說明其應(yīng)
28、用。(and a d c 3) 返回結(jié)果nil,只要有一個(gè)表達(dá)式為假,則返回nil(and d c) 返回結(jié)果nil(setq a 3 b 4) 返回結(jié)果4,返回最后一個(gè)賦值(and a b) 返回結(jié)果T,由于前面給a、b賦了值(and ( 3 5) 返回結(jié)果nil(or 1 2 a b) 返回結(jié)果T,只要有一個(gè)表達(dá)式為真,則返回T(or ( 4 2) ( 6 9) 返回結(jié)果T二分支條件函數(shù)二分支條件函數(shù)IF格式: (if )功能:對(duì)進(jìn)行運(yùn)算,若成立,則執(zhí)行,否則,執(zhí)行,兩者必居其一,所以稱之為二分支條件函數(shù),是在編程中經(jīng)常用到的條件判斷函數(shù)。下面是幾個(gè)實(shí)際例子:(if (= 1 3) 3 5
29、) 測試式不成立,執(zhí)行第二個(gè)表達(dá)式,第二個(gè)表達(dá)式為原子,返回5(if ( 1 3) (setq a 2) (setq a 9) 測試式成立,執(zhí)行第一個(gè)表達(dá)式,返回2(if (= 1 3) yes) 測試式不成立,但無第二個(gè)表達(dá)式,返回nil(if 1 yes no) 測試表達(dá)式為1,雖然不為T,但也不為nil,仍執(zhí)行第一表達(dá)式,返回“yes” 多分支條件函數(shù)多分支條件函數(shù)COND前面二分支條件函數(shù)只能解決兩種結(jié)果中選一種的條件判斷,若有多個(gè)條件中選一,則需用COND函數(shù)。格式:(cond ( ) ( ) : : ( ) ) 該函數(shù)的參數(shù)為任意數(shù)目的表,每個(gè)表有兩個(gè)元素,第一個(gè)元素為測試式,第二
30、個(gè)元素為結(jié)果。功能:對(duì)每一個(gè)支表中的依次進(jìn)行運(yùn)算,若成立,則執(zhí)行該支表對(duì)應(yīng)的,停止后面的測試工作;否則,繼續(xù)執(zhí)行,直到最后一個(gè)分支條件。順序控制函數(shù)順序控制函數(shù)PROGN常和IF函數(shù)一起使用,使其在某一條件下,順序執(zhí)行多個(gè)表達(dá)式。格式:(progn : : )功能:按順序執(zhí)行多個(gè)表達(dá)式,并返回最后表達(dá)式求值結(jié)果,表達(dá)式需為標(biāo)準(zhǔn)表。常見測試函數(shù)常見測試函數(shù)ZEROP函數(shù)用于判斷測試項(xiàng)是否為零,若為零,則返回T,否則返回nil。MINUSP函數(shù)用于判斷測試項(xiàng)是否為負(fù),若為負(fù),則返回T,否則返回nil。NUMBERP函數(shù)用于判斷測試項(xiàng)是否為數(shù),若為數(shù),則返回T,否則返回nil。ATOM函數(shù)用于判斷測
31、試項(xiàng)是否為原子,若為原子數(shù),則返回T,否則返回nil。LISTP函數(shù)用于判斷測試項(xiàng)是否為表,若為表,則返回T,否則返回nil。循環(huán)函數(shù)循環(huán)函數(shù)在各種程序編寫中,循環(huán)語句是不可缺少的,AutoLISP的兩種主要循環(huán)函數(shù)是WHILE函數(shù)和REPEAT函數(shù),下面分別介紹之。WHILEWHILE函數(shù)格式:(while 標(biāo)準(zhǔn)表1 標(biāo)準(zhǔn)表2 : )功能:先對(duì)測試表達(dá)式進(jìn)行測試,若其值不為nil,則依次執(zhí)行下面的各個(gè) 標(biāo)準(zhǔn)表,執(zhí)行完各 標(biāo)準(zhǔn)表后,再返回來對(duì)測試表達(dá)式進(jìn)行測試,直至測試表達(dá)式為nil,停止循環(huán)執(zhí)行。 REPEATREPEAT函數(shù)格式:(repeat 標(biāo)準(zhǔn)表1 標(biāo)準(zhǔn)表2 : )功能:按該定的次數(shù)
32、進(jìn)行循環(huán)計(jì)算式為nil,停止循環(huán)執(zhí)行。 常用的交互命令常用的交互命令 在程序編寫中經(jīng)常要用到一些交互式命令,通過交互命令,可提高程序的人機(jī)對(duì)話能力。AutoLISP也提供了一些常見的交互命令,下面分別介紹。 輸入整型數(shù)輸入整型數(shù)GETINT 格式:(getint提示) 功能:該函數(shù)提示用戶輸入一個(gè)整型數(shù),并返回該數(shù),常和賦值函數(shù)SETQ合用 實(shí)例:(setq n (getint“n=”) /等待用戶輸入一個(gè)整型數(shù),并將該數(shù)賦值給n。 輸入實(shí)型數(shù)輸入實(shí)型數(shù)GETREAL 格式:(getreal提示) 功能:該函數(shù)提示用戶輸入一個(gè)整型數(shù),并返回該數(shù),常和賦值函數(shù)SETQ合用 實(shí)例:(setq a(
33、getreal“a=”) /等待用戶輸入一個(gè)實(shí)型數(shù),并將該數(shù)賦值給a。 輸入字符串輸入字符串GETSTRING 格式:(getstring提示) 功能:該函數(shù)提示用戶輸入一個(gè)字符串,并返回該數(shù),常和賦值函數(shù)SETQ合用 實(shí)例:(setq m (getstring“your name”) /等待用戶輸入一個(gè)字符串,并將該字符串賦值給m,若輸入xiaodong ,返回“xiaodong”。需要注意的是輸入字符串時(shí),千萬別用空格鍵,否則只把空格鍵以前的內(nèi)容作為輸入的字符串。 輸入點(diǎn)輸入點(diǎn)GETPOINT 格式:(getpoint基點(diǎn) 提示) 功能:該函數(shù)提示用戶輸入一個(gè)點(diǎn),若有基點(diǎn),這將從基點(diǎn)到輸入
34、的點(diǎn)之間畫一條直線拖動(dòng)直線,但命令執(zhí)行過后消失。 實(shí)例:(setq P1 (getpoint (40 50) “第二點(diǎn)”) /等待用戶從鍵盤輸入點(diǎn)或用光標(biāo)選點(diǎn)。 輸入距離值輸入距離值GETDIST 格式:(getdist 提示) 功能:該函數(shù)提示用戶輸入一個(gè)距離值。 實(shí)例:(setq tspac (getdist “輸入距離”) /等待用戶從鍵盤輸入某一數(shù)值。 點(diǎn)的確定點(diǎn)的確定 確定點(diǎn)的位置,是進(jìn)行各種繪制工作的基礎(chǔ),除了前面介紹的用getpoint函數(shù)外,還可以用下面幾種方法確定點(diǎn)(通過繪制直線的小程序加以說明驗(yàn)證)。 實(shí)例:(setq p1 (30 40) /用禁止求值表,確定P1點(diǎn)的位置
35、 (setq p2 (300 400) (command line p1 p2 ) 直線的繪制直線的繪制LINE 格式:(command “l(fā)ine” P1 P2 P3條件) 功能:將P1、P2、P3.等點(diǎn)用直線連接起來,其中條件可缺省,若條件中輸入“c“,則繪制的將是封閉曲線。多義線繪制多義線繪制格式:(command “pline” “w” 條件)功能:將P1、P2、P3.等點(diǎn)用各種曲線連接起來,其中條件可缺省,若條件中輸入“c“,則繪制的將是封閉曲線。 矩形繪制矩形繪制格式:(command“rectang” 倒角(C)/標(biāo)高(E)/圓角(F)/厚度(T)/寬度(W) 尺寸(D) )功能
36、:繪制符合格式中定義的矩形。圓的繪制圓的繪制格式:(command“circle” 三點(diǎn)(3P)/兩點(diǎn)(2P)/相切、相切、半徑(T)圓心 ) 功能:繪制符合格式中定義的圓,默認(rèn)的輸入方式是圓心、半徑,其它輸入方式需根據(jù)具體選定的形式而定。交點(diǎn)的確定交點(diǎn)的確定格式:(inters )功能:求和所確定的直線和和所確定的直線的交點(diǎn),若存在則返回交點(diǎn),若不存在,則返回nil。如果有任選項(xiàng),且該項(xiàng)為nil,則可求延長線的交點(diǎn)。圖層的設(shè)置圖層的設(shè)置格式:(command “l(fā)ayer” “m” “c” “l(fā)” “l(fā)w” )功能: 設(shè)置和格式中描述相符合的圖層,除圖層名為不可缺省外,其它均可采用默認(rèn)值,當(dāng)
37、調(diào)用圖層時(shí),可只采用格式中的前4項(xiàng)。剖面線繪制剖面線繪制格式:(command “batcht” ) 功能:將 按格式中定義的要求進(jìn)行填充,其中和可默認(rèn),有多種獲取方法,如果是填充剛繪制好的實(shí)體,則可用entlast命令。尺寸標(biāo)注尺寸標(biāo)注格式:(command “dim” ) ) 功能:和 之間按標(biāo)注模式標(biāo)注尺寸,若標(biāo)注內(nèi)容缺省,則按默認(rèn)方式標(biāo)注。文本書寫文本書寫格式:(command “text” )功能:將文字內(nèi)容按格式中的定義書寫出來,如缺省則以左下角為起點(diǎn)。 AutoLISP命令調(diào)用過程命令調(diào)用過程 首先將AUTOLISP的程序用任何一種ASCII碼文本編輯器來編輯,在DOS環(huán)境下可采
38、用EDIT編輯,在WINDOWS環(huán)境下可用附件中的記事本編輯,并注意在保存時(shí)以.LSP為后綴,一般的調(diào)用過程如下。 用編輯器編寫好,以*.LSP存盤。 在AutoCAD中的命令中輸入: (Load“盤符/子目錄/文件名”),回車。 輸入: (文件名、參數(shù)1、參數(shù)2 )注意參數(shù)和參數(shù)之間不要加逗號(hào),回車。 在AutoCAD的界面上自動(dòng)生成圖。本章目錄本章目錄 Visual LISP無需單獨(dú)安裝,我們?cè)诎惭bAutoCAD 2004時(shí)已經(jīng)將其捆綁按安裝在一起,只要在使用時(shí)調(diào)用它即可,這為我們省了不少安裝軟件過程中的麻煩,同時(shí)也使得該軟件和AutoCAD之間的關(guān)系更加緊密。尤其是Visual LISP
39、中的部分Auto LISP程序幾乎可以移植到任何版本的AutoCAD中,而不受版本先后的影響。 啟動(dòng)Visual LISP有兩種方法,但都需首先啟動(dòng)AutoCAD軟件。第一種方法是從AutoCAD菜單中選擇“工具”“AutoLisp”“Visual Lisp編輯器”;第二中方法是在AutoCAD命令行中輸入“vlisp”,啟動(dòng)Visual Lisp編輯器。 Visual LISP的程序在編輯窗口進(jìn)行編輯,編輯時(shí),系統(tǒng)會(huì)自動(dòng)進(jìn)行一些識(shí)別,并將其顯示成不同的顏色。如括號(hào)是紅色;函數(shù)是藍(lán)色,如果想輸?shù)氖歉鞣N函數(shù),一般為表中第一項(xiàng),但輸完后系統(tǒng)沒有自動(dòng)變成藍(lán)色,則說明你輸錯(cuò)了;雙引號(hào)內(nèi)的繪圖命令為粉紅
40、色,包括雙引號(hào)本身;各種變量是黑色;數(shù)字是綠色。掌握這些規(guī)律對(duì)減少編程中的錯(cuò)誤很有幫助。在編程過程中,如果遇到一些較為生疏的函數(shù),可以通過系統(tǒng)的幫助功能加以解決。 調(diào)試是編程工作中一項(xiàng)十分重要又非常繁重的工作。在沒有Visual LISP之前,Auto LISP程序的調(diào)試是十分困難的,常常找不到問題之所在。幸好有了Visual LISP,使調(diào)試工作有了質(zhì)的飛躍。利用其提供的調(diào)試工具和專用工具,一般可以較快地找到問題。系統(tǒng)調(diào)試中最常見的錯(cuò)誤是缺少括號(hào)或有多余括號(hào);其次是錯(cuò)誤函數(shù)或命令,常常是繪圖命令輸錯(cuò),因?yàn)槿艉瘮?shù)錯(cuò)誤,在編寫中可以根據(jù)顏色判斷;還有列表缺陷,被零除及函數(shù)被取消。對(duì)函數(shù)被取消這種
41、現(xiàn)象有點(diǎn)特殊,因?yàn)樗⒉皇钱?dāng)前所編的程序有問題,而是在上一次調(diào)試過程中,所編程序存在缺陷,使的AutoCAD處于命令等待狀態(tài)。這時(shí),需要通過視圖轉(zhuǎn)換,激活A(yù)utoCAD,取消命令等待狀態(tài),就可以了。根據(jù)我們自己開發(fā)程序的經(jīng)驗(yàn),認(rèn)為調(diào)試工作需和整個(gè)軟件的開發(fā)工作結(jié)合起來。在程序開發(fā)的步驟上考慮到調(diào)試工作問題,以采用從下到上的程序編程工作為佳,結(jié)合該方法,作者推薦如下的編程調(diào)試步驟。 將整個(gè)軟件分解成功能相對(duì)獨(dú)立的功能塊,再將功能塊分解成若干個(gè)小程序。將小程序中的每一個(gè)語句,按照先后次序進(jìn)行編輯。在編輯過程中首先利用顏色的改變,糾正一些明顯的錯(cuò)誤,如果對(duì)某一語句把握不大,可直接加載該語句,判斷系統(tǒng)
42、能否通過。關(guān)于加載運(yùn)行可通過選中需要加載的語句,點(diǎn)擊專用工具中欄中的第二個(gè)工具,一般情況下,以編完相對(duì)較完整的一段語句后,再將這段進(jìn)行加載運(yùn)行較好,如所有的賦值語句。一段語句編寫完成,加載運(yùn)行結(jié)果正確,則進(jìn)入下一段語句的編寫。如正確,但根據(jù)錯(cuò)誤提示可明顯找到問題的,則修改后再加載運(yùn)行;如無法根據(jù)錯(cuò)誤提示找到問題的,則可以采用調(diào)試工具欄中的各種方法進(jìn)行錯(cuò)誤查找,如仍無法查到,則需逐句加載,但在逐句加載中,需要補(bǔ)充對(duì)加載語句中所需變量值的設(shè)定工作。通過以上工作,將小程序全局調(diào)通,并進(jìn)行封裝。將同一功能的小程序進(jìn)行組裝,并進(jìn)行調(diào)試,調(diào)試完成,將功能程序進(jìn)行封裝。將不同功能的功能程序進(jìn)行組裝,并進(jìn)行全局調(diào)試,調(diào)試通過,完成軟件基本開發(fā)工作。根據(jù)客戶應(yīng)用的各種情況,對(duì)軟件進(jìn)行各種測試,對(duì)發(fā)現(xiàn)問題進(jìn)行修改,最后得到完善軟件,并將其封裝。本章目錄本章目錄 對(duì)話框是人機(jī)交互的主要界面之一,它具有良好的視覺效果,操作方便、直觀,輸入數(shù)據(jù)與順序無關(guān)。當(dāng)我們編寫好程序,需要通過外界輸入數(shù)據(jù)時(shí),對(duì)話
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版班班通設(shè)備與物聯(lián)網(wǎng)結(jié)合合同2篇
- 二零二五年綠色生態(tài)住宅小區(qū)消防工程設(shè)計(jì)與施工合同3篇
- 二零二五版股份制企業(yè)股份自愿轉(zhuǎn)讓與投資者關(guān)系維護(hù)合同3篇
- 二零二五年度監(jiān)理合同延期補(bǔ)充協(xié)議-責(zé)任劃分與風(fēng)險(xiǎn)承擔(dān)3篇
- 二零二五版中央空調(diào)清洗保養(yǎng)及能耗管理服務(wù)合同3篇
- 二零二五年度國有資產(chǎn)管理委托服務(wù)合同2篇
- 二零二五版股票質(zhì)押擔(dān)保合同范本編制與解析3篇
- 二零二五年度風(fēng)力發(fā)電項(xiàng)目融資合同2篇
- 二零二五年美發(fā)師國際交流聘用合同2篇
- 二零二五年度酒店地毯翻新與維護(hù)服務(wù)合同范本3篇
- 垃圾焚燒發(fā)電環(huán)保培訓(xùn)
- 北京市朝陽區(qū)2024-2025學(xué)年高一(上)期末化學(xué)試卷(含答案)
- 中醫(yī)基礎(chǔ)學(xué)考試題(附答案)
- 2025貴州建筑安全員B證考試題庫附答案
- 2024年杭州師范大學(xué)附屬醫(yī)院高層次衛(wèi)技人才招聘筆試歷年參考題庫頻考點(diǎn)附帶答案
- 2024-2025學(xué)年八年級(jí)歷史上冊(cè)期末復(fù)習(xí)課件
- 2025年云南省大理州事業(yè)單位招聘339人歷年高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2024-2025學(xué)年度第一學(xué)期三年級(jí)數(shù)學(xué)寒假作業(yè) 有答案
- 大型起重機(jī)械現(xiàn)場管理手冊(cè)
- 2024年貴州省公務(wù)員錄用考試《行測》真題及答案解析
- 江蘇省南京市聯(lián)合體2024-2025學(xué)年九年級(jí)上學(xué)期期中學(xué)情分析化學(xué)試卷(無答案)
評(píng)論
0/150
提交評(píng)論