明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1712|回复: 4

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

[复制链接]
发表于 2009-9-10 21:28:00 | 显示全部楼层 |阅读模式

程序可以正常执行.可是执行完总会出再这个提示:错误: 参数类型错误: lentityp nil

 

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2009-9-11 00:55:00 | 显示全部楼层
本帖最后由 作者 于 2009-9-11 13:07:39 编辑

;分圓孔
(Defun C:33(/ );Hv Lr Ud Cen Rad A1 A2 Arc1 Arc2 N All
  (Setvar "Cmdecho" 1)
  (Setq All (Ssget '((0 . "Circle"))))
  (Setq N 0)
  (Initget "Horizontal Vertical")
  (Setq HV (Getkword "\n 水平分割(H)/垂直分割(V)?:"))
  (If (= HV "Horizontal")
      (progn
       (Setq HV Nil)
       (Initget "Left Right")
       (Setq LR (Getkword "\n 下半部分左移(L)/右移(R)?:"))
         (If (= LR "Left")
         (While (< N (Sslength All))
          (Setq Cen (Cdr (Assoc 10 (Entget (Ssname All N))))
                    Rad (Cdr (Assoc 40 (Entget (Ssname All N))))
                A1 0
                A2 Pi
                Arc1 (Entmake (List (Cons 0 "Arc") (Cons 10 (List (- (Car Cen) 0.0015) (Cadr Cen))) (Cons 50 A2) (Cons 51 A1) (Cons 40 Rad)))
                    Arc2 (Entmake (List (Cons 0 "Arc") (Cons 10 (List (+ (Car Cen) 0.0015) (Cadr Cen))) (Cons 50 A1) (Cons 51 A2) (Cons 40 Rad)))
            N (1+ N))
          (Entdel (Ssname All (- N 1)))
        );L End
         (While (< N (Sslength All))
          (Setq Cen (Cdr (Assoc 10 (Entget (Ssname All N))))
                    Rad (Cdr (Assoc 40 (Entget (Ssname All N))))
                A1 0
                A2 Pi
                Arc1 (Entmake (List (Cons 0 "Arc") (Cons 10 (List (+ (Car Cen) 0.0015) (Cadr Cen))) (Cons 50 A2) (Cons 51 A1) (Cons 40 Rad)))
                    Arc2 (Entmake (List (Cons 0 "Arc") (Cons 10 (List (- (Car Cen) 0.0015) (Cadr Cen))) (Cons 50 A1) (Cons 51 A2) (Cons 40 Rad)))
            N (1+ N))
              (Entdel (Ssname All (- N 1)))
         );R End
        );LR End
       );H End
      ((Setq HV Nil)
       (Initget "Up Down")
       (Setq UD (Getkword "\n 左半部分上移(U)/下移(D)?:"))
         (If (= UD "Up")
         (While (< N (Sslength All))
          (Setq Cen (Cdr (Assoc 10 (Entget (Ssname All N))))
                    Rad (Cdr (Assoc 40 (Entget (Ssname All N))))
                A1 (* 1.5 Pi)
                A2 (* 0.5 Pi)
                Arc1 (Entmake (List (Cons 0 "Arc") (Cons 10 (List (Car Cen) (+ (Cadr Cen) 0.0015))) (Cons 50 A2) (Cons 51 A1) (Cons 40 Rad)))
                    Arc2 (Entmake (List (Cons 0 "Arc") (Cons 10 (List (Car Cen) (- (Cadr Cen) 0.0015))) (Cons 50 A1) (Cons 51 A2) (Cons 40 Rad)))
            N (1+ N))
          (Entdel (Ssname All (- N 1)))
         );U End
       (While (< N (Sslength All))
          (Setq Cen (Cdr (Assoc 10 (Entget (Ssname All N))))
                    Rad (Cdr (Assoc 40 (Entget (Ssname All N))))
                A1 (* 1.5 Pi)
                A2 (* 0.5 Pi)
                Arc1 (Entmake (List (Cons 0 "Arc") (Cons 10 (List (Car Cen) (- (Cadr Cen) 0.0015))) (Cons 50 A2) (Cons 51 A1) (Cons 40 Rad)))
                    Arc2 (Entmake (List (Cons 0 "Arc") (Cons 10 (List (Car Cen) (+ (Cadr Cen) 0.0015))) (Cons 50 A1) (Cons 51 A2) (Cons 40 Rad)))
            N (1+ N))
             (Entdel (Ssname All (- N 1)))
         );D End
        );UD End
       );V End
    );HV End
  (Setvar "Cmdecho" 1)
  (Princ)
)

试下这个,困了睡觉先

发表于 2009-9-11 13:23:00 | 显示全部楼层

(> (Sslength All) 0)
这个条件 好象是一直成立的,你在下面的代码没有减少ALL选集中的图元的,只要你有一个非空的选集ALL,这个条件就成立。所以当N超过(Sslength All)的时候就会出错

可能是这样的吧

发表于 2009-9-11 16:48:00 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
 楼主| 发表于 2009-9-13 23:07:00 | 显示全部楼层

上网不易,今天才回复.谢谢上面两位高手了.问题已按muwind的方法解决了.再次谢谢.

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-6 07:24 , Processed in 0.178094 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表