明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 827|回复: 4

[已解答] 请教高手,该段程序哪里出错了,请教

[复制链接]
发表于 2014-1-7 23:10 | 显示全部楼层 |阅读模式
(defun c:xx()
  (setq zx-ent (ssget ))
   (setq zx-ls (ssadd))    ;设置空选集
   (setq zx-n1 0)
   (repeat (sslength zx-ent)
    (if (= (cdr (assoc 0 (entget (ssname zx-ent zx-n1)))) "LINE")
      (PROGN
(setq zx-ls  (ssadd (ssname zx-ent zx-n1) zx-ls))
(setq zx-ent (ssdel (ssname zx-ent zx-n1) zx-ent))
)
      )
    (setq zx-n1 (1+ zx-n1))
)
  (princ zx-ent)
  (princ zx-ls)
      )
 楼主| 发表于 2014-1-8 07:41 | 显示全部楼层
反复试验,出错的应该在(setq zx-ent (ssdel (ssname zx-ent zx-n1) zx-ent)),这句,请问是什么问题
发表于 2014-1-8 07:48 | 显示全部楼层
  1. (defun c:xx ()
  2.   (setq zx-ent (ssget))
  3.   (setq zx-ls  (ssadd)                  ;设置空选集
  4.         zx-ls2 (ssadd)                  ;setq可以连续写
  5.         zx-n1  0
  6.   )
  7.   (repeat (sslength zx-ent)
  8.     (if (= (cdr (assoc 0 (entget (setq en (ssname zx-ent zx-n1)))))
  9.            "LINE"
  10.         )
  11.       (ssadd en zx-ls)
  12.       (ssadd en zx-ls2)
  13.     )
  14.     (setq zx-n1 (1+ zx-n1))
  15.   )
  16.   (princ zx-ent)
  17.   (princ zx-ls)
  18.   (princ)
  19. )

几个问题:
1.对选择集的ssname操作,选择集在操作过程中应该保持不变,否则i值会和总长度不匹配。
2.选择集的变量和普通的变量不同,在使用ssadd和ssdel时会直接“修改”选择集本身,不需要使用setq来“回收”返回值。
3.如果仅仅要选择某种类型的选择集,可尝试ssget的过滤表。
发表于 2014-1-8 17:04 | 显示全部楼层
ll_j 发表于 2014-1-8 07:48
几个问题:
1.对选择集的ssname操作,选择集在操作过程中应该保持不变,否则i值会和总长度不匹配。
2.选 ...

ll_j    就是热心      而且详尽
 楼主| 发表于 2014-1-8 20:42 | 显示全部楼层
非常感谢楼主,昨晚苦思冥想了一晚上,衷心感谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-20 02:53 , Processed in 0.279021 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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