AutoCAD顧問
還沒有註冊嗎...即日起免費註冊,所有最完整的AutoCAD討論、教學及資源都在論壇裡喔~
AutoCAD顧問
Would you like to react to this message? Create an account in a few clicks or log in to continue.
[問題]lisp語言錯誤請教 Io15010 [問題]lisp語言錯誤請教 2020-310 [問題]lisp語言錯誤請教 Oiu15010 [問題]lisp語言錯誤請教 2020-211 [問題]lisp語言錯誤請教 Oo-2-110 [問題]lisp語言錯誤請教 BPl3tjj

[問題]lisp語言錯誤請教

向下

[問題]lisp語言錯誤請教 Empty [問題]lisp語言錯誤請教

發表 由 bsl 于 2020-02-01, 19:48

小弟最近在摸索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)
)
bsl
bsl
一般會員
一般會員

文章總數 : 20
年齡 : 37
來自 : 苗栗
職業 : 製程工程師
愛好 : 看電影、玩遊戲
個性 : 很好相處
使用年資 : 新手初學
使用版本 : draftSight
經驗值 : 2821
威望值 : 12
注冊日期 : 2013-06-17
男 射手座 狗

回頂端 向下

[問題]lisp語言錯誤請教 Empty 回復: [問題]lisp語言錯誤請教

發表 由 bin1111 于 2020-02-02, 01:14

and 裡面只接受 T 跟 nil
setq 變數回傳的是變數值,全部拉到 if 外面去

仔細看 (if (and 這一行意義不明
後續的比較式也不知道在做什麼
一個if一個判定
如果判定後要多個動作的話用(progn 可以全部包起來

不急的話可以等我哪天心血來潮回來看再回答
不然就到FB鋼筋撿料 社團PO文
https://www.facebook.com/groups/824549631029702/?ref=bookmarks
avatar
bin1111
一般會員
一般會員

文章總數 : 23
年齡 : 34
來自 : Taipei
職業 : 鋼筋撿料
愛好 : AutoLISP
個性 : 沉穩
使用年資 : 2006年起
使用版本 : 2018
經驗值 : 4541
威望值 : 36
注冊日期 : 2008-11-04
男 白羊座 虎

回頂端 向下

[問題]lisp語言錯誤請教 Empty 回復: [問題]lisp語言錯誤請教

發表 由 bsl 于 2020-02-02, 09:27

感謝你的回覆,我了解了
我會再依您給的方向,仔細研究,謝謝
bsl
bsl
一般會員
一般會員

文章總數 : 20
年齡 : 37
來自 : 苗栗
職業 : 製程工程師
愛好 : 看電影、玩遊戲
個性 : 很好相處
使用年資 : 新手初學
使用版本 : draftSight
經驗值 : 2821
威望值 : 12
注冊日期 : 2013-06-17
男 射手座 狗

回頂端 向下

[問題]lisp語言錯誤請教 Empty 回復: [問題]lisp語言錯誤請教

發表 由 akioharuno 于 2020-02-02, 23:05

這是我拿來修改以後的,可以參考看看


代碼:
(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
akioharuno
一般會員
一般會員

文章總數 : 49
年齡 : 30
來自 : 高雄
職業 : 結構繪圖
愛好 : 不知道
個性 : 都可以
使用年資 : 2
使用版本 : 2016
經驗值 : 1029
威望值 : 93
注冊日期 : 2018-12-31
男 摩羯座 蛇

回頂端 向下

[問題]lisp語言錯誤請教 Empty 回復: [問題]lisp語言錯誤請教

發表 由 bsl 于 2020-02-04, 21:40

感謝 akioharuno 你的幫助
我自己用好久,到現在還是搞不好,能參考你的程序對我幫助很大,謝謝
bsl
bsl
一般會員
一般會員

文章總數 : 20
年齡 : 37
來自 : 苗栗
職業 : 製程工程師
愛好 : 看電影、玩遊戲
個性 : 很好相處
使用年資 : 新手初學
使用版本 : draftSight
經驗值 : 2821
威望值 : 12
注冊日期 : 2013-06-17
男 射手座 狗

回頂端 向下

回頂端


 
這個論壇的權限:
無法 在這個版面回復文章
[問題]lisp語言錯誤請教 Uos15010 [問題]lisp語言錯誤請教 BPl3tjj [問題]lisp語言錯誤請教 Ziao1510 [問題]lisp語言錯誤請教 Oo-2-110 [問題]lisp語言錯誤請教 Oooo-110 [問題]lisp語言錯誤請教 2020-211