化工制圖AutoCAD實(shí)戰(zhàn)教程與開(kāi)發(fā)隨書(shū)電子第9章課件_第1頁(yè)
化工制圖AutoCAD實(shí)戰(zhàn)教程與開(kāi)發(fā)隨書(shū)電子第9章課件_第2頁(yè)
化工制圖AutoCAD實(shí)戰(zhàn)教程與開(kāi)發(fā)隨書(shū)電子第9章課件_第3頁(yè)
化工制圖AutoCAD實(shí)戰(zhàn)教程與開(kāi)發(fā)隨書(shū)電子第9章課件_第4頁(yè)
化工制圖AutoCAD實(shí)戰(zhàn)教程與開(kāi)發(fā)隨書(shū)電子第9章課件_第5頁(yè)
已閱讀5頁(yè),還剩45頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第9章二次開(kāi)發(fā)及AutoLISP?

AutoCAD二次開(kāi)發(fā)在化工制圖中的應(yīng)用?

AutoLISP語(yǔ)言基礎(chǔ)?VisualLISP基礎(chǔ)?

DCL基礎(chǔ)AutoCAD二次開(kāi)發(fā)在化工制圖中的應(yīng)用本章目錄二次開(kāi)發(fā)的目的及必要性幾種主要的二次開(kāi)發(fā)語(yǔ)言簡(jiǎn)介化工AutoCAD二次軟件開(kāi)發(fā)的思路及步驟目前很多化工技術(shù)人員對(duì)AutoCAD的使用一般還僅限于它自身的各種繪圖功能,使用鼠標(biāo)手工繪制各種圖件,對(duì)其強(qiáng)大的二次開(kāi)發(fā)功能還沒(méi)有進(jìn)行深入使用。如果能使用AutoCAD的二次開(kāi)發(fā)技術(shù)開(kāi)發(fā)出一套軟件,讓AutoCAD自動(dòng)繪制我們目前使用的各種圖件,就可以大大提高作圖效率,發(fā)揮出AutoCAD的強(qiáng)大圖形編輯、修改功能,對(duì)圖件中的各種元素進(jìn)行任意修改,滿足各種不同的圖件格式和繪圖標(biāo)準(zhǔn),由此可見(jiàn),對(duì)于一個(gè)化工技術(shù)人員來(lái)說(shuō),學(xué)會(huì)自己開(kāi)發(fā)AutoCAD二次應(yīng)用軟件顯得十分必要,因?yàn)檫@將大大減少具體的繪制工作,而可以將主要精力集中到設(shè)備的設(shè)計(jì)中去,從而加快化工設(shè)備的開(kāi)發(fā)速度。近幾年來(lái),隨著計(jì)算機(jī)軟、硬件技術(shù)的飛速發(fā)展及其應(yīng)用的普及,也帶來(lái)了化工領(lǐng)域使用計(jì)算機(jī)的浪潮。首先是各課程教學(xué)使用了CAI課件,學(xué)生們可以清楚地看到各種物質(zhì)的具體顏色,并可以看到動(dòng)畫(huà)反應(yīng),讓學(xué)生們能夠形象生動(dòng)地上課。然后是各種實(shí)驗(yàn)仿真軟件的出現(xiàn),讓學(xué)生們不用親自下到工廠,也不用浪費(fèi)任何原料,在沒(méi)有危險(xiǎn)的情況下就可以完成對(duì)實(shí)驗(yàn)過(guò)程或者是生產(chǎn)流程的學(xué)習(xí)和實(shí)習(xí)。同時(shí)計(jì)算機(jī)可以對(duì)反應(yīng)進(jìn)行模擬,對(duì)實(shí)驗(yàn)數(shù)據(jù)的擬合都大大方便了化工工作者。隨之誕生的各種化工專(zhuān)用軟件,給化學(xué)工業(yè)的發(fā)展注入了新鮮血液,使化學(xué)工業(yè)的發(fā)展如虎添翼。AutoCAD二次開(kāi)發(fā)在化工制圖中的應(yīng)用目前,隨著化學(xué)工業(yè)的進(jìn)一步向前發(fā)展,各種新的機(jī)械設(shè)備被人們?cè)O(shè)計(jì)和制造,這些設(shè)備的工程圖都是一件很大的工程。比如一個(gè)完整熱交換器圖紙,就需要一個(gè)專(zhuān)人1~2天的工夫才能完成。利用AutoCAD的二次開(kāi)發(fā)技術(shù),可以編出對(duì)熱交換器的圖進(jìn)行批處理的程序,只需通過(guò)簡(jiǎn)單的人機(jī)會(huì)話,計(jì)算機(jī)能自動(dòng)繪制出圖紙,這也是化工技術(shù)人員學(xué)習(xí)掌握AutoCAD二次開(kāi)發(fā)技術(shù)的目的之所在。隨著化學(xué)工業(yè)的不斷日新月異,對(duì)設(shè)備圖紙繪制的速度要求也將越來(lái)越快,利用AutoCAD二次開(kāi)發(fā)技術(shù)開(kāi)發(fā)而成的軟件直接繪制各種設(shè)備的技術(shù)將在化學(xué)工業(yè)中得到更加廣泛的應(yīng)用,其開(kāi)發(fā)技術(shù)必將伴著化學(xué)工業(yè)一起發(fā)展。AutoCAD二次開(kāi)發(fā)在化工制圖中的應(yīng)用幾種主要的二次開(kāi)發(fā)語(yǔ)言簡(jiǎn)介⑴AutoLISPAutoLISP語(yǔ)言是AutoCAD所支持的一種內(nèi)嵌式語(yǔ)言,它由美國(guó)Autodesk公司開(kāi)發(fā),其目的是使用戶十分方便地利用AutoLISP編程語(yǔ)言對(duì)AutoCAD進(jìn)行二次開(kāi)發(fā),它采用了與LISP語(yǔ)言中的CommonLISP最近的語(yǔ)法和習(xí)慣約定,同時(shí)又針對(duì)AutoCAD增加了許多新的功能,使用戶可以直接調(diào)用幾乎全部的AutoCAD命令,因此它既具有一般高級(jí)語(yǔ)言的基本結(jié)構(gòu)和功能,又具有AutoCAD強(qiáng)大的圖形處理能力,是目前計(jì)算機(jī)輔助設(shè)計(jì)和繪圖中較廣泛采用的語(yǔ)言之一。⑵VisualLISPVisualLISP(簡(jiǎn)稱(chēng)VLISP)是為加速AutoLISP程序開(kāi)發(fā)而設(shè)計(jì)的強(qiáng)有力的工具。它提供了一個(gè)完整的集成開(kāi)發(fā)環(huán)境(包括編譯器、調(diào)試器及其他工具,它可以顯著地提高自定義AutoCAD的效率)。VisualLISP提供的主要工具有:文本編輯器、格式編排器、語(yǔ)法檢查器、源代碼調(diào)試器、檢驗(yàn)和監(jiān)視工具、文件編譯器、工程管理系統(tǒng)/快捷相關(guān)幫助與自動(dòng)匹配功能和智能化控制臺(tái)等。VisualLISP克服了AutoLISP一直以來(lái)開(kāi)發(fā)中所存在的諸多不便和某些局限性。從語(yǔ)言方面看,VisualLISP對(duì)AutoLISP語(yǔ)言進(jìn)行了擴(kuò)展,可以通過(guò)MicrosoftActiveXAutomation接口與對(duì)象交互。同時(shí),通過(guò)實(shí)現(xiàn)事件反應(yīng)器函數(shù),還擴(kuò)展了AutoLISP響應(yīng)事件的能力。VisualLISP已經(jīng)被完整地集成到AutoCAD中。AutoCAD二次開(kāi)發(fā)在化工制圖中的應(yīng)用⑸ObjectARX

ObjectARX是一種嶄新的開(kāi)發(fā)AutoCAD應(yīng)用程序的工具,她以C++為編程語(yǔ)言,采用先進(jìn)的面向?qū)ο蟮木幊淘?,提供可與AutoCAD直接交互的開(kāi)發(fā)環(huán)境,能使用戶方便快捷地開(kāi)發(fā)出高效簡(jiǎn)潔的AutoCAD應(yīng)用程序。ObjectARX并沒(méi)有包含在AutoCAD中,可在AutoDESK公司網(wǎng)站中去下載,其最新版本是ObjectARXforAutoCAD2005,它能夠?qū)utoCAD的所有事務(wù)進(jìn)行完整的、先進(jìn)的、面向?qū)ο蟮脑O(shè)計(jì)與開(kāi)發(fā),并且開(kāi)發(fā)的應(yīng)用程序速度更快、集成度更高、穩(wěn)定性更強(qiáng)。⑹ActiveXAutomation ActiveX技術(shù)來(lái)源于OLE(ObjectLinkingandEmbedding)技術(shù)。OLE最初是對(duì)象鏈接與嵌入,后來(lái)發(fā)展成為復(fù)合文檔技術(shù),包括文字、圖片、聲音、動(dòng)畫(huà)片和視頻等媒體可以共同存在于一個(gè)文檔中。它們可以由不同的應(yīng)用程序產(chǎn)生,同時(shí)也可以在該文檔中編輯。如果應(yīng)用程序支持OLE文檔,則在不同應(yīng)用程序之間的切換由OLE自動(dòng)完成。OLE技術(shù)和其它技術(shù)共同作用,從而實(shí)現(xiàn)不同應(yīng)用程序之間的無(wú)縫鏈接。自動(dòng)化技術(shù)(Automation)允許一個(gè)應(yīng)用程序驅(qū)動(dòng)另外一個(gè)程序。驅(qū)動(dòng)程序被稱(chēng)為自動(dòng)化客戶,另一個(gè)為自動(dòng)化服務(wù)器。自動(dòng)化技術(shù)后來(lái)發(fā)展成為ActiveXAutomation。AutoCAD二次開(kāi)發(fā)在化工制圖中的應(yīng)用⑺VisualJava

Java是最早由Sun公司創(chuàng)建的一種頗具魅力的程序設(shè)計(jì)語(yǔ)言,她是針對(duì)嵌入系統(tǒng)而設(shè)計(jì)的。像許多開(kāi)發(fā)語(yǔ)言一樣,Java是一組實(shí)時(shí)庫(kù)的集合,可為軟件開(kāi)發(fā)者提供多種工具來(lái)創(chuàng)建軟件、管理用戶接口、進(jìn)行網(wǎng)絡(luò)通訊、發(fā)布應(yīng)用程序等。對(duì)AutoCAD用戶和開(kāi)發(fā)者而言,Java代表著新一代的編程語(yǔ)言,它主要用于開(kāi)發(fā)出全新的優(yōu)秀產(chǎn)品。AutoCAD二次開(kāi)發(fā)在化工制圖中的應(yīng)用化工AutoCAD二次軟件開(kāi)發(fā)的思路及步驟化工AutoCAD二次軟件的開(kāi)發(fā)和其它軟件的開(kāi)發(fā)一樣,均需遵循一定的規(guī)律。一般來(lái)說(shuō),一個(gè)完善的AutoCAD二次軟件開(kāi)發(fā)過(guò)程可以分成4個(gè)階段的內(nèi)容,它們分別是系統(tǒng)規(guī)劃、系統(tǒng)開(kāi)發(fā)、系統(tǒng)運(yùn)行與維護(hù)、系統(tǒng)更新。而系統(tǒng)規(guī)劃又可以分成3個(gè)方面的內(nèi)容,它們分別是戰(zhàn)略規(guī)劃、需求分析、資源分配。在這個(gè)階段,我們主要任務(wù)是確定所需要開(kāi)發(fā)軟件的目的、使用對(duì)象、使用者的要求、開(kāi)發(fā)者目前的能力及擁有的資源。軟件開(kāi)發(fā)的第二階段是系統(tǒng)開(kāi)發(fā),它包括系統(tǒng)分析、系統(tǒng)設(shè)計(jì)、系統(tǒng)實(shí)施。這時(shí)的主要任務(wù)根據(jù)第一階段已經(jīng)做的工作基礎(chǔ)上,提出所開(kāi)發(fā)軟件的邏輯方案、確定系統(tǒng)開(kāi)發(fā)中每一步的內(nèi)容和任務(wù),在此基礎(chǔ)上,再進(jìn)行系統(tǒng)總體結(jié)構(gòu)設(shè)計(jì),提出系統(tǒng)總體布局的方案。至此,軟件開(kāi)發(fā)工作還停留在邏輯開(kāi)發(fā)狀態(tài),尚未進(jìn)入具體的編碼工作。軟件開(kāi)發(fā)完成第二階段的系統(tǒng)設(shè)計(jì)后,就進(jìn)入了實(shí)質(zhì)性的編碼工作,也就是說(shuō)進(jìn)入了系統(tǒng)的實(shí)施階段,這時(shí)要完成各種編碼工作,完善系統(tǒng)各個(gè)接口之間的聯(lián)絡(luò),改善界面的友好程度,對(duì)整個(gè)軟件進(jìn)行組裝及調(diào)試,最后完成交付使用前的各項(xiàng)工作。如該保密的部分需要進(jìn)行封裝;可以公開(kāi)的部分需要做好友善的人機(jī)界面。AutoCAD二次開(kāi)發(fā)在化工制圖中的應(yīng)用AutoLISP語(yǔ)言基礎(chǔ)本章目錄基本運(yùn)算基本函數(shù)編程中常用的分支及條件判斷函數(shù)常用的繪圖命令A(yù)utoLISP命令調(diào)用過(guò)程

⑴加法

格式:(+<數(shù)><數(shù)>…)功能:求出所列數(shù)的總和實(shí)例:(+2030)結(jié)果為50(+15-10)結(jié)果為5⑵減法格式:(-<數(shù)><數(shù)>…)功能:求出第一個(gè)數(shù)逐次減去后面數(shù)的差實(shí)例:(-1203050)結(jié)果為40(-15-10)結(jié)果為25⑶乘法格式:(*<數(shù)><數(shù)>…)功能:求出所列數(shù)的乘積實(shí)例:(*2030)結(jié)果為600(*1.5-102)結(jié)果為-30⑷除法格式:(/<數(shù)><數(shù)>…)功能:求出第一個(gè)數(shù)逐次除以后面數(shù)的商實(shí)例:(/20)結(jié)果為20(/1302)結(jié)果為65(/330)由于表中的兩個(gè)元素均為整型數(shù),結(jié)果也為整型數(shù),故結(jié)果為0(/3.030)結(jié)果為0.1

(/30(/69))系統(tǒng)顯示被0除,原因在于表(/69)的值為0AutoLISP語(yǔ)言基礎(chǔ)基本運(yùn)算⑼求絕對(duì)值格式:(abs<數(shù)>)功能:求<數(shù)>的絕對(duì)值實(shí)例:(abs-3)結(jié)果為3⑽求最大值格式:(max<數(shù)1><數(shù)2>…)功能:求<數(shù)1>,<數(shù)2>…的最大值實(shí)例:(max23410)結(jié)果為10⑾求余數(shù)格式:(rem<數(shù)1><數(shù)2>…)功能:求<數(shù)1>整除<數(shù)2>的余數(shù),若參數(shù)多于兩個(gè),則將<數(shù)1>整除<數(shù)2>后的余數(shù)再整除<數(shù)3>,求出余數(shù),以此類(lèi)推。實(shí)例:(rem5094)結(jié)果為1AutoLISP語(yǔ)言基礎(chǔ)基本運(yùn)算AutoLISP語(yǔ)言基礎(chǔ)⑴正弦函數(shù)SIN格式:(sin<角度>),其中<角度>用弧度表示功能:求<角度>的正弦值實(shí)例:(sin(/pi2))結(jié)果為1⑵余弦函數(shù)COS格式:(cos<角度>),其中<角度>用弧度表示功能:求<角度>余弦值實(shí)例:(cos(/pi2))結(jié)果為0⑶正切TAN格式:(tan<角度>),其中<角度>用弧度表示功能:求<角度>正切值實(shí)例:(tan(/pi4))結(jié)果為1⑷反正切函數(shù)ATAN格式:(atan<數(shù)>)功能:求<數(shù)>反正切值,單位為弧度,為[-π/2,π/2]實(shí)例:(atan(1))結(jié)果為0.785398,即(π/4)實(shí)例:(cos(/pi2))結(jié)果為0基本函數(shù)⑸取整函數(shù)FIX格式:(fix<數(shù)>)功能:求<數(shù)>的整數(shù)部分,相當(dāng)于高級(jí)語(yǔ)言中的“INT(數(shù))”語(yǔ)句。實(shí)例:(fix7.8)結(jié)果為7(fix-7.8)結(jié)果為-7(fix9)結(jié)果為9⑹實(shí)型化函數(shù)FLOAT格式:(float<數(shù)>)功能:求<數(shù)>轉(zhuǎn)化為實(shí)型數(shù),不考慮該數(shù)原來(lái)的類(lèi)型實(shí)例:(float3)結(jié)果為3.0(float3.3)結(jié)果為3.3⑺賦值函數(shù)SETQ 格式:(setq<變量1><表達(dá)式1>[<變量2><表達(dá)式2>]…)功能:將表達(dá)式的值賦給變量,變量和表達(dá)式需成對(duì)出現(xiàn)實(shí)例:(setqa10)結(jié)果a=10(setqs“it”)結(jié)果s=“it”(setqb123c10d45)結(jié)果b=123c=10d=45(setqt(+3445))結(jié)果t=79(setqP1‘(3445))(setqp1'(3040))//確定點(diǎn)P1的坐標(biāo)(setqp2'(300400))//確定點(diǎn)P2的坐標(biāo)(command“l(fā)ine”p1p2“”)//繪制從P1點(diǎn)到P2點(diǎn)的直線AutoLISP語(yǔ)言基礎(chǔ)基本函數(shù)⑾LAST函數(shù)格式:(last<表>),表必須為引用表而非標(biāo)準(zhǔn)表,但可以是簡(jiǎn)單表,也可以是嵌套表。功能:提取<表>的頂層中最后一個(gè)元素實(shí)例:(last'(123))結(jié)果為3(last‘(123(45)))結(jié)果為(45)⑿NTH函數(shù)格式:(nth<序號(hào)><表>),表必須為引用表而非標(biāo)準(zhǔn)表,但可以是簡(jiǎn)單表,也可以是嵌套表。功能:提取<表>中第<序號(hào)>個(gè)元素,注意第一個(gè)元素的序號(hào)為0號(hào),以此類(lèi)推。實(shí)例:(nth2'(23(45)5))結(jié)果為(45)(nth3'(23(45)5))結(jié)果為5⒀LIST函數(shù)格式:(list<表達(dá)式1><表達(dá)式2>……)功能:將所有的<表達(dá)式>按原位置構(gòu)成新表,可用于確定點(diǎn)的坐標(biāo)位置。實(shí)例:(list23'(56))結(jié)果為(23(56))(list23)結(jié)果為(23)下面是一個(gè)利用list確定點(diǎn)的位置,繪制圓的小程序:(setqp1(list22233))(setqp2(list200300))(command"circle"p2160)(command"circle"p1160)AutoLISP語(yǔ)言基礎(chǔ)基本函數(shù)⒁ATOF函數(shù)格式:(atof<數(shù)字串>)功能:將<數(shù)字串>轉(zhuǎn)換成實(shí)型數(shù),返回實(shí)型數(shù)實(shí)例:(atof"23")返回結(jié)果為23.0⒂ASCII函數(shù)格式:(ascii<字符串>)功能:將<字符串>中第一個(gè)字符轉(zhuǎn)換成ASCII碼,并返回該值實(shí)例:(ascii"bc")返回結(jié)果為98⒃CHR函數(shù)格式:(chr<整數(shù)>)功能:將ASCII碼為<整數(shù)>的轉(zhuǎn)換成相應(yīng)字符,并返回該字符實(shí)例:(chr69)返回結(jié)果為"E"(chr80)返回結(jié)果為"P“⒄ITOA函數(shù)格式:(itoa<整數(shù)>)功能:將<整數(shù)>轉(zhuǎn)換成整數(shù)字符串實(shí)例:(itoa5)返回結(jié)果為"5“AutoLISP語(yǔ)言基礎(chǔ)基本函數(shù)⒅ATOI函數(shù)格式:(atoi<數(shù)字串>)功能:將<數(shù)字串>轉(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返回結(jié)果為0說(shuō)明:當(dāng)數(shù)字串中有非數(shù)字字符時(shí),則轉(zhuǎn)換到第一個(gè)非數(shù)字原子時(shí)終止。⒆STRCAT函數(shù)格式:(strcat<字符串1><字符串2>……)功能:將<字符串>按先后順序頭尾相連起來(lái),組成一個(gè)新的字符串。實(shí)例:(strcat"bc""etr""ty")返回結(jié)果為"bcetrty"AutoLISP語(yǔ)言基礎(chǔ)基本函數(shù)編程中常用的分支及條件判斷函數(shù)

在程序編寫(xiě)中經(jīng)常會(huì)用到一些條件判斷函數(shù)及循環(huán)函數(shù),沒(méi)有這些函數(shù),就難以完成一個(gè)理想的程序,下面將一些在編程中使用程度較高的函數(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,常作為條件用于條件判斷語(yǔ)句和循環(huán)判斷語(yǔ)句中,這一點(diǎn)將在下面講解中提到。AutoLISP共有6種關(guān)系運(yùn)算函數(shù),它們分別是“=”等于、“/=”不等于、“<”小于、“>”大于、“<=”小于等于、“>=”大于等于。其中等于的關(guān)系函數(shù),其表達(dá)式只能兩個(gè),下面是6種關(guān)系函數(shù)的實(shí)際例子:AutoLISP語(yǔ)言基礎(chǔ)(<2456)返回結(jié)果T(<2453)返回結(jié)果nil,全程比較(>8739)返回結(jié)果nil,全程比較(>8731)返回結(jié)果T(=22)返回結(jié)果T(="s""b")返回結(jié)果nil(/=123)返回結(jié)果T(/=113)返回結(jié)果nil,只比較前面兩個(gè)表達(dá)式(<=335)返回結(jié)果T(>=551)返回結(jié)果T⑵邏輯運(yùn)算函數(shù)AutoLISP共有3種邏輯運(yùn)算函數(shù),分別是邏輯和AND、邏輯或OR、邏輯非NOT,下面通過(guò)實(shí)例說(shuō)明其應(yīng)用。(andadc3)返回結(jié)果nil,只要有一個(gè)表達(dá)式為假,則返回nil(anddc)返回結(jié)果nil(setqa3b4)返回結(jié)果4,返回最后一個(gè)賦值(andab)返回結(jié)果T,由于前面給a、b賦了值(and(<23)(+13)(>35))返回結(jié)果nil(or12ab)返回結(jié)果T,只要有一個(gè)表達(dá)式為真,則返回T(or(>42)(<42))返回結(jié)果T(not2)返回結(jié)果nil(not(>69))返回結(jié)果T⑶二分支條件函數(shù)IF格式:(if<測(cè)試表達(dá)式><成立表達(dá)式><非表達(dá)式>)功能:對(duì)<測(cè)試表達(dá)式>進(jìn)行運(yùn)算,若<測(cè)試表達(dá)式>成立,則執(zhí)行<成立表達(dá)式>,否則,執(zhí)行<非表達(dá)式>,兩者必居其一,所以稱(chēng)之為二分支條件函數(shù),是在編程中經(jīng)常用到的條件判斷函數(shù)。下面是幾個(gè)實(shí)際例子:(if(=13)35)測(cè)試式不成立,執(zhí)行第二個(gè)表達(dá)式,第二個(gè)表達(dá)式為原子,返回5(if(<13)(setqa2)(setqa9))測(cè)試式成立,執(zhí)行第一個(gè)表達(dá)式,返回2(if(=13)"yes")測(cè)試式不成立,但無(wú)第二個(gè)表達(dá)式,返回nil(if1"yes""no")測(cè)試表達(dá)式為1,雖然不為T(mén),但也不為nil,仍執(zhí)行第一表達(dá)式,返回“yes”AutoLISP語(yǔ)言基礎(chǔ)⑺循環(huán)函數(shù)在各種程序編寫(xiě)中,循環(huán)語(yǔ)句是不可缺少的,AutoLISP的兩種主要循環(huán)函數(shù)是WHILE函數(shù)和REPEAT函數(shù),下面分別介紹之。①WHILE函數(shù)格式:(while<測(cè)試表達(dá)式>[標(biāo)準(zhǔn)表1][標(biāo)準(zhǔn)表2]:)功能:先對(duì)測(cè)試表達(dá)式進(jìn)行測(cè)試,若其值不為nil,則依次執(zhí)行下面的各個(gè)[標(biāo)準(zhǔn)表],執(zhí)行完各[標(biāo)準(zhǔn)表]后,再返回來(lái)對(duì)測(cè)試表達(dá)式進(jìn)行測(cè)試,直至測(cè)試表達(dá)式為nil,停止循環(huán)執(zhí)行。②REPEAT函數(shù)格式:(repeat<次數(shù)>[標(biāo)準(zhǔn)表1][標(biāo)準(zhǔn)表2]:)功能:按該定的次數(shù)進(jìn)行循環(huán)計(jì)算式為nil,停止循環(huán)執(zhí)行。AutoLISP語(yǔ)言基礎(chǔ)常用的繪圖命令⑴常用的交互命令在程序編寫(xiě)中經(jīng)常要用到一些交互式命令,通過(guò)交互命令,可提高程序的人機(jī)對(duì)話能力。AutoLISP也提供了一些常見(jiàn)的交互命令,下面分別介紹。①輸入整型數(shù)GETINT格式:(getint[提示])功能:該函數(shù)提示用戶輸入一個(gè)整型數(shù),并返回該數(shù),常和賦值函數(shù)SETQ合用實(shí)例:(setqn(getint“n=”))//等待用戶輸入一個(gè)整型數(shù),并將該數(shù)賦值給n。②輸入實(shí)型數(shù)GETREAL格式:(getreal[提示])功能:該函數(shù)提示用戶輸入一個(gè)整型數(shù),并返回該數(shù),常和賦值函數(shù)SETQ合用實(shí)例:(setqa(getreal“a=”))//等待用戶輸入一個(gè)實(shí)型數(shù),并將該數(shù)賦值給a。③輸入字符串GETSTRING格式:(getstring[提示])功能:該函數(shù)提示用戶輸入一個(gè)字符串,并返回該數(shù),常和賦值函數(shù)SETQ合用實(shí)例:(setqm(getstring“yourname”))//等待用戶輸入一個(gè)字符串,并將該字符串賦值給m,若輸入xiaodong,返回“xiaodong”。需要注意的是輸入字符串時(shí),千萬(wàn)別用空格鍵,否則只把空格鍵以前的內(nèi)容作為輸入的字符串。AutoLISP語(yǔ)言基礎(chǔ)④輸入點(diǎn)GETPOINT格式:(getpoint[基點(diǎn)][提示])功能:該函數(shù)提示用戶輸入一個(gè)點(diǎn),若有基點(diǎn),這將從基點(diǎn)到輸入的點(diǎn)之間畫(huà)一條直線拖動(dòng)直線,但命令執(zhí)行過(guò)后消失。實(shí)例:(setqP1(getpoint‘(4050)“第二點(diǎn)”))//等待用戶從鍵盤(pán)輸入點(diǎn)或用光標(biāo)選點(diǎn)。⑤輸入距離值GETDIST格式:(getdist[提示])功能:該函數(shù)提示用戶輸入一個(gè)距離值。實(shí)例:(setqtspac(getdist“輸入距離”))//等待用戶從鍵盤(pán)輸入某一數(shù)值。⑵點(diǎn)的確定確定點(diǎn)的位置,是進(jìn)行各種繪制工作的基礎(chǔ),除了前面介紹的用getpoint函數(shù)外,還可以用下面幾種方法確定點(diǎn)(通過(guò)繪制直線的小程序加以說(shuō)明驗(yàn)證)。實(shí)例:(setqp1'(3040))//用禁止求值表,確定P1點(diǎn)的位置(setqp2'(300400))(command"line"p1p2"")⑶直線的繪制LINE格式:(command“l(fā)ine”P(pán)1P2P3…………[條件])功能:將P1、P2、P3…….等點(diǎn)用直線連接起來(lái),其中[條件]可缺省,若條件中輸入“c“,則繪制的將是封閉曲線。AutoLISP語(yǔ)言基礎(chǔ)⑷多義線繪制格式:(command“pline”<起點(diǎn)>“w”<起點(diǎn)線寬><末點(diǎn)線寬><第二點(diǎn)>……<末點(diǎn)>[條件])功能:將P1、P2、P3…….等點(diǎn)用各種曲線連接起來(lái),其中[條件]可缺省,若條件中輸入“c“,則繪制的將是封閉曲線。⑸矩形繪制格式:(command“rectang”[倒角(C)/標(biāo)高(E)/圓角(F)/厚度(T)/寬度(W)]<指定另一個(gè)角點(diǎn)>[尺寸(D)]<指定另一個(gè)角點(diǎn)>)功能:繪制符合格式中定義的矩形。⑹圓的繪制格式:(command“circle”[三點(diǎn)(3P)/兩點(diǎn)(2P)/相切、相切、半徑(T)]<圓心<半徑>)功能:繪制符合格式中定義的圓,默認(rèn)的輸入方式是圓心、半徑,其它輸入方式需根據(jù)具體選定的形式而定。⑺交點(diǎn)的確定格式:(inters<端點(diǎn)1><端點(diǎn)2><端點(diǎn)3><端點(diǎn)4>[<任選項(xiàng)>])功能:求<端點(diǎn)1>和<端點(diǎn)2>所確定的直線和<端點(diǎn)3>和<端點(diǎn)4>所確定的直線的交點(diǎn),若存在則返回交點(diǎn),若不存在,則返回nil。如果有任選項(xiàng),且該項(xiàng)為nil,則可求延長(zhǎng)線的交點(diǎn)。AutoLISP語(yǔ)言基礎(chǔ)⑻圖層的設(shè)置格式:(command“l(fā)ayer”“m”<圖層名>“c”<圖層顏色>“l(fā)”<圖層線型>“l(fā)w”<圖層線寬>"")功能:設(shè)置和格式中描述相符合的圖層,除圖層名為不可缺省外,其它均可采用默認(rèn)值,當(dāng)調(diào)用圖層時(shí),可只采用格式中的前4項(xiàng)。⑼剖面線繪制格式:(command“batcht”<填充圖案模式>[<比例>][<角度>]<填充對(duì)象>)功能:將<填充對(duì)象>按格式中定義的要求進(jìn)行填充,其中[<比例>]和[<角度>]可默認(rèn),<填充對(duì)象>有多種獲取方法,如果是填充剛繪制好的實(shí)體,則可用entlast命令。⑽尺寸標(biāo)注格式:(command“dim”<標(biāo)注模式><標(biāo)注起點(diǎn)><標(biāo)注終點(diǎn)><標(biāo)注線位置中點(diǎn)>)[<標(biāo)注內(nèi)容>])功能:<標(biāo)注起點(diǎn)>和<標(biāo)注終點(diǎn)>之間按標(biāo)注模式標(biāo)注尺寸,若標(biāo)注內(nèi)容缺省,則按默認(rèn)方式標(biāo)注。⑾文本書(shū)寫(xiě)格式:(command“text”[<起點(diǎn)類(lèi)型>]<起點(diǎn)><字高><字旋轉(zhuǎn)角度4><文字內(nèi)容>)功能:將文字內(nèi)容按格式中的定義書(shū)寫(xiě)出來(lái),如缺省[<起點(diǎn)類(lèi)型>]則以左下角為起點(diǎn)。AutoLISP語(yǔ)言基礎(chǔ)AutoLISP命令調(diào)用過(guò)程首先將AUTOLISP的程序用任何一種ASCII碼文本編輯器來(lái)編輯,在DOS環(huán)境下可采用EDIT編輯,在WINDOWS環(huán)境下可用附件中的記事本編輯,并注意在保存時(shí)以.LSP為后綴,一般的調(diào)用過(guò)程如下。①用編輯器編寫(xiě)好,以*.LSP存盤(pán)。②在AutoCAD中的命令中輸入:(Load“盤(pán)符/子目錄/文件名”),回車(chē)。③輸入:(文件名、參數(shù)1、參數(shù)2……)[注意參數(shù)和參數(shù)之間不要加逗號(hào)],回車(chē)。④在AutoCAD的界面上自動(dòng)生成圖。AutoLISP語(yǔ)言基礎(chǔ)VisualLISP基礎(chǔ)本章目錄安裝啟動(dòng)編輯調(diào)試安裝

VisualLISP無(wú)需單獨(dú)安裝,我們?cè)诎惭bAutoCAD2004時(shí)已經(jīng)將其捆綁按安裝在一起,只要在使用時(shí)調(diào)用它即可,這為我們省了不少安裝軟件過(guò)程中的麻煩,同時(shí)也使得該軟件和AutoCAD之間的關(guān)系更加緊密。尤其是VisualLISP中的部分AutoLISP程序幾乎可以移植到任何版本的AutoCAD中,而不受版本先后的影響。VisualLISP基礎(chǔ)啟動(dòng)

啟動(dòng)VisualLISP有兩種方法,但都需首先啟動(dòng)AutoCAD軟件。第一種方法是從AutoCAD菜單中選擇“工具”>>“AutoLisp”>>“VisualLisp編輯器”;第二中方法是在AutoCAD命令行中輸入“vlisp”,啟動(dòng)VisualLisp編輯器。VisualLISP基礎(chǔ)編輯VisualLISP的程序在編輯窗口進(jìn)行編輯,編輯時(shí),系統(tǒng)會(huì)自動(dòng)進(jìn)行一些識(shí)別,并將其顯示成不同的顏色。如括號(hào)是紅色;函數(shù)是藍(lán)色,如果想輸?shù)氖歉鞣N函數(shù),一般為表中第一項(xiàng),但輸完后系統(tǒng)沒(méi)有自動(dòng)變成藍(lán)色,則說(shuō)明你輸錯(cuò)了;雙引號(hào)內(nèi)的繪圖命令為粉紅色,包括雙引號(hào)本身;各種變量是黑色;數(shù)字是綠色。掌握這些規(guī)律對(duì)減少編程中的錯(cuò)誤很有幫助。在編程過(guò)程中,如果遇到一些較為生疏的函數(shù),可以通過(guò)系統(tǒng)的幫助功能加以解決。VisualLISP基礎(chǔ)調(diào)試調(diào)試是編程工作中一項(xiàng)十分重要又非常繁重的工作。在沒(méi)有VisualLISP之前,AutoLISP程序的調(diào)試是十分困難的,常常找不到問(wèn)題之所在。幸好有了VisualLISP,使調(diào)試工作有了質(zhì)的飛躍。利用其提供的調(diào)試工具和專(zhuān)用工具,一般可以較快地找到問(wèn)題。系統(tǒng)調(diào)試中最常見(jiàn)的錯(cuò)誤是缺少括號(hào)或有多余括號(hào);其次是錯(cuò)誤函數(shù)或命令,常常是繪圖命令輸錯(cuò),因?yàn)槿艉瘮?shù)錯(cuò)誤,在編寫(xiě)中可以根據(jù)顏色判斷;還有列表缺陷,被零除及函數(shù)被取消。對(duì)函數(shù)被取消這種現(xiàn)象有點(diǎn)特殊,因?yàn)樗⒉皇钱?dāng)前所編的程序有問(wèn)題,而是在上一次調(diào)試過(guò)程中,所編程序存在缺陷,使的AutoCAD處于命令等待狀態(tài)。這時(shí),需要通過(guò)視圖轉(zhuǎn)換,激活A(yù)utoCAD,取消命令等待狀態(tài),就可以了。根據(jù)我們自己開(kāi)發(fā)程序的經(jīng)驗(yàn),認(rèn)為調(diào)試工作需和整個(gè)軟件的開(kāi)發(fā)工作結(jié)合起來(lái)。在程序開(kāi)發(fā)的步驟上考慮到調(diào)試工作問(wèn)題,以采用從下到上的程序編程工作為佳,結(jié)合該方法,作者推薦如下的編程調(diào)試步驟。①將整個(gè)軟件分解成功能相對(duì)獨(dú)立的功能塊,再將功能塊分解成若干個(gè)小程序。VisualLISP基礎(chǔ)②將小程序中的每一個(gè)語(yǔ)句,按照先后次序進(jìn)行編輯。在編輯過(guò)程中首先利用顏色的改變,糾正一些明顯的錯(cuò)誤,如果對(duì)某一語(yǔ)句把握不大,可直接加載該語(yǔ)句,判斷系統(tǒng)能否通過(guò)。關(guān)于加載運(yùn)行可通過(guò)選中需要加載的語(yǔ)句,點(diǎn)擊專(zhuān)用工具中欄中的第二個(gè)工具,一般情況下,以編完相對(duì)較完整的一段語(yǔ)句后,再將這段進(jìn)行加載運(yùn)行較好,如所有的賦值語(yǔ)句。一段語(yǔ)句編寫(xiě)完成,加載運(yùn)行結(jié)果正確,則進(jìn)入下一段語(yǔ)句的編寫(xiě)。如正確,但根據(jù)錯(cuò)誤提示可明顯找到問(wèn)題的,則修改后再加載運(yùn)行;如無(wú)法根據(jù)錯(cuò)誤提示找到問(wèn)題的,則可以采用調(diào)試工具欄中的各種方法進(jìn)行錯(cuò)誤查找,如仍無(wú)法查到,則需逐句加載,但在逐句加載中,需要補(bǔ)充對(duì)加載語(yǔ)句中所需變量值的設(shè)定工作。通過(guò)以上工作,將小程序全局調(diào)通,并進(jìn)行封裝。③將同一功能的小程序進(jìn)行組裝,并進(jìn)行調(diào)試,調(diào)試完成,將功能程序進(jìn)行封裝。④將不同功能的功能程序進(jìn)行組裝,并進(jìn)行全局調(diào)試,調(diào)試通過(guò),完成軟件基本開(kāi)發(fā)工作。⑤根據(jù)客戶應(yīng)用的各種情況,對(duì)軟件進(jìn)行各種測(cè)試,對(duì)發(fā)現(xiàn)問(wèn)題進(jìn)行修改,最后得到完善軟件,并將其封裝。VisualLISP基礎(chǔ)DCL基礎(chǔ)本章目錄定義控件程序編輯軟件調(diào)試及加載定義對(duì)話框是人機(jī)交互的主要界面之一,它具有良好的視覺(jué)效果,操作方便、直觀,輸入數(shù)據(jù)與順序無(wú)關(guān)。當(dāng)我們編寫(xiě)好程序,需要通過(guò)外界輸入數(shù)據(jù)時(shí),對(duì)話框是一種首選的交互工具。對(duì)話框可以用DCL(DialogControlLanguage,即對(duì)話框控制語(yǔ)言)來(lái)編寫(xiě)。DCL本身可直接在VisualLISP的編輯框中按規(guī)律編寫(xiě),并進(jìn)行調(diào)試和預(yù)覽工作,編輯完成后,將其后綴取為“.dcl”保存,然后在主程序中用VisualLISP語(yǔ)句調(diào)用即可??上蛴脩籼峁﹫D形的交互環(huán)境,使操作更為方便和直觀。DCL文件由ASCII碼組成,后綴為“.dcl”。DCL基礎(chǔ)控件控件是DCL中的主要組成部分,編寫(xiě)對(duì)話框主要就是編寫(xiě)各種控件,對(duì)各種控件的屬性進(jìn)行定義,常見(jiàn)的控件主要有Button(按鈕)、Edit_box(編輯框)、Image

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論