[問題]lisp語言錯誤請教
3 posters
AutoCAD顧問 :: 技術(發言等級:一般會員) :: :: 進階討論
第1頁(共1頁)
[問題]lisp語言錯誤請教
小弟最近在摸索lisp
參考許多大哥的lsp文件的寫法
也參考了下列的網頁教學
http://www.tpce.org.tw/tpce/ePaper/596-1.pdf
最近遇到下面的語言寫法,執行時一直出現損壞的引數類型
自己一直在找是哪裡有錯誤,但是已經找了兩天了
實在看不出錯誤在哪裡,這是一個給與半徑數值再給總長就能畫弧的lsp
請問大哥語法中到底哪裡錯了,會一直出現錯誤,請大家指教 謝謝
分隔線---------------------
(defun C:tes ( / ang1 l1 l2 pt1 r1)
(if (and
(setq R1 (getdist "\n請輸入圓弧半徑"))
(> R1 0)
(setq L1 (* 2 pi R1))
(setq pt1 (getpoint "\n請輸入圓弧圓心座標"))
(setq L2 (getdist (strcat "\n請輸入小於:" (rtos L1) "圓弧長度")))
(< L2 L1)
(> L2 0)
(setq ang1 (/ L2 R1))
)
(progn;;1
(entmake (list '(0 . "ARC") (cons 10 pt1) (cons 40 R1) (cons 50 0) (cons 51 ang1)))
);progn;1
)
(princ)
)
參考許多大哥的lsp文件的寫法
也參考了下列的網頁教學
http://www.tpce.org.tw/tpce/ePaper/596-1.pdf
最近遇到下面的語言寫法,執行時一直出現損壞的引數類型
自己一直在找是哪裡有錯誤,但是已經找了兩天了
實在看不出錯誤在哪裡,這是一個給與半徑數值再給總長就能畫弧的lsp
請問大哥語法中到底哪裡錯了,會一直出現錯誤,請大家指教 謝謝
分隔線---------------------
(defun C:tes ( / ang1 l1 l2 pt1 r1)
(if (and
(setq R1 (getdist "\n請輸入圓弧半徑"))
(> R1 0)
(setq L1 (* 2 pi R1))
(setq pt1 (getpoint "\n請輸入圓弧圓心座標"))
(setq L2 (getdist (strcat "\n請輸入小於:" (rtos L1) "圓弧長度")))
(< L2 L1)
(> L2 0)
(setq ang1 (/ L2 R1))
)
(progn;;1
(entmake (list '(0 . "ARC") (cons 10 pt1) (cons 40 R1) (cons 50 0) (cons 51 ang1)))
);progn;1
)
(princ)
)
bsl- 一般會員
- 文章總數 : 20
年齡 : 41
來自 : 苗栗
職業 : 製程工程師
愛好 : 看電影、玩遊戲
個性 : 很好相處
使用年資 : 新手初學
使用版本 : draftSight
經驗值 : 4258
威望值 : 12
注冊日期 : 2013-06-17
回復: [問題]lisp語言錯誤請教
and 裡面只接受 T 跟 nil
setq 變數回傳的是變數值,全部拉到 if 外面去
仔細看 (if (and 這一行意義不明
後續的比較式也不知道在做什麼
一個if一個判定
如果判定後要多個動作的話用(progn 可以全部包起來
不急的話可以等我哪天心血來潮回來看再回答
不然就到FB鋼筋撿料 社團PO文
https://www.facebook.com/groups/824549631029702/?ref=bookmarks
setq 變數回傳的是變數值,全部拉到 if 外面去
仔細看 (if (and 這一行意義不明
後續的比較式也不知道在做什麼
一個if一個判定
如果判定後要多個動作的話用(progn 可以全部包起來
不急的話可以等我哪天心血來潮回來看再回答
不然就到FB鋼筋撿料 社團PO文
https://www.facebook.com/groups/824549631029702/?ref=bookmarks
bin1111- 一般會員
- 文章總數 : 23
年齡 : 38
來自 : Taipei
職業 : 鋼筋撿料
愛好 : AutoLISP
個性 : 沉穩
使用年資 : 2006年起
使用版本 : 2018
經驗值 : 5978
威望值 : 36
注冊日期 : 2008-11-04
回復: [問題]lisp語言錯誤請教
感謝你的回覆,我了解了
我會再依您給的方向,仔細研究,謝謝
我會再依您給的方向,仔細研究,謝謝
bsl- 一般會員
- 文章總數 : 20
年齡 : 41
來自 : 苗栗
職業 : 製程工程師
愛好 : 看電影、玩遊戲
個性 : 很好相處
使用年資 : 新手初學
使用版本 : draftSight
經驗值 : 4258
威望值 : 12
注冊日期 : 2013-06-17
回復: [問題]lisp語言錯誤請教
這是我拿來修改以後的,可以參考看看
- 代碼:
(defun C:tes (/ ang1 l1 l2 pt1 r1)
(setq a T b T)
(while a
(setq r1 (getdist "\nr1"))
(if (> r1 0)
(setq a nil)
(princ "\nr1<0")
)
)
(setq l1 (* 2 pi r1))
(setq pt1 (getpoint "\nCenter"))
(while b
(setq l2 (getdist "\nL2"))
(if (and (< l2 l1) (> l2 0))
(setq b nil)
(princ "\nsomething wrong")
)
)
(setq ang1 (/ l2 r1))
(entmake
(list
(cons 0 "ARC")
(cons 10 pt1)
(cons 40 r1)
(cons 50 0)
(cons 51 ang1)))
)
akioharuno- 一般會員
- 文章總數 : 56
年齡 : 34
來自 : 高雄
職業 : 結構繪圖
愛好 : 不知道
個性 : 都可以
使用年資 : 2
使用版本 : 2016
經驗值 : 2504
威望值 : 96
注冊日期 : 2018-12-31
回復: [問題]lisp語言錯誤請教
感謝 akioharuno 你的幫助
我自己用好久,到現在還是搞不好,能參考你的程序對我幫助很大,謝謝
我自己用好久,到現在還是搞不好,能參考你的程序對我幫助很大,謝謝
bsl- 一般會員
- 文章總數 : 20
年齡 : 41
來自 : 苗栗
職業 : 製程工程師
愛好 : 看電影、玩遊戲
個性 : 很好相處
使用年資 : 新手初學
使用版本 : draftSight
經驗值 : 4258
威望值 : 12
注冊日期 : 2013-06-17
AutoCAD顧問 :: 技術(發言等級:一般會員) :: :: 進階討論
第1頁(共1頁)
這個論壇的權限:
您 無法 在這個版面回復文章