zark 发表于 2011-12-28 22:57:17

如何用SSGET(或其它VL函数)获取指定编组名的所有成员

请教大家一个问题
如何用SSGET这个函数获取指定编组名的所有成员呢?

中文:谢谢
英文:3Q
韩文:汪汪



http://bbs.mjtd.com/xwb/images/bgimg/icon_logo.png 该贴已经同步到 zark的微博

Andyhon 发表于 2011-12-28 23:15:00

Ref:
http://4d-technologies.com/techcenter/index.htm
==> Groups

zark 发表于 2011-12-28 23:37:11

Andyhon 发表于 2011-12-28 23:15 static/image/common/back.gif
Ref:
http://4d-technologies.com/techcenter/index.htm
==> Groups

哇,太感谢了。看到GROUPS了,谢谢。
美中不足,里面没有LI_ITEM函数,不过GOOGLE了一下

(defun LI_mitem        (Code entl / Lst itm)
(setq Lst '())
(foreach itm entl
    (if        (= (car itm) Code)
      (setq Lst (cons (cdr itm) Lst))
    )
)
(if Lst
    (reverse Lst)
    nil
)
)

缘份呐 发表于 2011-12-29 00:00:34

全英文看不懂啊!

缘份呐 发表于 2011-12-29 00:02:09

Andyhon 发表于 2011-12-28 23:15 static/image/common/back.gif
Ref:
http://4d-technologies.com/techcenter/index.htm
==> Groups

全英文看不懂啊!

zark 发表于 2011-12-29 00:10:37

本帖最后由 zark 于 2011-12-29 00:11 编辑

(defun ZA:GetEnsByGroup (GroupName / LI_mitem GR_GetAllGroups ENS ENSLST NLST TLST)
(defun LI_mitem (Code entl / Lst itm)
    (setq Lst '())
    (foreach itm entl
      (if (= (car itm) Code)
      (setq Lst (cons (cdr itm) Lst))
      )
    )
    (if      Lst (reverse Lst) nil)
)
(defun GR_GetAllGroups (/ grp GroupLst GroupEname GroupMembLst)
    (setq grp (dictsearch (namedobjdict) "ACAD_GROUP")
      GroupLst (LI_mitem 3 grp)
      GroupEname (LI_mitem 350 grp)
      GroupMembLst (mapcar '(lambda (x) (LI_mitem 340 (entget x))) GroupEname)
    )
    (if      GroupLst (list GroupLst GroupEname GroupMembLst) nil)
)
(if (And
      (= (type GroupName) 'STR)
      (setq NLst (GR_GetAllGroups))
      (setq TLst (member (strcase GroupName) (car NLst)))
      )
    (progn
      (setq EnsLst (nth (- (length NLst) (length TLst)) (last NLst)))
      (setq ens (ssadd))
      (foreach x EnsLst
      (ssadd x ens)
      )
      )
    )
Ens
)

zark 发表于 2011-12-29 00:53:38

被CAOYIN两行解决,太牛了

(setq *groups* (vla-get-groups(vla-get-activedocument (vlax-get-acad-object))))
(setq EnsLst (vlax-for X (vla-item *groups* name) (setq lst (cons (vlax-vla-object->ename X) lst))))

野狼谷/〈M〉 发表于 2013-1-30 09:51:13

ssget "X" "group" (8. 该如何编写呢,你上面发的都是单独的功能,没有使用说明

阿然 发表于 2013-1-30 10:42:57

(command "_.Select" "G" groupname "")
(ssget "P")
页: [1]
查看完整版本: 如何用SSGET(或其它VL函数)获取指定编组名的所有成员