明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
123
返回列表 发新帖
楼主: y01h

查询实体的编组名

  [复制链接]
发表于 2007-8-16 11:47:00 | 显示全部楼层

楼上这个只是获得组表.不能获得某一个图元所在组.

另:获得组表可以用组词典更方便.

发表于 2007-8-16 12:25:00 | 显示全部楼层
本帖最后由 作者 于 2007-8-16 12:26:32 编辑

  ★ fei-grp-getname:   (获取组名列表)                                              
       使用说明: (setq name (fei-grp-getname notifer))                              
       参    数: notifer = ename vla-object                                         
       返 回 值: 成功返回编组列表,失败返回nil  

(defun fei-grp-getname (notifer / *doc* *mspace* *pspace* a date n obj return)
  (and (cond ((equal (type notifer) 'ename)
       (setq obj notifer)
      )
      ((equal (type notifer) 'vla-object)
       (setq obj (vlax-vla-object->ename notifer))
      )
      (t
       (setq obj nil)
      )
       )
       (setq *doc* (vla-get-activedocument (vlax-get-acad-object)))
       (setq *mspace* (vla-get-modelspace *doc*))
       (setq *pspace* (vla-get-paperspace *doc*))
       (setq date (entget obj))
       (foreach x date
  (and (= (car x) 330)
       (setq a (vlax-ename->vla-object (cdr x)))
       (not (equal a *mspace*))
       (not (equal a *pspace*))
       (setq n (list (vla-get-name a)))
       (setq return (append return n))
  )
       )
  )
  return
)

发表于 2007-8-16 12:34:00 | 显示全部楼层
本帖最后由 作者 于 2007-8-16 12:47:27 编辑

还是组表.不行.

获得组表也不用这么麻烦.

如下:

(setq a '())
(vlax-for item (vla-get-groups
   (vla-get-activedocument (vlax-get-acad-object))
        )
  (setq a (append a (list (vla-get-name item))))
)

两句话就OK.

发表于 2007-8-16 12:51:00 | 显示全部楼层
本帖最后由 作者 于 2007-8-16 13:02:01 编辑

  1. ;; gpn2 = 求实体所属组名列表--------------------------------------lxx.2004.5 ok!!
  2. ;; (gpn2 (car(entsel))) -> ("X1" "X2" "TT")
  3. (defun gpn2 (gpe / el lst a g gpnlst)
  4.   (setq el (entget gpe))
  5.   (if (setq lst (member '(102 . "{ACAD_REACTORS") el))
  6.       (while (and(setq lst (cdr lst))(= 330 (car(setq a (car lst)))))
  7. (if (= "GROUP" (cdr (assoc 0 (entget (setq g (cdr a))))))
  8.      (setq gpnlst (cons (vla-get-Name (vlax-ename->vla-object g) ) gpnlst))
  9. )                                                         
  10.       )
  11.   )(reverse gpnlst)
  12. )
获得所有组名列表:
(setq lst (dictsearch(namedobjdict) "ACAD_GROUP")
        gps (mapcar 'cdr (vl-remove-if '(lambda(x)(/= 3 (car x))) lst)))
发表于 2007-8-16 12:56:00 | 显示全部楼层
本帖最后由 作者 于 2007-8-16 13:00:27 编辑

原来是这样.i see.

应在(setq el (entget gpe))前把gpnlst清空.

 楼主| 发表于 2007-8-16 14:46:00 | 显示全部楼层
多谢各位这么热心,上午上不了网,急死我了,答案都仔细看了,一会儿试验去
 楼主| 发表于 2007-8-16 15:35:00 | 显示全部楼层
各位还有个问题啊,怎么控制编组开关阿!
发表于 2007-8-16 18:55:00 | 显示全部楼层
i-Stone发表于2007-8-16 12:56:00原来是这样.i see.应在(setq el (entget gpe))前把gpnlst清空.

gpnlst  已经写入内部参数列表。程序一开始就自动清空。这是lisp的默认处理。所以不必先来一句(setq gpnlst nil)画蛇添足。当然,加也没有错。

编组开关参 http://bbs.mjtd.com/forum.php?mod=viewthread&tid=62251

发表于 2007-8-16 18:58:00 | 显示全部楼层
本帖最后由 作者 于 2007-8-16 19:17:32 编辑

ok.

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

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-6-20 07:02 , Processed in 0.189071 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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