乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 30|回复: 19

[编程交流] Lisp或代码分解组

[复制链接]

26

主题

149

帖子

127

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
135
发表于 2022-7-6 09:59:01 | 显示全部楼层 |阅读模式
大家好。
 
是否有任何现成的lisp或代码可以分解一组
请由集团指挥部收集?
 
谢谢大家。
 
甜甜的
回复

使用道具 举报

8

主题

159

帖子

153

银币

初来乍到

Rank: 1

铜币
40
发表于 2022-7-6 10:03:46 | 显示全部楼层
这是一个很好的“清除”例程集合(PurgeAllGroups)
 
克鲁格
回复

使用道具 举报

26

主题

149

帖子

127

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
135
发表于 2022-7-6 10:07:43 | 显示全部楼层
 
亲爱的克鲁格,收藏在哪里?
 
XXXXXXX以上
回复

使用道具 举报

8

主题

159

帖子

153

银币

初来乍到

Rank: 1

铜币
40
发表于 2022-7-6 10:10:07 | 显示全部楼层
UPSS:oops:link在这里:http://www.jtbworld.com/lisp/purger.htm
克鲁格
回复

使用道具 举报

VVA

1

主题

308

帖子

308

银币

初来乍到

Rank: 1

铜币
8
发表于 2022-7-6 10:14:16 | 显示全部楼层
试试看
PAG-清除所有组
PEG-清除空组
PUG-清除未命名的组(如*Annn)
  1. ; Ф-ция PurgeAllGroups
  2. ; Удаляет описание всех групп
  3. ; Аргумент [Тип]:
  4. ;   НЕТ
  5. ; Возвращает: Nil
  6. (vl-load-com)
  7. (defun PurgeAllGroups (/ grpList index grp)
  8. (setq grpList (dictsearch (namedobjdict) "ACAD_GROUP"))
  9. (setq index 1)
  10. (while (setq grp (nth index grplist))
  11.    (if  (= (car grp) 3)
  12.      (entdel (cdr (nth (+ index 1) grplist)))
  13.    )
  14.    (setq index (+ 1 index))
  15. )
  16. (princ))
  17. ; Ф-ция PurgeEmptyGroups
  18. ; Удаляет описание всех пустых групп
  19. ; Аргумент [Тип]:
  20. ;   Named = Тип [iNT]
  21. ;       0 — только именованные группы
  22. ;       1 — только неименованные группы
  23. ;   t,nil — все группы
  24. ; Возвращает: Nil
  25. (defun PurgeEmptyGroups ( named / grpList index grp egrp named_list e_list)
  26. ;;; Библиотечная ф-ция, возвращает multiple group code
  27. (defun massoc (key alist / x nlist)
  28. (foreach x alist
  29.    (if (eq key (car x))
  30.      (setq nlist (cons (cdr x) nlist))
  31.    ))
  32. (reverse nlist))
  33. (setq named_list '(0 1))
  34. (if (member named named_list)(setq named_list (list named)))
  35. (setq grpList (dictsearch (namedobjdict) "ACAD_GROUP"))
  36. (setq index 1)
  37. (while (setq grp (nth index grplist))
  38.    (if  (= (car grp) 3)
  39.      (progn
  40. (setq egrp (entget (cdr (nth (+ index 1) grplist))))
  41. (if (member (cdr (assoc 70 egrp)) named_list)
  42.    (progn
  43.      (setq e_list (massoc 340 egrp))
  44.      (if(not (vl-member-if 'entget e_list))
  45.        (entdel (cdr (nth (+ index 1) grplist)))
  46.        )
  47.      )
  48.    )
  49. )
  50.      )
  51.    (setq index (+ 1 index))
  52. )
  53. (princ))
  54. ; Ф-ция PurgeAllUnNamedGroups
  55. ; Удаляет описание всех анонимных групп *Annn
  56. ; Аргумент [Тип]:
  57. ; НЕТ
  58. ; Возвращает: Nil
  59. (defun PurgeAllUnNamedGroups (/ grpList index grp)
  60. (setq grpList (dictsearch (namedobjdict) "ACAD_GROUP"))
  61. (setq index 1)
  62. (while (setq grp (nth index grplist))
  63.    (if  (= (car grp) 3)
  64.      (progn
  65. (if (= (chr 42) (substr (cdr grp) 1 1))
  66.    (entdel (cdr (nth (+ index 1) grplist)))
  67. )
  68.      )
  69.    )
  70.    (setq index (+ 1 index))
  71. )
  72. (princ)
  73. )
  74. ; Ф-ция DeleteGroupbyName
  75. ; Удаление группы по имени.
  76. ; Аргумент [Тип]:
  77. ;   Name = Имя группы [sTR]
  78. ; Возвращает: Null
  79. (defun DeleteGroupbyName (Name)
  80. (or *kpblc-activedoc*
  81.   (setq *kpblc-activedoc* (vla-get-activedocument (vlax-get-acad-object)))
  82. )
  83. (vl-catch-all-apply
  84. '(lambda ()
  85.   (vla-delete
  86.    (vla-item
  87.     (vla-get-groups *kpblc-activedoc*)
  88.     Name
  89.    )
  90.   )
  91. )
  92. )
  93. (princ)
  94. )
  95. ; Ф-ция GetObjGroupNames
  96. ; Возвращает список имен групп объекта или nil.
  97. ; Arguments [Type]:
  98. ;   Obj = Object [VLA-OBJECT]
  99. ;   Obj = Object [ENAME]
  100. ; Возвращает [Type]:
  101. ;   Список имен групп [list]
  102. ;
  103. (defun GetObjGroupNames (Obj / Cur_ID NmeLst)
  104. (or *kpblc-activedoc*
  105.   (setq *kpblc-activedoc* (vla-get-activedocument (vlax-get-acad-object)))
  106. )
  107. (if (= (type Obj) 'ENAME)(setq Obj (vlax-ename->vla-object Obj)))
  108. (setq Cur_ID (vla-get-ObjectID Obj))
  109. (vlax-for Grp (vla-get-Groups *kpblc-activedoc*)
  110. (vlax-for Ent Grp
  111.   (if (equal (vla-get-ObjectID Ent) Cur_ID)
  112.    (setq NmeLst (cons (vla-get-Name Grp) NmeLst))
  113.   )
  114.   (vlax-release-object Ent)
  115. )
  116. (vlax-release-object Grp)
  117. )
  118. (reverse NmeLst)
  119. )
  120. ;;;Удаляет все пустые группы (именованные и неименованные)
  121. ;;;Объеткты, входящие в группы удаленны, а описание групп осталось
  122. ;;;http://dwg.ru/forum/viewtopic.php?t=4762
  123. (defun PurgeAllEmptyGroups  ()(PurgeEmptyGroups t))
  124. ;;;Удаляет все пустые группы (именованные)
  125. (defun PurgeAllNamedEmptyGroups  ()(PurgeEmptyGroups 0))
  126. ;;;Удаляет все пустые группы (неименованные)
  127. (defun PurgeAllUnNamedEmptyGroups  ()(PurgeEmptyGroups 1))
  128. ;;;=======================================================
  129. ;;; Команды
  130. ;;;=======================================================
  131. ;;; Удаляет все группы Purge All Groups
  132. (defun C:PAG ()(PurgeAllGroups))
  133. ;;; Удаляет все пустые группы   Purge Empty Groups
  134. (defun C:PEG ()(PurgeAllEmptyGroups))
  135. ;;; Удаляет все неименованные группы  Purge Unnamed Groups
  136. (defun C:PUG ()(PurgeAllUnNamedGroups))
回复

使用道具 举报

26

主题

149

帖子

127

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
135
发表于 2022-7-6 10:17:36 | 显示全部楼层
 
谢谢。
 
但我并不期待使用purge命令,尽管Autocad中已经存在该命令。
 
我需要在通过group命令相互收集的实体上分解group。
 
谢谢
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
211
发表于 2022-7-6 10:18:28 | 显示全部楼层
图形中的所有“组”还是特定组?按名称还是通过选择?
回复

使用道具 举报

8

主题

159

帖子

153

银币

初来乍到

Rank: 1

铜币
40
发表于 2022-7-6 10:22:14 | 显示全部楼层
你试过我的或VVA代码吗?
此处的清除意味着分解所有组(不能使用autocad Purge命令清除组)。
克鲁格
回复

使用道具 举报

26

主题

149

帖子

127

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
135
发表于 2022-7-6 10:26:00 | 显示全部楼层
 
非常感谢VVA先生。
 
那真的很棒。
 
但是如何通过用户选择一个又一个呢?
 
感谢
回复

使用道具 举报

26

主题

149

帖子

127

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
135
发表于 2022-7-6 10:29:07 | 显示全部楼层
 
是的,如果我能一组一组地选出来就太好了。
 
谢谢
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-7 00:01 , Processed in 0.718722 second(s), 83 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表