明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1294|回复: 2

通过选组内实体求组定义,组包含的实体,组名

[复制链接]
发表于 2004-5-15 17:36 | 显示全部楼层 |阅读模式
测试分析:
  1. (setq a (entget(car(entsel))))
  2.    (setq a360 (entget(cdr(assoc 360 a))))
  3.    ;->得实体词典定义.
  4.    ;((-1 . <图元名: 7ef7cee8>) (0 . "DICTIONARY") (330 . <图元名: 7ef7cea8>) (5 . "A5") (100 . "AcDbDictionary")
  5.    ;(280 . 1) (281 . 1))
  6.    (setq b360 (entget(cdr(assoc 330 a360))))
  7.    ;=> 与a相同!
  8.    ;((-1 . <图元名: 7ef7cea8>) (0 . "LWPOLYLINE") (5 . "9D") (102 . "{ACAD_XDICTIONARY")
  9.    ;(360 . <图元名: 7ef7cee8>) (102 . "}") (102 . "{ACAD_REACTORS") (330 . <图元名: 7ef7cec0>) (102 . "}")
  10.    ;(330 . <图元名: 7ef7cc10>) (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "0") (100 . "AcDbPolyline")
  11.    ;(90 . 4) (70 . 1) (43 . 0.0) (38 . 0.0) (39 . 0.0) (10 33990.7 14713.5) (40 . 0.0) (41 . 0.0) (42 . 0.0)
  12.    ;(10 42287.1 14713.5) (40 . 0.0) (41 . 0.0) (42 . 0.0) (10 42287.1 7262.24) (40 . 0.0) (41 . 0.0) (42 . 0.0)
  13.    ;(10 33990.7 7262.24) (40 . 0.0) (41 . 0.0) (42 . 0.0) (210 0.0 0.0 1.0))
  14.    (setq a330 (entget(cdr(assoc 330 a))))
  15.    ;->得组定义,但无组名字.
  16.    ;((-1 . <图元名: 7ef7cec0>) (0 . "GROUP") (5 . "A0") (102 . "{ACAD_REACTORS") (330 . <图元名: 7ef7ccc0>) (102 . "}")
  17.    ;(330 . <图元名: 7ef7ccc0>) (100 . "AcDbGroup") (300 . "") (70 . 0) (71 . 1)
  18.    ;(340 . <图元名: 7ef7ceb0>)(340 . <图元名: 7ef7ceb8>) (340 . <图元名: 7ef7cea8>)) ;;<-组包含的实体.
  19.    (setq b330 (entget(cdr(assoc 330 a330))))
  20.    ;->找到(3 . "XX")为所要找的组名.
  21.    ;((-1 . <图元名: 7ef7ccc0>) (0 . "DICTIONARY") (5 . "18") (102 . "{ACAD_REACTORS") (330 . <图元名: 7ef7ccd0>)
  22.    ;(102 . "}") (330 . <图元名: 7ef7ccd0>) (100 . "AcDbDictionary") (280 . 0) (281 . 1) (3 . "*A1")
  23.    ;(350 . <图元名: 7ef7ced8>) (3 . "1") (350 . <图元名: 7ef7ce68>) (3 . "XX") (350 . <图元名: 7ef7cec0>))
  24.    (setq groupname (cdr(car(cdr(member (cons 350 (cdr(assoc -1 a330))) (reverse b330))))))
  25.    ;->"XX"
结论注:以下方法仅对一重组有效,如实体同属于多个组,则运行结果对应最下层(最先定义)的组)
  1. ;1.求组定义:
  2.     ;测试: (gpdef (car(entsel)))
  3.     (defun gpdef (gpe)
  4.         (entget(cdr(assoc 330 (entget gpe))))
  5.     )
  6.     ;2.求组内实体:
  7.     ;测试:返回-> (<图元名: 7ef7ceb0> <图元名: 7ef7ceb8> <图元名: 7ef7cea8>)
  8.     (mapcar 'cdr (vl-remove-if '(lambda(x)(/= 340 (car x))) (gpdef (car(entsel)))))
  9.     ;3.求组名:
  10.     ;测试:返回组名-> "xx"
  11.     (setq gpdefl (gpdef (car(entsel)))
  12.         gpdict (entget(cdr(assoc 330 gpdefl)))
  13.                 gpname (cdadr(member (cons 350 (cdr(assoc -1 gpdefl))) (reverse gpdict)))
  14.     )
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2005-10-25 10:47 | 显示全部楼层
如何分解匿名组,要求速度。
发表于 2005-10-25 16:14 | 显示全部楼层
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-9 07:48 , Processed in 4.592031 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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