作者note100 (XD)
看板Cad_Cae
標題[請益] 2007 LISP語法 V.S 2011 LISP語法
時間Sun Dec 11 23:49:55 2011
因為最近需要畫螺旋圖
直接套用了書上以及版上的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)
1F:推 jiwenho:你程式最初忘了關掉抓點模式(setvar "osmode" 0) 12/12 11:27
2F:→ passerwater:最後是prinl??是否應該是princ?? 12/14 22:16
3F:→ passerwater:有prin1(數字1不是小寫L)常會看錯所以抑制常用princ 12/14 22:43