作者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