adc 发表于 2011-5-10 10:51:12

按层选中可多选

本帖最后由 adc 于 2011-5-10 10:51 编辑

这个例子可以选中某个层内的物体,请问怎样改造为可以多选几个层                                                                                    (setvar "cmdecho" 0)
(Defun C:cxx (/ CNAME ENT SS)
(and
    ;;
    (setq ss (entsel "\n请选择需要选择的层中的一个物体: "))
    (setq ent (entget (car ss)))
    (setq cname (cdr (assoc 8 ent)))
    (princ (strcat "\n选中了图层: \"" cname "\""))
    ;;
    (princ "\n框选范围....")
    (setq ss (ssget (list (cons 8 cname))))
    ;;
    (sssetfirst NIL SS)
)
)

Gu_xl 发表于 2011-5-10 12:09:53

回复 adc 的帖子


(Defun C:cxx (/ CNAME ENT SS lay n)
    (setq ss (ssget))
    (repeat (setq n (sslength ss))
      (setq ent (ssname ss (setq n (1- n))))
      (setq la (cdr (assoc 8 (entget ent))))
      (if (not (member la lay)) (setq lay (cons la lay)))
      )
    (setq cname (apply 'strcat (apply 'mapcar (cons 'strcat (list lay (mapcar '(lambda (x) ",") lay))))))
    (princ (strcat "\n选中了图层: \"" cname "\""))
    ;;
    (princ "\n框选范围....")
    (sssetfirst nil (ssget "x" (list (cons 8 cname))))
)

adc 发表于 2011-5-10 13:05:05

本帖最后由 adc 于 2011-5-10 13:07 编辑

谢谢版主!

669423907 发表于 2011-6-29 22:16:43

谢谢Gu_xl版主!

skynoon 发表于 2011-6-29 22:38:14

    (setq ss1 (ssget))
(setq        i   -1
        lst '()
)
(while (setq s1 (ssname ss1 (setq i (1+ i))))
      (setq ent (entget s1))
      (setq lst (append lst (list (cdr (assoc 8 ent)))))
    )
    (setq
      layer_fili
       (apply 'strcat
              (mapcar '(lambda (x) (strcat x ",")) lst)
       )
    )
    (setq layer_fili (vl-string-right-trim "," layer_fili))
    (setq filiter (list (cons 8 layer_fili)))
    (setq ss2 (ssget filiter))

yoyoho 发表于 2011-6-30 17:39:14

感谢Gu_xl 版主及skynoon楼主分享经验 < 谢谢 ! >

海盗曹 发表于 2012-5-25 14:48:36

Gu版的好程序,学习了~

DZW1030 发表于 2013-1-24 10:15:02

Gu_xl 发表于 2011-5-10 12:09 static/image/common/back.gif
回复 adc 的帖子

版主,这个好像不能选择范围啊,整张图的同层选都选择了。

DZW1030 发表于 2013-1-24 10:23:02

Gu_xl 发表于 2011-5-10 12:09 static/image/common/back.gif
回复 adc 的帖子

版主,这个好像不能选择范围啊,整张图的同层选都选择了。

yzr2002626 发表于 2013-1-24 10:51:23

(sssetfirst nil (ssget (list (cons 8 cname))))
去掉那“x”就行
页: [1]
查看完整版本: 按层选中可多选