第9章_CAD文字與表格的使用.pdf_第1頁
第9章_CAD文字與表格的使用.pdf_第2頁
第9章_CAD文字與表格的使用.pdf_第3頁
第9章_CAD文字與表格的使用.pdf_第4頁
第9章_CAD文字與表格的使用.pdf_第5頁
已閱讀5頁,還剩45頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第第9 9章章 二次開發(fā)及二次開發(fā)及AutoLISPAutoLISP AutoCAD AutoCAD 二次開發(fā)在化工制圖中的應(yīng)用二次開發(fā)在化工制圖中的應(yīng)用二次開發(fā)在化工制圖中的應(yīng)用二次開發(fā)在化工制圖中的應(yīng)用 AutoLISPAutoLISP語言基礎(chǔ)語言基礎(chǔ)語言基礎(chǔ)語言基礎(chǔ) Visual LISP Visual LISP 基礎(chǔ)基礎(chǔ)基礎(chǔ)基礎(chǔ) DCLDCL基礎(chǔ)基礎(chǔ)基礎(chǔ)基礎(chǔ) AutoCAD AutoCAD 二次開發(fā)在化工制圖中的應(yīng)用二次開發(fā)在化工制圖中的應(yīng)用二次開發(fā)在化工制圖中的應(yīng)用二次開發(fā)在化工制圖中的應(yīng)用 二次開發(fā)的目的及必要性二次開發(fā)的目的及必要性二次開發(fā)的目的及必要性二次開發(fā)的目的及必要性 幾種主要的二次開發(fā)語言簡介幾種主要的二次開發(fā)語言簡介幾種主要的二次開發(fā)語言簡介幾種主要的二次開發(fā)語言簡介 化工化工化工化工AutoCADAutoCAD二次軟件開發(fā)的思路及步驟二次軟件開發(fā)的思路及步驟二次軟件開發(fā)的思路及步驟二次軟件開發(fā)的思路及步驟 二次開發(fā)的目的及必要性二次開發(fā)的目的及必要性二次開發(fā)的目的及必要性二次開發(fā)的目的及必要性 AutoCAD軟件作為CAD工業(yè)的旗幟產(chǎn)品 以其強大的功能得到廣大用戶的 青睞 它具有精確的坐標(biāo)系 能夠完成各種圖形的精確繪制 任意縮放和修 改 支持?jǐn)?shù)字化儀的精確輸入 盡管如此 由于AutoCAD是作為一個通用的繪 圖軟件而設(shè)計開發(fā)的 但各行各業(yè)都有自己的行業(yè)和專業(yè)標(biāo)準(zhǔn) 許多單位也有 自己的技術(shù)規(guī)格和企業(yè)標(biāo)準(zhǔn) 化工行業(yè)也不例外 有著大量的各種圖紙設(shè)計標(biāo) 準(zhǔn) 因而 AutoCAD不可能完全滿足每一用戶的具體應(yīng)用要求 但是 AutoCAD具有開放的體系結(jié)構(gòu) 它允許用戶和開發(fā)者在幾乎所有方面對其進(jìn)行 擴充和修改 同時可以利用多種開發(fā)語言 開發(fā)可以自動完成某一繪制任務(wù)的 軟件 可大大提高繪制速度 改善工作效率 以上工作可稱之為AutoCAD的二 次開發(fā)技術(shù) 也就說AutoCAD二次開發(fā)技術(shù)主要包括兩個方面 一方面是對它 的功能進(jìn)行擴充和修改 如修改或增加菜單 進(jìn)行各種定制工作 另一方面是 利用開發(fā)工具編寫能夠完成特殊任務(wù)的自動繪制軟件 如下面將介紹的通過人 機交互界面輸入必要的數(shù)據(jù)后 系統(tǒng)自動完成法蘭的繪制 就屬于這一類型 在化工繪圖中 我們需要的也是有關(guān)這一方面的開發(fā)軟件 它能最大限度地滿 足用戶的特殊需要 通過調(diào)用各種已經(jīng)開發(fā)好的專用零件圖繪制軟件 加快繪 制速度 提高工作效率 尤其重要的是 可以將大量的計算工作交給計算機去 完成 這樣 不僅提高了繪圖速度 同時也提高了繪制精度 避免了人為的計 算錯誤 目前很多化工技術(shù)人員對AutoCAD的使用一般還僅限于它自身的各種繪圖 功能 使用鼠標(biāo)手工繪制各種圖件 對其強大的二次開發(fā)功能還沒有進(jìn)行深入 使用 如果能使用AutoCAD的二次開發(fā)技術(shù)開發(fā)出一套軟件 讓AutoCAD自動 繪制我們目前使用的各種圖件 就可以大大提高作圖效率 發(fā)揮出AutoCAD的 強大圖形編輯 修改功能 對圖件中的各種元素進(jìn)行任意修改 滿足各種不同 的圖件格式和繪圖標(biāo)準(zhǔn) 由此可見 對于一個化工技術(shù)人員來說 學(xué)會自己開 發(fā)AutoCAD二次應(yīng)用軟件顯得十分必要 因為這將大大減少具體的繪制工作 而可以將主要精力集中到設(shè)備的設(shè)計中去 從而加快化工設(shè)備的開發(fā)速度 近幾年來 隨著計算機軟 硬件技術(shù)的飛速發(fā)展及其應(yīng)用的普及 也帶來 了化工領(lǐng)域使用計算機的浪潮 首先是各課程教學(xué)使用了CAI課件 學(xué)生們可 以清楚地看到各種物質(zhì)的具體顏色 并可以看到動畫反應(yīng) 讓學(xué)生們能夠形象 生動地上課 然后是各種實驗仿真軟件的出現(xiàn) 讓學(xué)生們不用親自下到工廠 也不用浪費任何原料 在沒有危險的情況下就可以完成對實驗過程或者是生產(chǎn) 流程的學(xué)習(xí)和實習(xí) 同時計算機可以對反應(yīng)進(jìn)行模擬 對實驗數(shù)據(jù)的擬合都大 大方便了化工工作者 隨之誕生的各種化工專用軟件 給化學(xué)工業(yè)的發(fā)展注入 了新鮮血液 使化學(xué)工業(yè)的發(fā)展如虎添翼 目前 隨著化學(xué)工業(yè)的進(jìn)一步向前發(fā)展 各種新的機械設(shè)備被人們設(shè)計和 制造 這些設(shè)備的工程圖都是一件很大的工程 比如一個完整熱交換器圖紙 就需要一個專人1 2天的工夫才能完成 利用AutoCAD的二次開發(fā)技術(shù) 可以 編出對熱交換器的圖進(jìn)行批處理的程序 只需通過簡單的人機會話 計算機能自 動繪制出圖紙 這也是化工技術(shù)人員學(xué)習(xí)掌握AutoCAD二次開發(fā)技術(shù)的目的之 所在 隨著化學(xué)工業(yè)的不斷日新月異 對設(shè)備圖紙繪制的速度要求也將越來越 快 利用AutoCAD二次開發(fā)技術(shù)開發(fā)而成的軟件直接繪制各種設(shè)備的技術(shù)將在 化學(xué)工業(yè)中得到更加廣泛的應(yīng)用 其開發(fā)技術(shù)必將伴著化學(xué)工業(yè)一起發(fā)展 幾種主要的二次開發(fā)語言簡介幾種主要的二次開發(fā)語言簡介幾種主要的二次開發(fā)語言簡介幾種主要的二次開發(fā)語言簡介 AutoLISP AutoLISP語言是AutoCAD所支持的一種內(nèi)嵌式語言 它由美國Autodesk公 司開發(fā) 其目的是使用戶十分方便地利用AutoLISP編程語言對AutoCAD進(jìn)行 二次開發(fā) 它采用了與LISP語言中的Common LISP最近的語法和習(xí)慣約定 同 時又針對AutoCAD增加了許多新的功能 使用戶可以直接調(diào)用幾乎全部的 AutoCAD命令 因此它既具有一般高級語言的基本結(jié)構(gòu)和功能 又具有 AutoCAD強大的圖形處理能力 是目前計算機輔助設(shè)計和繪圖中較廣泛采用的 語言之一 Visual LISP Visual LISP 簡稱VLISP 是為加速AutoLISP程序開發(fā)而設(shè)計的強有力的 工具 它提供了一個完整的集成開發(fā)環(huán)境 包括編譯器 調(diào)試器及其他工具 它可以顯著地提高自定義AutoCAD的效率 Visual LISP提供的主要工具有 文本編輯器 格式編排器 語法檢查器 源代碼調(diào)試器 檢驗和監(jiān)視工具 文 件編譯器 工程管理系統(tǒng) 快捷相關(guān)幫助與自動匹配功能和智能化控制臺等 Visual LISP克服了AutoLISP一直以來開發(fā)中所存在的諸多不便和某些局限 性 從語言方面看 Visual LISP對AutoLISP語言進(jìn)行了擴展 可以通過 Microsoft ActiveX Automation接口與對象交互 同時 通過實現(xiàn)事件反應(yīng)器函 數(shù) 還擴展了AutoLISP響應(yīng)事件的能力 VisualLISP已經(jīng)被完整地集成到 AutoCAD中 VBA VBA Visual Basic for Application 最早是建立在Office 97中的標(biāo)準(zhǔn)宏語 言 由于它在開發(fā)方面的易用性且功能強大 許多軟件開發(fā)商都將其嵌入自己 的應(yīng)用程序中 作為一種開發(fā)工具提供給用戶使用 而AutoCAD VBA就是集成 在AutoCAD中的Visual Basic開發(fā)環(huán)境 與VB的主要區(qū)別是VBA在與AutoCAD 相同的進(jìn)程空間中運行 提供了與AutoCAD關(guān)聯(lián)的快捷的編程環(huán)境 程序設(shè)計 直觀快捷 它還提供了與其它可使用VBA應(yīng)用程序集成的能力 可以作為其它 應(yīng)用程序如Word或Excel的自動化控制器 可以看出 VBA是其中編程很為快 捷方便的一種 對于非計算機專業(yè)而更多熟悉VB編程語言的人來說 可以很快 就掌握它 ADS ADS的全名是AutoCAD Development System 它是AutoCAD的C語言開發(fā) 系統(tǒng) ADS本質(zhì)上是一組可以用C語言編寫AutoCAD應(yīng)用程序的頭文件和目標(biāo) 庫 它直接利用用戶熟悉的各種流行的C語言編譯器 將應(yīng)用程序編譯成可執(zhí) 行的文件在AutoCAD環(huán)境下運行 這種可以在AutoCAD環(huán)境中直接運行的可執(zhí) 行文件叫做ADS應(yīng)用程序 ADS由于其速度快 又采用結(jié)構(gòu)化的編程體系 因 而很適合于高強度的數(shù)據(jù)處理 如二次開發(fā)的機械設(shè)計CAD 工程分析CAD 建筑結(jié)構(gòu)CAD 土木工程CAD 化學(xué)工程CAD 電氣工程CAD等 ObjectARX ObjectARX是一種嶄新的開發(fā)AutoCAD應(yīng)用程序的工具 她以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è)計與開發(fā) 并且開發(fā)的應(yīng)用程序速度更快 集成度更高 穩(wěn)定性更強 ActiveX Automation ActiveX技術(shù)來源于 OLE Object Linking and Embedding 技術(shù) OLE最初 是對象鏈接與嵌入 后來發(fā)展成為復(fù)合文檔技術(shù) 包括文字 圖片 聲音 動 畫片和視頻等媒體可以共同存在于一個文檔中 它們可以由不同的應(yīng)用程序產(chǎn) 生 同時也可以在該文檔中編輯 如果應(yīng)用程序支持OLE文檔 則在不同應(yīng)用 程序之間的切換由OLE自動完成 OLE技術(shù)和其它技術(shù)共同作用 從而實現(xiàn)不 同應(yīng)用程序之間的無縫鏈接 自動化技術(shù) Automation 允許一個應(yīng)用程序驅(qū)動另外一個程序 驅(qū)動程 序被稱為自動化客戶 另一個為自動化服務(wù)器 自動化技術(shù)后來發(fā)展成為 ActiveX Automation Visual Java Java是最早由Sun公司創(chuàng)建的一種頗具魅力的程序設(shè)計語言 她是針對嵌 入系統(tǒng)而設(shè)計的 像許多開發(fā)語言一樣 Java是一組實時庫的集合 可為軟件 開發(fā)者提供多種工具來創(chuàng)建軟件 管理用戶接口 進(jìn)行網(wǎng)絡(luò)通訊 發(fā)布應(yīng)用程 序等 對AutoCAD用戶和開發(fā)者而言 Java代表著新一代的編程語言 它主要 用于開發(fā)出全新的優(yōu)秀產(chǎn)品 化工化工化工化工AutoCADAutoCAD二次軟件開發(fā)的思路及步驟二次軟件開發(fā)的思路及步驟二次軟件開發(fā)的思路及步驟二次軟件開發(fā)的思路及步驟 化工AutoCAD二次軟件的開發(fā)和其它軟件的開發(fā)一樣 均需遵循一定的 規(guī)律 一般來說 一個完善的AutoCAD二次軟件開發(fā)過程可以分成4個階段的 內(nèi)容 它們分別是系統(tǒng)規(guī)劃 系統(tǒng)開發(fā) 系統(tǒng)運行與維護 系統(tǒng)更新 而系統(tǒng) 規(guī)劃又可以分成3個方面的內(nèi)容 它們分別是戰(zhàn)略規(guī)劃 需求分析 資源分 配 在這個階段 我們主要任務(wù)是確定所需要開發(fā)軟件的目的 使用對象 使 用者的要求 開發(fā)者目前的能力及擁有的資源 軟件開發(fā)的第二階段是系統(tǒng)開 發(fā) 它包括系統(tǒng)分析 系統(tǒng)設(shè)計 系統(tǒng)實施 這時的主要任務(wù)根據(jù)第一階段已 經(jīng)做的工作基礎(chǔ)上 提出所開發(fā)軟件的邏輯方案 確定系統(tǒng)開發(fā)中每一步的內(nèi) 容和任務(wù) 在此基礎(chǔ)上 再進(jìn)行系統(tǒng)總體結(jié)構(gòu)設(shè)計 提出系統(tǒng)總體布局的方 案 至此 軟件開發(fā)工作還停留在邏輯開發(fā)狀態(tài) 尚未進(jìn)入具體的編碼工作 軟件開發(fā)完成第二階段的系統(tǒng)設(shè)計后 就進(jìn)入了實質(zhì)性的編碼工作 也 就是說進(jìn)入了系統(tǒng)的實施階段 這時要完成各種編碼工作 完善系統(tǒng)各個接口 之間的聯(lián)絡(luò) 改善界面的友好程度 對整個軟件進(jìn)行組裝及調(diào)試 最后完成交 付使用前的各項工作 如該保密的部分需要進(jìn)行封裝 可以公開的部分需要做 好友善的人機界面 軟件開發(fā)的第三階段是運行和維護階段 一般對于規(guī)模較小的軟件 對 這方面的考慮就比較少 比如我們自己經(jīng)常開發(fā)一些小軟件來解決一些實際 問題 就較少考慮以后的維護 一般只要滿足目前的應(yīng)用就可以了 但對于 一個完善的軟件來說 就需要考慮實際運行過程中出現(xiàn)的各種情況 并有解 決方案及維護方法 這樣 就會使得一個看上去較小的軟件 也會變得復(fù)雜 起來 但這種復(fù)雜為使用和維護帶來了方便 提高了軟件對付外來情況的能 力 提高了軟件的使用壽命 實際上等于節(jié)約了軟件使用成本 任何一個軟件 總有它更新的時候 此時 進(jìn)入了軟件開發(fā)的第4階段 即系統(tǒng)更新階段 在新的情況下 對原有的系統(tǒng)進(jìn)行更新開發(fā) AutoLISPAutoLISP語言基礎(chǔ)語言基礎(chǔ)語言基礎(chǔ)語言基礎(chǔ) 基本運算基本運算 基本函數(shù)基本函數(shù) 編程中常用的分支及條件判斷函數(shù)編程中常用的分支及條件判斷函數(shù) 常用的繪圖命令常用的繪圖命令 AutoLISP命令調(diào)用過程命令調(diào)用過程 加法 加法 格式 功能 求出所列數(shù)的總和 實例 20 30 結(jié)果為50 15 10 結(jié)果為5 減法 減法 格式 功能 求出第一個數(shù)逐次減去后面數(shù)的差 實例 120 30 50 結(jié)果為40 15 10 結(jié)果為25 乘法 乘法 格式 功能 求出所列數(shù)的乘積 實例 20 30 結(jié)果為600 1 5 10 2 結(jié)果為 30 除法 除法 格式 功能 求出第一個數(shù)逐次除以后面數(shù)的商 實例 20 結(jié)果為20 130 2 結(jié)果為65 3 30 由于表中的兩個元素均為整型數(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 實例 exp 2 0 結(jié)果為7 3890561 exp 0 結(jié)果為1 普通數(shù)求冪 普通數(shù)求冪 格式 expt 功能 求的 次方值 實例 expt 2 3 結(jié)果為8 求自然對數(shù) 求自然對數(shù) 格式 log 功能 求的自然對數(shù) 要求必須大于零 實例 log 10 0 結(jié)果為2 3025851 求平方根 求平方根 格式 sqrt 功能 求的平方根 要求必須大于零 實例 sqrt 4 0 結(jié)果為2 0 基基基 基 本本本 本 運運運 運 算算算算 求絕對值 求絕對值 格式 abs 功能 求的絕對值 實例 abs 3 結(jié)果為3 求最大值 求最大值 格式 max 功能 求 的最大值 實例 max 2 3 4 10 結(jié)果為10 求余數(shù) 求余數(shù) 格式 rem 功能 求整除的余數(shù) 若參數(shù)多于兩個 則將整除后 的余數(shù)再整除 求出余數(shù) 以此類推 實例 rem 50 9 4 結(jié)果為1 基基基 基 本本本 本 運運運 運 算算算算 正弦函數(shù)SIN 正弦函數(shù)SIN 格式 sin 其中 用弧度表示 功能 求的正弦值 實例 sin pi 2 結(jié)果為1 余弦函數(shù)COS 余弦函數(shù)COS 格式 cos 其中 用弧度表示 功能 求余弦值 實例 cos pi 2 結(jié)果為0 正切TAN 正切TAN 格式 tan 其中 用弧度表示 功能 求正切值 實例 tan pi 4 結(jié)果為1 反正切函數(shù)ATAN 反正切函數(shù)ATAN 格式 atan 功能 求反正切值 單位為弧度 為 2 2 實例 atan 1 結(jié)果為0 785398 即 4 實例 cos pi 2 結(jié)果為0 基基基 基 本本本 本 函函函 函 數(shù)數(shù)數(shù)數(shù) 取整函數(shù)FIX 取整函數(shù)FIX 格式 fix 功能 求的整數(shù)部分 相當(dāng)于高級語言中的 INT 數(shù) 語句 實例 fix 7 8 結(jié)果為7 fix 7 8 結(jié)果為 7 fix 9 結(jié)果為9 實型化函數(shù)FLOAT 實型化函數(shù)FLOAT 格式 float 功能 求轉(zhuǎn)化為實型數(shù) 不考慮該數(shù)原來的類型 實例 float 3 結(jié)果為3 0 float 3 3 結(jié)果為3 3 賦值函數(shù)SETQ 賦值函數(shù)SETQ 格式 setq 功能 將表達(dá)式的值賦給變量 變量和表達(dá)式需成對出現(xiàn) 實例 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 確定點P1的坐標(biāo) setq p2 300 400 確定點P2的坐標(biāo) command line p1 p2 繪制從P1點到P2點的直線 基基基 基 本本本 本 函函函 函 數(shù)數(shù)數(shù)數(shù) 取表中第一元素CAR函數(shù) 取表中第一元素CAR函數(shù) 格式 car 表必須為引用表而非標(biāo)準(zhǔn)表 但可以是簡單表 也 可以是嵌套表 功能 提取的頂層第一個元素 實例 car 1 3 5 結(jié)果為1 car 1 3 6 5 結(jié)果為 1 3 取表中除第一元素外其它元素的CDR函數(shù) 取表中除第一元素外其它元素的CDR函數(shù) 格式 cdr 表必須為引用表而非標(biāo)準(zhǔn)表 但可以是簡單表 也可 以是嵌套表 功能 提取的除頂層第一個元素外的其它元素 實例 cdr 1 3 5 結(jié)果為 3 5 cdr 1 3 6 5 結(jié)果為 6 5 CAR和CDR的組合函數(shù) CAR和CDR的組合函數(shù) CAR和CDR可以任意組合 其組合深度可達(dá)4層 執(zhí)行時從右到左依次執(zhí)行 若搞錯次序 其結(jié)果必然出錯 4個層次的組合形式為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 4 結(jié)果3 基基基 基 本本本 本 函函函 函 數(shù)數(shù)數(shù)數(shù) LAST函數(shù) LAST函數(shù) 格式 last 表必須為引用表而非標(biāo)準(zhǔn)表 但可以是簡單表 也可以 是嵌套表 功能 提取的頂層中最后一個元素 實例 last 1 2 3 結(jié)果為3 last 12 3 4 5 結(jié)果為 4 5 NTH函數(shù) NTH函數(shù) 格式 nth 表必須為引用表而非標(biāo)準(zhǔn)表 但可以是簡單表 也可以是嵌套表 功能 提取中第個元素 注意第一個元素的序號為0號 以此類推 實例 nth 2 2 3 4 5 5 結(jié)果為 4 5 nth 3 2 3 4 5 5 結(jié)果為5 LIST函數(shù) LIST函數(shù) 格式 list 功能 將所有的按原位置構(gòu)成新表 可用于確定點的坐標(biāo)位置 實例 list 2 3 5 6 結(jié)果為 2 3 5 6 list 2 3 結(jié)果為 2 3 下面是一個利用list確定點的位置 繪制圓的小程序 setq p1 list 222 33 setq p2 list 200 300 command circle p2 160 command circle p1 160 基基基 基 本本本 本 函函函 函 數(shù)數(shù)數(shù)數(shù) ATOF函數(shù) ATOF函數(shù) 格式 atof 功能 將轉(zhuǎn)換成實型數(shù) 返回實型數(shù) 實例 atof 23 返回結(jié)果為23 0 ASCII函數(shù) ASCII函數(shù) 格式 ascii 功能 將中第一個字符轉(zhuǎn)換成ASCII碼 并返回該值 實例 ascii b c 返回結(jié)果為98 CHR函數(shù) CHR函數(shù) 格式 chr 功能 將ASCII碼為的轉(zhuǎn)換成相應(yīng)字符 并返回該字符 實例 chr 69 返回結(jié)果為 E chr 80 返回結(jié)果為 P ITOA函數(shù) ITOA函數(shù) 格式 itoa 功能 將轉(zhuǎn)換成整數(shù)字符串 實例 itoa 5 返回結(jié)果為 5 基基基 基 本本本 本 函函函 函 數(shù)數(shù)數(shù)數(shù) ATOI函數(shù) ATOI函數(shù) 格式 atoi 功能 將轉(zhuǎn)換成整數(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 說明 當(dāng)數(shù)字串中有非數(shù)字字符時 則轉(zhuǎn)換到第一個非數(shù)字原子時終止 STRCAT函數(shù) STRCAT函數(shù) 格式 strcat 功能 將按先后順序頭尾相連起來 組成一個新的字符串 實例 strcat bc etr ty 返回結(jié)果為 bcetrty 基基基 基 本本本 本 函函函 函 數(shù)數(shù)數(shù)數(shù) 20 SUBSTR函數(shù) 20 SUBSTR函數(shù) 格式 substr 功能 從中提取一個子串 該子串從起點的字符位置開始 由連續(xù) 個字符組成 若缺省 則到字符串結(jié)束 實例 substr b212c 2 3 返回結(jié)果為 212 substr b2er12c 2 返回結(jié)果為 2er12c 21 READ函數(shù) 21 READ函數(shù) 格式 read 功能 將轉(zhuǎn)化成表或原子 文件處理時經(jīng)常使用 實例 read ad 返回結(jié)果為AD read b 返回結(jié)果為B read a b 返回結(jié)果為 A B read 3 4 返回結(jié)果為 3 4 基基基 基 本本本 本 函函函 函 數(shù)數(shù)數(shù)數(shù) 編程中常用的分支及條件判斷函數(shù)編程中常用的分支及條件判斷函數(shù)編程中常用的分支及條件判斷函數(shù)編程中常用的分支及條件判斷函數(shù) 在程序編寫中經(jīng)常會用到一些條件判斷函數(shù)及循環(huán)函數(shù) 沒有這些函數(shù) 就 難以完成一個理想的程序 下面將一些在編程中使用程度較高的函數(shù)介紹一下 關(guān)系運算函數(shù) 關(guān)系運算函數(shù) 關(guān)系運算函數(shù)是編程中分支及條件判斷函數(shù)的基礎(chǔ) 它對數(shù)值型表達(dá)式的大 小進(jìn)行比較 表達(dá)式可以是兩個或兩個以上 其返回值是邏輯變量 比較運算成 立 則返回T 不成立則返回nil 常作為條件用于條件判斷語句和循環(huán)判斷語句 中 這一點將在下面講解中提到 AutoLISP共有6種關(guān)系運算函數(shù) 它們分別是 等于 不等于 大于 大于等于 其中 等于的關(guān)系函數(shù) 其表達(dá)式只能兩個 下面是6種關(guān)系函數(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 只比較前面兩個表達(dá)式 5 5 1 返回結(jié)果T 邏輯運算函數(shù) 邏輯運算函數(shù) AutoLISP共有3種邏輯運算函數(shù) 分別是邏輯和AND 邏輯或OR 邏輯非 NOT 下面通過實例說明其應(yīng)用 and a d c 3 返回結(jié)果nil 只要有一個表達(dá)式為假 則返回nil and d c 返回結(jié)果nil setq a 3 b 4 返回結(jié)果4 返回最后一個賦值 and a b 返回結(jié)果T 由于前面給a b賦了值 and 3 5 返回結(jié)果nil or 1 2 a b 返回結(jié)果T 只要有一個表達(dá)式為真 則返回T or 4 2 6 9 返回結(jié)果T 二分支條件函數(shù) 二分支條件函數(shù)IF 格式 if 功能 對進(jìn)行運算 若成立 則執(zhí)行 否則 執(zhí)行 兩者必居其一 所以稱之為二分支條件函數(shù) 是 在編程中經(jīng)常用到的條件判斷函數(shù) 下面是幾個實際例子 if 1 3 3 5 測試式不成立 執(zhí)行第二個表達(dá)式 第二個表達(dá)式為原子 返回5 if 1 3 setq a 2 setq a 9 測試式成立 執(zhí)行第一個表達(dá)式 返回2 if 1 3 yes 測試式不成立 但無第二個表達(dá)式 返回nil if 1 yes no 測試表達(dá)式為1 雖然不為T 但也不為nil 仍執(zhí)行第一表達(dá)式 返回 yes 多分支條件函數(shù) 多分支條件函數(shù)COND 前面二分支條件函數(shù)只能解決兩種結(jié)果中選一種的條件判斷 若有多個 條件中選一 則需用COND函數(shù) 格式 cond 該函數(shù)的參數(shù)為任意數(shù)目的表 每個表有兩個元素 第一個元素為測試 式 第二個元素為結(jié)果 功能 對每一個支表中的依次進(jìn)行運算 若 成立 則執(zhí)行該支表對應(yīng)的 停止后面的測試工作 否則 繼 續(xù)執(zhí)行 直到最后一個分支條件 順序控制函數(shù) 順序控制函數(shù)PROGN 常和IF函數(shù)一起使用 使其在某一條件下 順序執(zhí)行多個表達(dá)式 格式 progn 功能 按順序執(zhí)行多個表達(dá)式 并返回最后表達(dá)式求值結(jié)果 表達(dá)式需為 標(biāo)準(zhǔn)表 常見測試函數(shù) 常見測試函數(shù) ZEROP函數(shù)用于判斷測試項是否為零 若為零 則返回T 否則返回nil MINUSP函數(shù)用于判斷測試項是否為負(fù) 若為負(fù) 則返回T 否則返回nil NUMBERP函數(shù)用于判斷測試項是否為數(shù) 若為數(shù) 則返回T 否則返回nil ATOM函數(shù)用于判斷測試項是否為原子 若為原子數(shù) 則返回T 否則返回 nil LISTP函數(shù)用于判斷測試項是否為表 若為表 則返回T 否則返回nil 循環(huán)函數(shù) 循環(huán)函數(shù) 在各種程序編寫中 循環(huán)語句是不可缺少的 AutoLISP的兩種主要循環(huán)函 數(shù)是WHILE函數(shù)和REPEAT函數(shù) 下面分別介紹之 WHILE WHILE函數(shù) 格式 while 標(biāo)準(zhǔn)表1 標(biāo)準(zhǔn)表2 功能 先對測試表達(dá)式進(jìn)行測試 若其值不為nil 則依次執(zhí)行下面的各個 標(biāo)準(zhǔn) 表 執(zhí)行完各 標(biāo)準(zhǔn)表 后 再返回來對測試表達(dá)式進(jìn)行測試 直至測試表達(dá)式為nil 停止循環(huán)執(zhí)行 REPEAT REPEAT函數(shù) 格式 repeat 標(biāo)準(zhǔn)表1 標(biāo)準(zhǔn)表2 功能 按該定的次數(shù)進(jìn)行循環(huán)計算式為nil 停止循環(huán)執(zhí)行 常用的繪圖命令常用的繪圖命令常用的繪圖命令常用的繪圖命令 常用的交互命令 常用的交互命令 在程序編寫中經(jīng)常要用到一些交互式命令 通過交互命令 可提高程序的人 機對話能力 AutoLISP也提供了一些常見的交互命令 下面分別介紹 輸入整型數(shù) 輸入整型數(shù)GETINT 格式 getint 提示 功能 該函數(shù)提示用戶輸入一個整型數(shù) 并返回該數(shù) 常和賦值函數(shù)SETQ合用 實例 setq n getint n 等待用戶輸入一個整型數(shù) 并將該數(shù)賦值給n 輸入實型數(shù) 輸入實型數(shù)GETREAL 格式 getreal 提示 功能 該函數(shù)提示用戶輸入一個整型數(shù) 并返回該數(shù) 常和賦值函數(shù)SETQ合用 實例 setq a getreal a 等待用戶輸入一個實型數(shù) 并將該數(shù)賦值給a 輸入字符串 輸入字符串GETSTRING 格式 getstring 提示 功能 該函數(shù)提示用戶輸入一個字符串 并返回該數(shù) 常和賦值函數(shù)SETQ合用 實例 setq m getstring your name 等待用戶輸入一個字符串 并將該字符串 賦值給m 若輸入xiaodong 返回 xiaodong 需要注意的是輸入字符串時 千萬別用空格 鍵 否則只把空格鍵以前的內(nèi)容作為輸入的字符串 輸入點 輸入點GETPOINT 格式 getpoint 基點 提示 功能 該函數(shù)提示用戶輸入一個點 若有基點 這將從基點到輸入的點之間畫一條直 線拖動直線 但命令執(zhí)行過后消失 實例 setq P1 getpoint 40 50 第二點 等待用戶從鍵盤輸入點或用光標(biāo)選點 輸入距離值 輸入距離值GETDIST 格式 getdist 提示 功能 該函數(shù)提示用戶輸入一個距離值 實例 setq tspac getdist 輸入距離 等待用戶從鍵盤輸入某一數(shù)值 點的確定 點的確定 確定點的位置 是進(jìn)行各種繪制工作的基礎(chǔ) 除了前面介紹的用getpoint函數(shù)外 還可 以用下面幾種方法確定點 通過繪制直線的小程序加以說明驗證 實例 setq p1 30 40 用禁止求值表 確定P1點的位置 setq p2 300 400 command line p1 p2 直線的繪制 直線的繪制LINE 格式 command line P1 P2 P3 條件 功能 將P1 P2 P3 等點用直線連接起來 其中 條件 可缺省 若條件中輸入 c 則繪制的將是封閉曲線 多義線繪制 多義線繪制 格式 command pline w 條件 功能 將P1 P2 P3 等點用各種曲線連接起來 其中 條件 可缺省 若條件中輸 入 c 則繪制的將是封閉曲線 矩形繪制 矩形繪制 格式 command rectang 倒角 C 標(biāo)高 E 圓角 F 厚度 T 寬度 W 尺寸 D 功能 繪制符合格式中定義的矩形 圓的繪制 圓的繪制 格式 command circle 三點 3P 兩點 2P 相切 相切 半徑 T 圓心 功能 繪制符合格式中定義的圓 默認(rèn)的輸入方式是圓心 半徑 其它輸入方式需根 據(jù)具體選定的形式而定 交點的確定 交點的確定 格式 inters 功能 求和所確定的直線和和所確定的直線的交點 若存在則返回交點 若不存在 則返回nil 如果有任選項 且該項為nil 則可求延長線的 交點 圖層的設(shè)置 圖層的設(shè)置 格式 command layer m c l lw 功能 設(shè)置和格式中描述相符合的圖層 除圖層名為不可缺省外 其它均可采用默認(rèn) 值 當(dāng)調(diào)用圖層時 可只采用格式中的前4項 剖面線繪制 剖面線繪制 格式 command batcht 功能 將 按格式中定義的要求進(jìn)行填充 其中 和 可默 認(rèn) 有多種獲取方法 如果是填充剛繪制好的實體 則可用entlast命令 尺寸標(biāo)注 尺寸標(biāo)注 格式 command dim 功能 和 之間按標(biāo)注模式標(biāo)注尺寸 若標(biāo)注內(nèi)容缺省 則按 默認(rèn)方式標(biāo)注 文本書寫 文本書寫 格式 command text 功能 將文字內(nèi)容按格式中的定義書寫出來 如缺省 則以左下角為起 點 AutoLISP命令調(diào)用過程命令調(diào)用過程 首先將AUTOLISP的程序用任何一種ASCII碼文本編輯器來編輯 在 DOS環(huán)境下可采用EDIT編輯 在WINDOWS環(huán)境下可用附件中的記事本編 輯 并注意在保存時以 LSP為后綴 一般的調(diào)用過程如下 用編輯器編寫好 以 LSP存盤 在AutoCAD中的命令中輸入 Load 盤符 子目錄 文件名 回車 輸入 文件名 參數(shù)1 參數(shù)2 注意參數(shù)和參數(shù)之間不要加逗 號 回車 在AutoCAD的界面上自動生成圖 Visual LISP Visual LISP 基礎(chǔ)基礎(chǔ)基礎(chǔ)基礎(chǔ) 安裝安裝安裝安裝 啟動啟動啟動啟動 編輯編輯編輯編輯 調(diào)試調(diào)試調(diào)試調(diào)試 安裝安裝安裝安裝 Visual LISP無需單獨安裝 我們在安裝AutoCAD 2004時已經(jīng)將其 捆綁按安裝在一起 只要在使用時調(diào)用它即可 這為我們省了不少安 裝軟件過程中的麻煩 同時也使得該軟件和AutoCAD之間的關(guān)系更加 緊密 尤其是Visual LISP中的部分Auto LISP程序幾乎可以移植到任何 版本的AutoCAD中 而不受版本先后的影響 啟動啟動啟動啟動 啟動Visual LISP有兩種方法 但都需首先啟動AutoCAD軟件 第一種方法是從AutoCAD菜單中選擇 工具 AutoLisp Visual Lisp編輯器 第二中方法是在AutoCAD命令行中輸入 vlisp 啟動 Visual Lisp編輯器 編輯編輯編輯編輯 Visual LISP的程序在編輯窗口進(jìn)行編輯 編輯時 系統(tǒng)會自動進(jìn)行 一些識別 并將其顯示成不同的顏色 如括號是紅色 函數(shù)是藍(lán)色 如 果想輸?shù)氖歉鞣N函數(shù) 一般為表中第一項 但輸完后系統(tǒng)沒有自動變成 藍(lán)色 則說明你輸錯了 雙引號內(nèi)的繪圖命令為粉紅色 包括雙引號本 身 各種變量是黑色 數(shù)字是綠色 掌握這些規(guī)律對減少編程中的錯誤 很有幫助 在編程過程中 如果遇到一些較為生疏的函數(shù) 可以通過系 統(tǒng)的幫助功能加以解決 調(diào)試調(diào)試調(diào)試調(diào)試 調(diào)試是編程工作中一項十分重要又非常繁重的工作 在沒有Visual LISP之前 Auto LISP程序的調(diào)試是十分困難的 常常找不到問題之所在 幸好有了Visual LISP 使調(diào)試工作有了質(zhì)的飛躍 利用其提供的調(diào)試工具 和專用工具 一般可以較快地找到問題 系統(tǒng)調(diào)試中最常見的錯誤是缺少 括號或有多余括號 其次是錯誤函數(shù)或命令 常常是繪圖命令輸錯 因為 若函數(shù)錯誤 在編寫中可以根據(jù)顏色判斷 還有列表缺陷 被零除及函數(shù) 被取消 對函數(shù)被取消這種現(xiàn)象有點特殊 因為它并不是當(dāng)前所編的程序 有問題 而是在上一次調(diào)試過程中 所編程序存在缺陷 使的AutoCAD處 于命令等待狀態(tài) 這時 需要通過視圖轉(zhuǎn)換 激活A(yù)utoCAD 取消命令等 待狀態(tài) 就可以了 根據(jù)我們自己開發(fā)程序的經(jīng)驗 認(rèn)為調(diào)試工作需和整 個軟件的開發(fā)工作結(jié)合起來 在程序開發(fā)的步驟上考慮到調(diào)試工作問題 以采用從下到上的程序編程工作為佳 結(jié)合該方法 作者推薦如下的編程 調(diào)試步驟 將整個軟件分解成功能相對獨立的功能塊 再將功能塊分解成若干 個小程序 將小程序中的每一個語句 按照先后次序進(jìn)行編輯 在編輯過程中 首先利用顏色的改變 糾正一些明顯的錯誤 如果對某一語句把握不大 可直接加載該語句 判斷系統(tǒng)能否通過 關(guān)于加載運行可通過選中需要加 載的語句 點擊專用工具中欄中的第二個工具 一般情況下 以編完相對 較完整的一段語句后 再將這段進(jìn)行加載運行較好 如所有的賦值語句 一段語句編寫完成 加載運行結(jié)果正確 則進(jìn)入下一段語句的編寫 如正 確 但根據(jù)錯誤提示可明顯找到問題的 則修改后再加載運行 如無法根 據(jù)錯誤提示找到問題的 則可以采用調(diào)試工具欄中的各種方法進(jìn)行錯誤查 找 如仍無法查到 則需逐句加載 但在逐句加載中 需要補充對加載語 句中所需變量值的設(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)用的各種情況 對軟件進(jìn)行各種測試 對發(fā)現(xiàn)問題進(jìn)行 修改 最后得到完善軟件 并將其封裝 DCLDCL基礎(chǔ)基礎(chǔ)基礎(chǔ)基礎(chǔ) 定義定義定義定義 控件控件控件控件 程序編輯程序編輯程序編輯程序編輯 軟件調(diào)試及加載軟件調(diào)試及加載軟件調(diào)試及加載軟件調(diào)試及加載 定義定義定義定義 對話框是人機交互的主要界面之一 它具有良好的視覺效果 操作方便 直觀 輸入數(shù)據(jù)與順序無關(guān) 當(dāng)我們

溫馨提示

  • 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)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論