明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3308|回复: 13

[求助]请教如何用lisp方法获得没属性定义的块内部实体定义

  [复制链接]
发表于 2003-9-17 16:03:00 | 显示全部楼层 |阅读模式
请教如何用lisp方法获得块内部实体定义,这个块没有属性定义,我说的也不是用tblsearch获取块的原始定义,是想遍览组成块的实体。
发表于 2003-9-17 16:44:00 | 显示全部楼层
tblsearch 返回的那个(-2 <...)后面的就是第一个组成块的实体名,用entnext遍历
发表于 2003-9-17 17:13:00 | 显示全部楼层
(vlax-for object Block
  (setq Objects-in-Block-list (cons Object Objects-in-Block-list)
)

获得组成Block的对象表
 楼主| 发表于 2003-9-17 19:49:00 | 显示全部楼层
2楼师傅说的办法不行,可能因我没把事情讲清楚或者没理解你的意思,用tblsearch获得的总是块的最初定义,并不是当前屏幕上显示的这个块,屏幕上显示的这个已经经过移动、变比例、旋转甚至镜像,我想要直接获得当前屏幕上显示的这个块的定义。
 楼主| 发表于 2003-9-17 20:13:00 | 显示全部楼层
3楼师傅说的办法我以前没有用过,刚我试了一下,我把块的实体名替代"Block"位置,提示我参数类型错误:VLA对象集合:#<VLA-OBJECT IAcadBlockReference 010b6ae4>,原因是不是我给的不是对象集合,仅仅是转为VLAX实体的实体名?如果是,如何给这个集合,请教教我。
我的原题是在屏幕上用框选的办法选到块,想直接获得组成这个块的实体。
发表于 2003-9-17 20:23:00 | 显示全部楼层
l_peng发表于2003-9-17 19:49:002楼师傅说的办法不行,可能因我没把事情讲清楚或者没理解你的意思,用tblsearch获得的总是块的最初定义,并不是当前屏幕上显示的这个块,屏幕上显示的这个已经经过移动、变比例、旋转甚至镜像,


说说怎么个不行法?看如下代码:
(cdr (assoc -2 (tblsearch "block" (cdr (assoc 2 (entget (car (entsel))))))))
 楼主| 发表于 2003-9-17 21:00:00 | 显示全部楼层
多谢你又回复我!
你所写的代码就是我说的获得图块的最初定义的方法,你把这个图块在当前图中拷贝到8个地方,选哪个图块得到的结果都一样。我是想要组成具体选到的图块的实体名。
发表于 2003-9-18 08:40:00 | 显示全部楼层
你的话真的很难懂,既然是拷贝的,那这些块当然是一样的,这8个是INSERT对象,他们都引用自同一个块,怎么会不同呢?他们的不同也就是INSERT对象的位置和它们本身的句柄以及对象名,但因为引用的是同一个块,所以无论选哪个对象,返回块的组成实体当然是一样的。

注:返回的这些组成对象的坐标都是相对INSERT对象插入点的坐标
 楼主| 发表于 2003-9-18 09:30:00 | 显示全部楼层
多谢版主,又问我一次我的意思。
   我的问题是某条线穿过一个图块,求线和图块内的实体总共形成了多少个交叉点。
   可以采用版主说的办法:先获得图块内部定义,因为图块很可能已经被移动、比例、旋转等等,再根据被选中的INSERT实体的相应组码(插入点、比例、转角等)对组成图块的实体的关键点坐标乘相应的转置矩阵,将块的内部定义实体转置计算后才能与穿过图块的线求到交点。总之,直接用tblsearch获得的内部定义实体不能直接和穿过图块的线进行本问题的计算。
   我觉得这个方法太繁琐。
   我不知道是否有办法直接获得组成拷贝了8遍的图块中任意一个图块的组成实体,那样对我的问题就会方便得多。这里我还要再说一下:这8的图块中的实体与图块原始定义的实体是不同的,你看,用(nentsel)返回的那个实体名和用(tblnext)返回的不一样,而且你把8个图块中的任意图块炸开,形成的新实体序列都不是排在图形数据库最后的(说明图块每拷贝一遍,就会形成重新定义的块内部实体,只是表面上指向图块原始定义)。
   既然实体存在,我却不知道如何获得,请教了!
   不知道这回我是否说清楚了,若方便,请再给我回复。我会在这里等。
发表于 2003-9-18 09:44:00 | 显示全部楼层
对于你要解决的问题我再想想。

关于你说的“这8的图块中的实体与图块原始定义的实体是不同的”,我很难理解,你给我个图。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-10-2 16:27 , Processed in 0.191251 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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