[求助]请各位高手帮我看一下这个程序错在哪里
<p>程序可以正常执行.可是执行完总会出再这个提示:<font color="#9955aa">错误: 参数类型错误: lentityp nil</font></p><p> </p> 本帖最后由 作者 于 2009-9-11 13:07:39 编辑 <br /><br /> <p><font face="Courier New">;分圓孔<br/>(Defun C:33(/ );Hv Lr Ud Cen Rad A1 A2 Arc1 Arc2 N All<br/> (Setvar "Cmdecho" 1)<br/> (Setq All (Ssget '((0 . "Circle"))))<br/> (Setq N 0)<br/> (Initget "Horizontal Vertical")<br/> (Setq HV (Getkword "\n 水平分割(H)/垂直分割(V)?:"))<br/> (If (= HV "Horizontal")<br/> (progn<br/> (Setq HV Nil)<br/> (Initget "Left Right")<br/> (Setq LR (Getkword "\n 下半部分左移(L)/右移(R)?:"))<br/> (If (= LR "Left")<br/> (While (< N (Sslength All))<br/> (Setq Cen (Cdr (Assoc 10 (Entget (Ssname All N))))<br/> Rad (Cdr (Assoc 40 (Entget (Ssname All N))))<br/> A1 0<br/> A2 Pi<br/> Arc1 (Entmake (List (Cons 0 "Arc") (Cons 10 (List (- (Car Cen) 0.0015) (Cadr Cen))) (Cons 50 A2) (Cons 51 A1) (Cons 40 Rad)))<br/> Arc2 (Entmake (List (Cons 0 "Arc") (Cons 10 (List (+ (Car Cen) 0.0015) (Cadr Cen))) (Cons 50 A1) (Cons 51 A2) (Cons 40 Rad)))<br/> N (1+ N))<br/> (Entdel (Ssname All (- N 1)))<br/> );L End<br/> (While (< N (Sslength All))<br/> (Setq Cen (Cdr (Assoc 10 (Entget (Ssname All N))))<br/> Rad (Cdr (Assoc 40 (Entget (Ssname All N))))<br/> A1 0<br/> A2 Pi<br/> Arc1 (Entmake (List (Cons 0 "Arc") (Cons 10 (List (+ (Car Cen) 0.0015) (Cadr Cen))) (Cons 50 A2) (Cons 51 A1) (Cons 40 Rad)))<br/> Arc2 (Entmake (List (Cons 0 "Arc") (Cons 10 (List (- (Car Cen) 0.0015) (Cadr Cen))) (Cons 50 A1) (Cons 51 A2) (Cons 40 Rad)))<br/> N (1+ N))<br/> (Entdel (Ssname All (- N 1)))<br/> );R End<br/> );LR End<br/> );H End<br/> ((Setq HV Nil)<br/> (Initget "Up Down")<br/> (Setq UD (Getkword "\n 左半部分上移(U)/下移(D)?:"))<br/> (If (= UD "Up")<br/> (While (< N (Sslength All))<br/> (Setq Cen (Cdr (Assoc 10 (Entget (Ssname All N))))<br/> Rad (Cdr (Assoc 40 (Entget (Ssname All N))))<br/> A1 (* 1.5 Pi)<br/> A2 (* 0.5 Pi)<br/> Arc1 (Entmake (List (Cons 0 "Arc") (Cons 10 (List (Car Cen) (+ (Cadr Cen) 0.0015))) (Cons 50 A2) (Cons 51 A1) (Cons 40 Rad)))<br/> Arc2 (Entmake (List (Cons 0 "Arc") (Cons 10 (List (Car Cen) (- (Cadr Cen) 0.0015))) (Cons 50 A1) (Cons 51 A2) (Cons 40 Rad)))<br/> N (1+ N))<br/> (Entdel (Ssname All (- N 1)))<br/> );U End<br/> (While (< N (Sslength All))<br/> (Setq Cen (Cdr (Assoc 10 (Entget (Ssname All N))))<br/> Rad (Cdr (Assoc 40 (Entget (Ssname All N))))<br/> A1 (* 1.5 Pi)<br/> A2 (* 0.5 Pi)<br/> Arc1 (Entmake (List (Cons 0 "Arc") (Cons 10 (List (Car Cen) (- (Cadr Cen) 0.0015))) (Cons 50 A2) (Cons 51 A1) (Cons 40 Rad)))<br/> Arc2 (Entmake (List (Cons 0 "Arc") (Cons 10 (List (Car Cen) (+ (Cadr Cen) 0.0015))) (Cons 50 A1) (Cons 51 A2) (Cons 40 Rad)))<br/> N (1+ N))<br/> (Entdel (Ssname All (- N 1)))<br/> );D End<br/> );UD End<br/> );V End<br/> );HV End<br/> (Setvar "Cmdecho" 1)<br/> (Princ)<br/>)</font></p><p><font face="Courier New">试下这个,困了睡觉先</font></p><p></p> <p><font face="Courier New"><font color="#ff0000">(</font></font><a href="http://www.mjtd.com/object/autolisp/62.htm" target="_black"><font face="Courier New" color="#0000ff">></font></a><font face="Courier New"><font color="#ff0000">(</font></font><a href="http://www.mjtd.com/object/autolisp/Sslength.htm" target="_black"><font face="Courier New" color="#0000ff">Sslength</font></a><font face="Courier New"> All<font color="#ff0000">)</font>
<font color="#008000">0</font><font color="#ff0000">)</font><br/>这个条件 好象是一直成立的,你在下面的代码没有减少ALL选集中的图元的,只要你有一个非空的选集ALL,这个条件就成立。所以当N超过<font color="#ff0000">(</font><a href="http://www.mjtd.com/object/autolisp/Sslength.htm" target="_black"><font face="Courier New" color="#0000ff">Sslength</font></a><font face="Courier New"> All<font color="#ff0000">)的时候就会出错</font></font></font></p><p><font face="Courier New" color="#ff0000">可能是这样的吧</font></p> <p>上网不易,今天才回复.谢谢上面两位高手了.问题已按muwind的方法解决了.再次谢谢.</p>
页:
[1]