精華區beta Cad_Cae 關於我們 聯絡資訊
(princ "hello, world!\n") (princ) 程式檔案名稱:hello.lsp 內容只有以上的兩行。 要執行這個程式,很簡單。 在 AutoCAD 指令行下面,輸入 (load "hello") 即可正確執行。 更多的內容,請參考我的 BLOG http://myblog.pchome.com.tw/sjgau/ 參觀次破 1,000 紀念 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.104.48.239 > -------------------------------------------------------------------------- < 作者: HiEArO (xsd) 看板: Cad_Cae 標題: Re: [心得] AutoLISP 的 Hello, world!\n 時間: Sun Nov 20 02:56:30 2005 我使用以下的方法 是可以執行一些lisp的程式 但是 只要遇到function的程式 好像就會出問題 像以下這個程式 下面應該是一個求Fibonacci數列的函數 (defun f(n) (cond ((= n 0) 0) ((= n 1) 1) (t(+(f(- n 1)) (f(- n 2)))) ) ) 這個照以下方法執行 會跑出訊息:no function definition: N 為什麼呢? 可以幫我解答一下嗎? 感謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.174.244.48 > -------------------------------------------------------------------------- < 作者: sjgau (sjgau) 看板: Cad_Cae 標題: Re: [心得] AutoLISP 的 Hello, world!\n 時間: Sun Nov 20 13:37:01 2005 以下,應該是 正確的 (defun f2(n / ) ; ) 我把 函數名稱改成 f2 執行的方法是 (load "tmp.lsp") (f2 10) 還有,第0項 和 第1項的答案都是 1 還有,為了擔心 n < 0 所以, if (n <= 0) return 1; 令: (f2 0) 1 指令: (f2 1) 1 指令: (f2 2) 2 指令: (f2 3) 3 指令: (f2 5) 8 指令: (f2 10) 89 指令: (f2 20) 10946 指令: (f2 25) 121393 指令: (f2 30) 1346269 (defun f2 (n / ) (cond ((<= n 0) 1) ((= n 1) 1) (t (+ (f2 (- n 1)) (f2 (- n 2)) ) ) ) ) -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 210.243.237.65 > -------------------------------------------------------------------------- < 作者: HiEArO (xsd) 看板: Cad_Cae 標題: Re: [心得] AutoLISP 的 Hello, world!\n 時間: Sun Nov 20 15:32:55 2005 謝謝你仔細的回答 我是第一次執行lisp程式 不曉得執行的流程 ※ 引述《sjgau (sjgau)》之銘言: : 以下,應該是 正確的 : (defun f2(n / ) : ; : ) : 我把 函數名稱改成 f2 : 執行的方法是 : (load "tmp.lsp") : (f2 10) 這兩行可以說是關鍵所在 我之前是有load進去,但是不曉得怎麼跑 經過第二行和以下執行結果的示範 我了解了 非常感謝回答 你的解答真的很詳細 若可以的話 可以教教我DEFINE的用法嗎?謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.174.244.48 > -------------------------------------------------------------------------- < 作者: sjgau (sjgau) 看板: Cad_Cae 標題: Re: [心得] AutoLISP 的 Hello, world!\n 時間: Sun Nov 20 16:22:22 2005 (defun c:xxx( / ) (command "circle" "0,0" "1.0") ) 以上,為定義一個 user-defined 指令 下達 xxx AutoCAD 會幫你 自動畫一個圓 圓心= 0,0 半徑= 1.0 (defun yyy(n1 n2 / n3) (setq n3 (+ n1 n2)) (eval n3) ) 以上,會幫你定義一個 user-defined function 下達 (yyy 2 3) 會得到 5 (setq n4 (yyy 6 7 )) 會設定 n4= 13 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 210.243.237.65 > -------------------------------------------------------------------------- < 作者: sjgau (sjgau) 看板: Cad_Cae 標題: Re: [心得] AutoLISP 的 Hello, world!\n 時間: Sun Nov 20 17:05:22 2005 指令: (load "f03") no= 1, ratio= 1.0 no= 2, ratio= 2.0 no= 3, ratio= 1.5 no= 4, ratio= 1.66667 no= 5, ratio= 1.6 no= 6, ratio= 1.625 no= 7, ratio= 1.61538 no= 8, ratio= 1.61905 no= 9, ratio= 1.61765 no= 10, ratio= 1.61818 no= 11, ratio= 1.61798 no= 12, ratio= 1.61806 no= 13, ratio= 1.61803 no= 14, ratio= 1.61804 no= 15, ratio= 1.61803 no= 16, ratio= 1.61803 no= 17, ratio= 1.61803 no= 18, ratio= 1.61803 no= 19, ratio= 1.61803 no= 20, ratio= 1.61803 no= 21, ratio= 1.61803 no= 22, ratio= 1.61803 no= 23, ratio= 1.61803 no= 24, ratio= 1.61803 no= 25, ratio= 1.61803 no= 26, ratio= 1.61803 no= 27, ratio= 1.61803 no= 28, ratio= 1.61803 no= 29, ratio= 1.61803 no= 30, ratio= 1.61803 31 ; file: f03.lsp ;| 費氏數列前後項的比值 把費氏數列中的每一項用前一項來除,我們得到一個新數列: 1, 2, 1.5, 1.67, 1.6, 1.63, 1.615, 1.619, 1.618, ..... |; (defun f03 (no /) (cond ((<= no 0) 1) ((= no 1) 1) (t (+ (f03 (- no 2)) (f03 (- no 1)))) ) ) ; end of f03() ; main() begin here ; for no= 1 to 30 do ... (setq no 1) (while (<= no 30) (setq n1 (f03 (- no 1))) (setq n2 (f03 no)) (setq x (/ (float n2) (float n1))) (princ (strcat "no= " (itoa no) ", ratio= ")) (princ x) (princ "\n") (setq no (1+ no)) ) ; end of while() ; end of main() -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 210.243.237.65
HiEArO:原來費氏數列還有這種特性~ 11/20 18:56
mindau:大師拜倒,我還在 try 11/22 01:14
> -------------------------------------------------------------------------- < 作者: sjgau (sjgau) 看板: Cad_Cae 標題: Re: [心得] AutoLISP 的 Hello, world!\n 時間: Sun Nov 20 21:49:59 2005 http://www.autocad.com.tw/lisp_3.htm AutoLISP 線上教學 免費 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.104.49.221 > -------------------------------------------------------------------------- < 作者: sjgau (sjgau) 看板: Cad_Cae 標題: Re: [心得] AutoLISP 的 Hello, world!\n 時間: Mon Nov 21 08:58:13 2005 http://xserve.math.nctu.edu.tw/people/cpai/carnival/fibonacci/03.htm -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 210.243.237.65
mgw:看了各位前輩討論LISP 自己也跟著熱血起來了 決定學了!!! 11/21 10:34
sjgau:LISP, AutoLISP 真的很簡單,加油! 11/21 10:50
> -------------------------------------------------------------------------- <