lisp visual 开根号_分享Visual Lisp程序第二波|文件的读与写-lsp文件
繼續(xù)分享關(guān)于Visual Lisp開(kāi)發(fā)的程序,今天的知識(shí)點(diǎn)是讀、寫(xiě)文件。不知道天天使用AutoCAD畫(huà)圖作為設(shè)計(jì)師的你,有沒(méi)有注意到很多圖型是規(guī)則的、構(gòu)成其尺寸的數(shù)據(jù)都是標(biāo)準(zhǔn)的、圖塊的管理復(fù)雜且不易操作……,還有些情況需要將設(shè)計(jì)的情況或統(tǒng)計(jì)數(shù)據(jù)匯總輸出到外部文件,諸如此類。有沒(méi)有想過(guò),在咱們自己開(kāi)發(fā)一個(gè)程序,通過(guò)瀏覽標(biāo)準(zhǔn)數(shù)據(jù)庫(kù)就能實(shí)現(xiàn)一鍵繪制標(biāo)準(zhǔn)件、通用件、常用件并且可以輸出總結(jié)資料到外部文件—這里的數(shù)據(jù)庫(kù)也不過(guò)是txt或者bat格式的文件。
OK,先來(lái)看一下今天要分享的程序吧。
這是一個(gè)槽鋼繪制程序的讀取數(shù)據(jù)部分,槽鋼是鋼結(jié)構(gòu)中常用的型材,在CAD設(shè)計(jì)中經(jīng)常用到,cgh.lsp就是為繪制槽鋼三視圖而設(shè)計(jì)的(只是作為設(shè)計(jì)進(jìn)階的興趣而已,網(wǎng)上有很多插件都可以很好的實(shí)現(xiàn)這個(gè)功能)。數(shù)據(jù)文件如圖
讀取子程序中cond條件判斷沒(méi)有什么新奇的了吧?相關(guān)讀取的函數(shù)就是(open file mode),我們這里是讀取的模式"r",返回的是打開(kāi)文件的代碼。
讀取文件中一行的程序是(repeat 行號(hào) (read-line 代碼)),代碼就是open函數(shù)返回的文件代碼,行號(hào)就是你需要讀取的數(shù)據(jù)的行數(shù)。
小貼士:需要注意的是在控制臺(tái)或者命令行進(jìn)行調(diào)試時(shí)注意行數(shù)的概念,因?yàn)槲募](méi)有關(guān)閉,在進(jìn)行read-line函數(shù)執(zhí)行時(shí)會(huì)從上一次的行碼為0開(kāi)始計(jì)數(shù)進(jìn)行讀取,如果調(diào)試時(shí)需要使用正確的行碼,需要關(guān)閉ff文件。
返回的是由那一行數(shù)據(jù)組成的字符串,應(yīng)使用(substr 字符串 起始 長(zhǎng)度)讀取需要的數(shù)據(jù),比如把第2行的40取出來(lái)如下
Atof函數(shù)是把字符變?yōu)閷?shí)數(shù)型。
再說(shuō)一下寫(xiě)數(shù)據(jù),這里分享的是統(tǒng)計(jì)選擇集中圓、直線、圓弧的數(shù)量。
主程序是選擇集及相關(guān)的操作函數(shù),子函數(shù)是輸出函數(shù),getfiled可以顯示制定目錄中具有指定擴(kuò)展名的有效文件的列表,通過(guò)這個(gè)函數(shù)LISP語(yǔ)言可以訪問(wèn)CAD的文件對(duì)話框,有四個(gè)參數(shù),一個(gè)是標(biāo)題,一個(gè)是路徑,一個(gè)是擴(kuò)展名,最后一個(gè)是操作數(shù)。或者直接用open函數(shù)指向一個(gè)數(shù)據(jù)庫(kù)文件。(write-line)函數(shù)和(read-line)類似,也是逐行書(shū)寫(xiě)。最后也需要關(guān)閉文件(close)。
小貼士:無(wú)論讀還是寫(xiě),數(shù)據(jù)庫(kù)中格式很重要,就是給每種類型數(shù)據(jù)賦予的位數(shù)在每行書(shū)寫(xiě)時(shí)應(yīng)統(tǒng)一。否則會(huì)亂,也會(huì)影響后續(xù)數(shù)據(jù)的處理。
總結(jié)
以上是生活随笔為你收集整理的lisp visual 开根号_分享Visual Lisp程序第二波|文件的读与写-lsp文件的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: ZOJ 3717 二分+2-sat判定。
- 下一篇: ILSpy反编译exe文件,Resour