作者sjgau (sjgau)
看板Cad_Cae
標題[心得] AutoLISP 的 Hello, world!\n
時間Mon Sep 26 06:04:56 2005
(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
> -------------------------------------------------------------------------- <