f4800
发表于 2020-11-4 23:15:13
小菜版选择易,欢迎使用并提出完善建议
非常好用的插件 不错支持
yjtdkj
发表于 2021-8-4 16:17:32
小菜兄,能帮我看一个这个测试文件吗?估计是编组的问题,输入命令后立即就出错了
yjtdkj
发表于 2021-8-5 12:39:39
本帖最后由 yjtdkj 于 2021-8-5 12:41 编辑
yjtdkj 发表于 2021-8-4 16:17
小菜兄,能帮我看一个这个测试文件吗?估计是编组的问题,输入命令后立即就出错了
谢谢小菜的解答,我觉得是因为我新建组的函数的问题,下面的是代码,小菜能研究一下有没有什么办法改进呢?;; Group Entities-Lee Mac
;; Creates a Group with a given name containing all entities in the supplied list
;; grp - Group name (use "*" for an anonymous group)
;; lst - List of entities to add to group
;; sel - If T, group is selectable
(defun LM:groupentities ( grp lst sel / dic enx gde gdx tmp )
(if (setq dic (cdr (assoc -1 (dictsearch (namedobjdict) "acad_group"))))
(if (setq gdx (dictsearch dic grp)
gde (cdr (assoc -1 gdx))
)
(progn
(entmod (append gdx (mapcar '(lambda ( x ) (cons 340 x)) lst)))
(foreach ent lst
(setq enx (entget ent)
tmp (member '(102 . "{ACAD_REACTORS") enx)
)
(if tmp
(setq tmp
(vl-list*
(car tmp)
(cons 330 gde)
(cdr tmp)
)
)
(setq tmp
(vl-list*
'(102 . "{ACAD_REACTORS")
(cons 330 gde)
'(102 . "}")
(cdr (member (assoc 5 enx) enx))
)
)
)
(entmod (append (reverse (member (assoc 5 enx) (reverse enx))) tmp))
)
grp
)
(if
(and
(setq gde
(entmakex
(list
'(000 . "GROUP")
'(100 . "AcDbGroup")
(if (wcmatch grp "`*") '(070 . 1) '(070 . 0))
(if sel '(071 . 1) '(071 . 0))
)
)
)
(if (wcmatch grp "`*")
(if (entmod (append (entget dic) (list '(3 . "*") (cons 350 gde)))) ;; thanks vk/rjp
(setq grp
(cdadr
(member
(cons 350 gde)
(reverse (entget dic))
)
)
)
)
(dictadd dic grp gde)
)
)
(LM:groupentities grp lst sel)
)
)
)
)
(defun c:test ( / grp idx lst sel )
(while
(not
(or (wcmatch (setq grp (getstring t "Specify group name: ")) "`*,")
(snvalid grp)
)
)
(princ "\nGroup name invalid.")
)
(if (and (/= "" grp) (setq sel (ssget )))
(progn
(repeat (setq idx (sslength sel))
(setq lst (cons (ssname sel (setq idx (1- idx))) lst))
)
(LM:groupentities grp lst t)
)
)
)可能是因为我新建了匿名组的原因
yjtdkj
发表于 2021-8-5 14:56:28
本帖最后由 yjtdkj 于 2021-8-5 14:57 编辑
yjtdkj 发表于 2021-8-5 12:39
谢谢小菜的解答,我觉得是因为我新建组的函数的问题,下面的是代码,小菜能研究一下有没有什么办法改进呢 ...
哈哈哈,找到原因了,还真不是我改动的原因,就是原函数少了330组码。更新的代码贴在下面;; Group Entities-Lee Mac
;; Creates a Group with a given name containing all entities in the supplied list
;; grp - Group name (use "*" for an anonymous group)
;; lst - List of entities to add to group
;; sel - If T, group is selectable
(defun LM:groupentities ( grp lst sel / dic enx gde gdx tmp )
(if (setq dic (cdr (assoc -1 (dictsearch (namedobjdict) "acad_group"))))
(if (setq gdx (dictsearch dic grp)
gde (cdr (assoc -1 gdx))
)
(progn
(entmod (append gdx (mapcar '(lambda ( x ) (cons 340 x)) lst)))
(foreach ent lst
(setq enx (entget ent)
tmp (member '(102 . "{ACAD_REACTORS") enx)
)
(if tmp
(setq tmp
(vl-list*
(car tmp)
(cons 330 gde)
(cdr tmp)
)
)
(setq tmp
(vl-list*
'(102 . "{ACAD_REACTORS")
(cons 330 gde)
'(102 . "}")
(cdr (member (assoc 5 enx) enx))
)
)
)
(entmod (append (reverse (member (assoc 5 enx) (reverse enx))) tmp))
)
grp
)
(if
(and
(setq gde
(entmakex
(list
'(000 . "GROUP")
'(102 . "{ACAD_REACTORS")
(cons 330 dic)
'(102 . "}")
(cons 330 dic)
'(100 . "AcDbGroup")
(if (wcmatch grp "`*") '(070 . 1) '(070 . 0))
(if sel '(071 . 1) '(071 . 0))
)
)
)
(if (wcmatch grp "`*")
(if (entmod (append (entget dic) (list '(3 . "*") (cons 350 gde)))) ;; thanks vk/rjp
(setq grp
(cdadr
(member
(cons 350 gde)
(reverse (entget dic))
)
)
)
)
(dictadd dic grp gde)
)
)
(LM:groupentities grp lst sel)
)
)
)
)
(defun c:test ( / grp idx lst sel )
(while
(not
(or (wcmatch (setq grp (getstring t "Specify group name: ")) "`*,")
(snvalid grp)
)
)
(princ "\nGroup name invalid.")
)
(if (and (/= "" grp) (setq sel (ssget )))
(progn
(repeat (setq idx (sslength sel))
(setq lst (cons (ssname sel (setq idx (1- idx))) lst))
)
(LM:groupentities grp lst t)
)
)
)
xmzhangzhilin
发表于 2021-9-18 14:07:01
非常实用的一个插件,感谢!
alexmai
发表于 2021-9-24 14:06:15
明经十大好用插件之一,建议放个二维码,我一定捐助
Aries
发表于 2021-9-24 15:57:50
一直在用感谢
hkhbs
发表于 2021-9-26 07:45:13
给力! 很给力
明_明
发表于 2021-9-28 17:15:53
又更新了,感谢分享!
will12son1
发表于 2021-12-17 14:56:44
又更新了,感谢分享!:victory: