[請益] 2007 LISP語法 V.S 2011 LISP語法

看板Cad_Cae (電腦輔助設計)作者 (XD)時間14年前 (2011/12/11 23:49), 編輯推噓1(102)
留言3則, 2人參與, 最新討論串1/2 (看更多)
因為最近需要畫螺旋圖 直接套用了書上以及版上的LISP語法 但是,使用之後,都各自出現問題 不知道是版本問題(我使用autoCAD 2011)? 還是語法錯誤? 版上的語法: 最後出現 ; 錯誤: 損壞的引數類型: numberp: nil _$ ); end of c:spiral (princ) ; end of file ; 錯誤: 其他的輸入右 paren _$ 我參考書本上的 (defun c:lsp_32() (setvar "cmdecho" 0) (setq os (getvar "osmode")) (setq p1 (getpoint "漸開線中心點:")) (setq rr (getdist p1 "\n小圓半徑<5>:"))(if (null rr)(setq rr 5)) (setq ofs_h (getreal "\n水平偏移距離<5>:"))(if (null ofs_h)(setq ofs_h 5)) (setq ofs_v (getreal "\n垂直偏移距離<5>:"))(if (null ofs_v)(setq ofs_v 5)) (setq NN (getint "\n1/4圓弧漸開數量<9>:"))(if (null nn)(setq nn 9)) ;*************************************************************************** (setq p2 (polar p1 0 ofs_h) p3 (polar p2 (* pi 1.5) ofs_v) p4 (polar p3 pi ofs_h) ) (setq pp_list(list p2 p3 p4 p1));將4點成串列 (command "circle" p1 rr);畫第一個圓 (setq new_rr rr rr_list '()) (setq i 0 new_ang pi) (setq cc_list'("1" "2" "3" "4" "5" "6" "7")) (repeat nn (if (= (rem i 2) 0) (setq add_rr ofs_h) (setq add_rr ofs_v) ) (setq arc_cen(nth (rem i 4) pp_list)) (setq new_rr (+ new_rr add_rr)) (setq arc_ps (polar arc_cen new_ang new_rr)) (setvar "cecolor" (nth (rem i 7) cc_list)) (command "arc" arc_ps "c" arc_cen "a" -90) (setq rr_list (cons new_rr rr_list)) (setq i (1+ i) new_ang (- new_ang (* pi 0.5))) ) (setq arc_pe (polar arc_cen new_ang (nth 4 rr_list))) (command "arc" "" arc_pe) (setvar "cecolor" "bylayer") (setvar "osmode" os) (prin1) ) 還是有誤 不知道該如何執行 謝謝! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.137.20.21 ※ 編輯: note100 來自: 140.137.20.21 (12/11 23:50)

12/12 11:27, , 1F
你程式最初忘了關掉抓點模式(setvar "osmode" 0)
12/12 11:27, 1F

12/14 22:16, , 2F
最後是prinl??是否應該是princ??
12/14 22:16, 2F

12/14 22:43, , 3F
有prin1(數字1不是小寫L)常會看錯所以抑制常用princ
12/14 22:43, 3F
文章代碼(AID): #1EvD4bx4 (Cad_Cae)
文章代碼(AID): #1EvD4bx4 (Cad_Cae)