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:
页: 92 93 94 95 96 97 98 99 100 101 [102] 103 104 105 106 107 108 109 110 111
查看完整版本: 小菜版选择易,欢迎使用并提出完善建议