明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1001|回复: 5

炒冷饭,如何获取普通块内实体的图层信息。

[复制链接]
发表于 2023-2-5 21:39:55 | 显示全部楼层 |阅读模式
很多时候需要根据图层选取对象,有没有办法不炸块的情况下,获取选择集中的块是否包含所选择的图层,如图元般的选择这些块?最好是不炸块的前提下。看了很多前辈的帖子,也是没摸索到;不知道前辈大佬们是怎么处理的呢。。。
还有不炸块的前提下,很多前辈的获取块内的对象基本使用entsel获得块内图元,有没有办法ssget 传参传参获得块内图元信息?一直有点困惑。。。



发表于 2023-2-5 22:33:20 | 显示全部楼层
entnext
  


返回图形中的下一个对象(图元)名

(entnext [ename])
参数

ename

现有图元的名称。

返回值

如果不带参数调用 entnext 函数,它返回数据库中第一个未被删除的图元名。如果带参数 ename 调用该函数,它返回数据库中 ename 图元后的下一个未被删除的图元名。如果数据库中不存在下一个图元,它返回 nil。entnext 函数既可以返回主图元,又可以返回子图元。

示例

(setq e1 (entnext))     ; 设置 e1 位图形中一个图元的名称,空白图返回nil
(setq e2 (entnext e1)) ; 设置 e2 为 e1 后的图元的名称
注意

ssget 函数所形成的选择集中只包含主图元,不包含块属性或多段线顶点。可以通过调用 entnext 函数遍历复杂图元的子图元来访问复杂图元的内部结构。获取子图元名后,可以象处理其他图元一样处理子图元。获取子图元名后,还可以用以下方法找到它的主图元:调用  entnext 函数直至找到 SEQEND 图元,该图元的 -2 组中即包含了它的主图元名。

 楼主| 发表于 2023-2-6 09:33:18 | 显示全部楼层

非常感谢,,好好学习研究下,这个太好了。。。
发表于 2023-2-6 16:41:35 | 显示全部楼层
(setq blk_name (cdr (assoc 2 (entget (car(entsel))))))
(vlax-for item (setq blkobj (vlax-invoke-method (vla-get-Blocks (vla-get-ActiveDocument (vlax-get-acad-object))) 'Item blk_name))
        (if(= (vla-get-ObjectName item) "AcDbBlockReference")
                (del-ent-in-blk (vlax-vla-object->ename item) (vla-get-ObjectName item) code)
        )
        (print(vla-get-layer item))
)
发表于 2023-2-6 16:42:58 | 显示全部楼层
(setq e1(cdr(assoc -2(tblsearch "block" (cdr(assoc 2 (entget (car(entsel)))))))))
(while (setq e1(entnext e1))
        (print(cdr(assoc 8 (entget e1))))
)
 楼主| 发表于 2023-2-6 20:59:18 | 显示全部楼层
谢谢,,好好学习下!!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-25 09:38 , Processed in 0.174096 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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