找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1685|回复: 10

[研讨] 编组 Group

[复制链接]

已领礼包: 604个

财富等级: 财运亨通

发表于 2017-9-12 10:05:52 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
关于组,如下两个界面。在高版本2016下界面也没有了,不知道桌子公司是想推广组,还是想忽略它,16下操作确实简单多了。
08下使用,确实功能丰富,不过也是很麻烦的。比如想分解一个组,先要找到组名,然后再分解。我是希望再图选择组,就分解它,这样就省事了。
通过两次选择,可实现如下功能
;;1 清理空组
;;2 创建无名组
;;3 分解所有组
;;4 组增加成员
;;5 组删除成员
;;6 显示组名
;;7 显示组数量
;;8 实体所在组名
;;9 分解特定组名的组
;;10 合并组
这样直接操作对象,比08方便多了。
组.png

评分

参与人数 1D豆 +10 收起 理由
liunian0524 + 10 很给力!经验;技术要点;资料分享奖!

查看全部评分

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 604个

财富等级: 财运亨通

 楼主| 发表于 2017-9-12 10:07:16 | 显示全部楼层
  1. (vl-load-com)
  2. (DEFUN c:GGG(/ E EL N SS)  
  3.   (or *ACAD* (setq *ACAD* (vlax-get-acad-object)))
  4.   (or *DOC* (setq *DOC* (vla-get-ActiveDocument *ACAD*)))
  5.   ;;清理空组
  6.   (C:DelEmptyGroup)  
  7.   ;;显示当有组数量
  8.   (princ (strcat "\n 当前有 "  (itoa (c:GroupsCount))  " 个组" ))
  9.   ;;显示所有组名
  10.   (princ (C:AllGroups))
  11.   
  12.   (_StartUndo *DOC*)
  13.   (SETQ E (CAR (ENTSEL "\n 组[创建或增减成员/分解]<分解所有组>")))
  14.   (if e
  15.     (if        (_GROUPNAMES e);是组
  16.       (_GroupAddOrDel e)
  17.       ;;选择对象创建组
  18.       (if (setq ss (LM:ssget "\n 选择对象创建无名组" nil))
  19.         (progn
  20.           (ssadd e ss)
  21.           (IF (> (SSLENGTH SS) 1)
  22.             (PROGN
  23.               (repeat (setq n (sslength ss))
  24.                 (setq eL (cons (ssname ss (setq n (1- n))) eL))
  25.               )
  26.               (_CreateGroup (mapcar 'vlax-ename->vla-object eL))
  27.               (princ "\n 成功创建无名组")
  28.             )
  29.             (princ "\n 只有一个对象,不能创建组")
  30.           )
  31.         )
  32.         (princ "\n 没有选择对象,不能创建组")
  33.       )
  34.     )
  35.     ;;空选时, 分解有的组
  36.     (C:DelAllGroups)
  37.   )   
  38.   (_EndUndo *DOC*)
  39.   
  40.   (gc)
  41.   (princ "\n 组操作命令 GGG")
  42.   (princ)
  43. )
  44. (princ "\n 组操作命令 GGG")

  45. ;;1 带提示的ssget
  46. (defun LM:ssget (msg arg / sel )
  47.     (princ msg)
  48.     (setvar 'nomutt 1)
  49.     (setq sel (vl-catch-all-apply 'ssget arg))
  50.     (setvar 'nomutt 0)
  51.     (if (not (vl-catch-all-error-p sel)) sel)
  52. )
  53. ;;2 创建组
  54. (defun _CreateGroup (Objlst)
  55.   (or *ACAD* (setq *ACAD* (vlax-get-acad-object)))
  56.   (or *DOC* (setq *DOC* (vla-get-ActiveDocument *ACAD*)))
  57.   (vla-appenditems
  58.     (vla-add (vla-get-groups *DOC*) "*")
  59.     (vlax-make-variant
  60.       (vlax-safearray-fill
  61.         (vlax-make-safearray
  62.           vlax-vbobject
  63.           (cons 0 (1- (length objlst)))
  64.         )
  65.         objlst
  66.       )
  67.     )
  68.   )
  69. )
  70. ;;3 统计组定义个数
  71. (defun c:GroupsCount ()
  72.   (or *ACAD* (setq *ACAD* (vlax-get-acad-object)))
  73.   (or *DOC* (setq *DOC* (vla-get-ActiveDocument *ACAD*)))
  74.   (vla-get-count (vla-get-groups *DOC*))
  75. )
  76. ;;4 删除所有组定义
  77. (defun c:DelAllGroups ()
  78.   (or *ACAD* (setq *ACAD* (vlax-get-acad-object)))
  79.   (or *DOC* (setq *DOC* (vla-get-ActiveDocument *ACAD*)))
  80.   (vlax-for obj        (vla-get-groups *DOC*)
  81.     (vla-delete obj)
  82.   )
  83. )
  84. ;;5 删除空组
  85. (defun c:DelEmptyGroup        ()
  86.   (or *ACAD* (setq *ACAD* (vlax-get-acad-object)))
  87.   (or *DOC* (setq *DOC* (vla-get-ActiveDocument *ACAD*)))
  88.   (vlax-for obj        (vla-get-groups *DOC*)
  89.     (if        (< (vla-get-count obj) 2)
  90.       (vla-delete obj)
  91.     )
  92.   )
  93. )

  94. ;;7 求所有组名 -> ("*A1" "*A2" "2")
  95. (defun C:AllGroups (/ LST)
  96.   (setq lst (dictsearch (namedobjdict) "ACAD_GROUP"))
  97.   (mapcar 'cdr
  98.           (vl-remove-if '(lambda (x) (/= (car x) 3)) lst)
  99.   )
  100. )
  101. ;;8 实体所在组名 => ("*A4")
  102. ;;(_GROUPNAMES (car(entsel)))
  103. (defun _GROUPNAMES (ENAME / KEY DICT RESULT)
  104.   (setq        KEY  (cons 340 ENAME)
  105.         DICT (dictsearch (namedobjdict) "acad_group")
  106.   )
  107.   (while (setq DICT (member (assoc 3 DICT) DICT))
  108.     (if        (member KEY (entget (cdadr DICT)))
  109.       (setq RESULT (cons (cdar DICT) RESULT))
  110.     )
  111.     (setq DICT (cddr DICT))
  112.   )
  113.   (reverse RESULT)
  114. )
  115. ;;9 分解特定组名的组
  116. ;;(_DelOneGroup "*A4")
  117. (defun _DelOneGroup (N)
  118.   (or *ACAD* (setq *ACAD* (vlax-get-acad-object)))
  119.   (or *DOC* (setq *DOC* (vla-get-ActiveDocument *ACAD*)))
  120.   (vlax-for obj        (vla-get-groups *DOC*)
  121.     (if        (= (vla-get-name obj) N)
  122.       (vla-delete obj)
  123.     )
  124.   )
  125. )

评分

参与人数 2D豆 +10 收起 理由
fangmin723 + 5 很给力!经验;技术要点;资料分享奖!
Lispboy + 5 很给力!经验;技术要点;资料分享奖!

查看全部评分

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 1 反对 0

使用道具 举报

已领礼包: 496个

财富等级: 日进斗金

发表于 2017-9-12 13:00:40 | 显示全部楼层
本帖最后由 fangmin723 于 2017-9-12 13:01 编辑

非常感谢黄大师的分享,但是内部缺少几个自定义函数
_EndUndo *DOC*、_GroupAddOrDel、_StartUndo
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 3186个

财富等级: 富可敌国

发表于 2017-9-12 14:13:39 | 显示全部楼层
非常感谢,好好学习天天向上
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 812个

财富等级: 财运亨通

发表于 2017-9-12 17:46:05 | 显示全部楼层
本帖最后由 liunian0524 于 2017-9-15 17:54 编辑

感谢黄大师分享,组有什么用,是方便选择吗.实际作图中我一直没用过它今天看了下组功能,确实方便,比块方便修改,CAD2018如图 命令:classicgroup
QQ截图20170915175300.jpg

cad2018.jpg

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 6468个

财富等级: 富甲天下

发表于 2017-9-13 00:35:43 | 显示全部楼层
学习一下。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 3718个

财富等级: 富可敌国

发表于 2017-9-13 08:24:18 | 显示全部楼层
回复学习学习!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 149个

财富等级: 日进斗金

发表于 2017-10-13 08:54:47 | 显示全部楼层
黄大师, 没有GroupAddOrDel这个函数啊
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 23个

财富等级: 恭喜发财

发表于 2017-12-15 20:31:49 | 显示全部楼层
重申.那位能快速建组呀.就是GROUP
http://bbs.mjtd.com/forum.php?mo ... &fromuid=285366
(出处: 明经CAD社区)

fsxm大侠作品12楼
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2018-3-9 23:02:22 | 显示全部楼层
不错不错,赞一个。。。。。。。。。。。。。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-4-19 16:53 , Processed in 0.531972 second(s), 55 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表