[lisp] 取得每行首串列(應為點資料)並一一畫點 …

看板Cad_Cae (電腦輔助設計)作者 (扭曲吧!)時間17年前 (2008/08/17 14:31), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
這是上一次回答版友以數據輸出"點"問題時 修改既有程式後的副產品 希望可以給部分版友對IO的參考 本程式是讀取.txt檔中 每行的第一個串列資料 當做點資料蒐集起來 之後以點的方式輸出(當然依需要可以連線等等) 另外仍可使用';'作為txt檔中註解符號 例如這樣 ;這是平面點資料 ;x座標 y座摽 (1.02 3.22) (5.12 1.67) (3.66 12.56) 下面lisp出現的函數如有不熟 請先以F1查詢 程式很短也有排版我想並不難看懂 請將以下文字copy到純文字檔案並另存成putpt.lsp ;putpt.lsp ;========================== ;putpt ;取得每行首串列(應為點資料)並一一畫點於圖面上 (defun putpt (fn / fp dat d char ptlist) (setq fp (open fn "r")) (while (and (setq dat (read-line fp)) (setq char (substr dat 1 1)) (if (= char ";") t (progn (setq dat (read dat) ptlist (cons dat ptlist) ) ) );end-if );end-while-test );end-while (close fp) ;畫點 ;(setq ptlist (reverse ptlist));反轉串列 (foreach dat ptlist (command "point" dat)) ) ;======================= (princ "本程式可將點數據分別以點圖元形式一個個呈現於圖面上") (princ "\n請確認檔案每行皆為2d,3d點資料形式的串列") (princ "\n僅會讀取每行第一個數據,故每個點資料請各列一行\n") (princ "請於指令航鍵入如右指示之函數 (putpt \"dataname.datatype\")") (princ) ;======How To Use======== ;使用方法皆為鍵入(函數名稱 "檔案名稱.副檔名") ;如(putpt "data.txt") ;則可將各數據分別以點的形式呈現於圖面上 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.168.192.118 ※ 編輯: Egriawei 來自: 118.168.192.159 (08/19 23:47)
文章代碼(AID): #18fyMwuc (Cad_Cae)
文章代碼(AID): #18fyMwuc (Cad_Cae)