aytxq 发表于 2009-9-10 21:28:00

[求助]请各位高手帮我看一下这个程序错在哪里

<p>程序可以正常执行.可是执行完总会出再这个提示:<font color="#9955aa">错误: 参数类型错误: lentityp nil</font></p><p>&nbsp;</p>

muwind 发表于 2009-9-11 00:55:00

本帖最后由 作者 于 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/>&nbsp; (Setvar "Cmdecho" 1)<br/>&nbsp; (Setq All (Ssget '((0 . "Circle"))))<br/>&nbsp; (Setq N 0)<br/>&nbsp; (Initget "Horizontal Vertical")<br/>&nbsp; (Setq HV (Getkword "\n 水平分割(H)/垂直分割(V)?:"))<br/>&nbsp; (If (= HV "Horizontal")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (progn<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (Setq HV Nil)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (Initget "Left Right")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (Setq LR (Getkword "\n 下半部分左移(L)/右移(R)?:"))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (If (= LR "Left")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (While (&lt; N (Sslength All))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (Setq Cen (Cdr (Assoc 10 (Entget (Ssname All N))))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Rad (Cdr (Assoc 40 (Entget (Ssname All N))))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; A1 0<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; A2 Pi<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 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/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 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/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; N (1+ N))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (Entdel (Ssname All (- N 1)))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; );L End<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (While (&lt; N (Sslength All))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (Setq Cen (Cdr (Assoc 10 (Entget (Ssname All N))))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Rad (Cdr (Assoc 40 (Entget (Ssname All N))))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; A1 0<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; A2 Pi<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 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/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 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/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; N (1+ N))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (Entdel (Ssname All (- N 1)))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; );R End<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; );LR End<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; );H End<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ((Setq HV Nil)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (Initget "Up Down")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (Setq UD (Getkword "\n 左半部分上移(U)/下移(D)?:"))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (If (= UD "Up")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (While (&lt; N (Sslength All))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (Setq Cen (Cdr (Assoc 10 (Entget (Ssname All N))))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Rad (Cdr (Assoc 40 (Entget (Ssname All N))))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; A1 (* 1.5 Pi)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; A2 (* 0.5 Pi)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 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/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 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/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; N (1+ N))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (Entdel (Ssname All (- N 1)))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; );U End<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (While (&lt; N (Sslength All))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (Setq Cen (Cdr (Assoc 10 (Entget (Ssname All N))))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Rad (Cdr (Assoc 40 (Entget (Ssname All N))))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; A1 (* 1.5 Pi)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; A2 (* 0.5 Pi)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 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/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 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/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; N (1+ N))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (Entdel (Ssname All (- N 1)))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; );D End<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; );UD End<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; );V End<br/>&nbsp;&nbsp;&nbsp; );HV End<br/>&nbsp; (Setvar "Cmdecho" 1)<br/>&nbsp; (Princ)<br/>)</font></p><p><font face="Courier New">试下这个,困了睡觉先</font></p><p></p>

muwind 发表于 2009-9-11 13:23:00

<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">&gt;</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>

asdfxx 发表于 2009-9-11 16:48:00

aytxq 发表于 2009-9-13 23:07:00

<p>上网不易,今天才回复.谢谢上面两位高手了.问题已按muwind的方法解决了.再次谢谢.</p>
页: [1]
查看完整版本: [求助]请各位高手帮我看一下这个程序错在哪里