明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3055|回复: 6

[已解决]块内实体遍历

[复制链接]
发表于 2009-7-5 17:27:00 | 显示全部楼层 |阅读模式
本帖最后由 作者 于 2009-7-5 22:47:41 编辑

(setq a (car (entsel)));我用这段代码选择块获取块名

(entnext a);我想用这段代码来获取块内实体,但为什么总是返回nil?要么就获取图档内的其它实体,总之不是块内实体!!!

如果不是这样用,我要怎样获得块内实体的数据?

如果是一个球表块(由一个圆和文字组成的块),我如何才能获得它圆的数据?

我用的是Autolisp,或者Vlisp也可以,麻烦各位了

发表于 2009-7-5 19:32:00 | 显示全部楼层

;;vla方法
;;注意,所得数据是块定义中圆的数据,而不是块对象中圆的数据
(defun c:TT (/ a)
  (setq a (car (entsel)))
  (setq a (vlax-ename->vla-object a))
  (setq a (vla-get-name a))
  (vlax-for x
    (vla-item (vla-get-Blocks (vla-get-activedocument (vlax-get-acad-object))) a)
    (if (= (vla-get-objectname x) "AcDbCircle")
      (princ (entget (vlax-vla-object->ename x)))
    )
  )
)

 楼主| 发表于 2009-7-5 21:24:00 | 显示全部楼层

谢谢caoyin版主

你也说了,这个获取的是"Block"中的数据,

可是我想要"INSERT"中的

没有办法获得吗?

非得从"Block"中获取数据后再用插入点算座标、用块缩放比例来算尺寸等等?

没其它办法了吗?

发表于 2009-7-5 22:08:00 | 显示全部楼层

我个人认为没有更好的办法——期待高手

你可以 EXPLODE 块然后再 UNDO 回去啊

 楼主| 发表于 2009-7-5 22:47:00 | 显示全部楼层

如果EXPLODE块再UNDO回去的话

太慢了,太多块的时候我担心电脑会挂掉

麻烦就麻烦吧,用比例,旋转角来算好了

谢谢caoyin版主

发表于 2009-7-5 23:23:00 | 显示全部楼层

你可以用矩阵变换,建议你参考下面帖子,里面谈到的方法可能对你有帮助。

http://bbs.mjtd.com/forum.php?mod=viewthread&tid=73535&replyID=&skin=1

发表于 2009-7-6 08:46:00 | 显示全部楼层
矩阵的缺点是对不等比例块是没用的,如果是想亮显块中的子图元,我有一个比较好的思路。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-10-2 15:20 , Processed in 0.156716 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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