明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 6580|回复: 22

[求助]属性块不能用vla-getattributes是为什么

  [复制链接]
发表于 2008-1-26 23:32 | 显示全部楼层 |阅读模式
本帖最后由 作者 于 2008-1-27 21:12:14 编辑

如果图块有两个属性,先vla-Delete掉一个,然后再用vla-getattributes就不起作用了,保存后关闭文件后重新打开又能用vla-getattributes ,大家测试下看看,下面是测试步骤:

1、如果一个块有两个或者多个属性,先vla-Delete一个属性

2、然后执行下面这段,下面这段执行到红色部分就出错:

(defun c:tt (/ BLKREF)
  (setq BLKREF (vlax-ename->vla-object (car (entsel))))
  (vla-getattributes BLKREF)
)

但是保存后关闭文件,再重新打开又能用vla-getattributes

"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2008-1-27 08:26 | 显示全部楼层

(defun c:tt (/ BLKREF)
  (setq BLKREF (vlax-ename->vla-object (car (entsel))))
  (vla-getattributes BLKREF)
  (vlax-method-applicable-p BLKREF "attributes");返回NIL
)

是否能得到图像对象的属性要判断图形是否有该属性!

上面语句返回NIL ,证明该对象没有attributes属性,当然无法返回值。


(Defun c:attblk(/ ename LOOP elist)
(setq ename (entnext (car (entsel))))
(setq LOOP T)
(While (and ename LOOP)
(setq elist (entget ename))
(if (= (cdr (assoc 0 elist)) "ATTRIB")
(progn
  (princ (cdr (assoc 2 elist)))
  (princ " ----> ")
  (princ (cdr (assoc 1 elist)))
(princ "\\n")
 )
(setq LOOP nil)
)
(setq ename (EntNext ename))
)
(princ)
)

以上程序可以帮你,具体详见http://bbs.mjtd.com/forum.php?mod=viewthread&tid=11957

 楼主| 发表于 2008-1-27 11:07 | 显示全部楼层
先谢谢楼上,但是我上面的图确实有属性,为啥(vla-getattributes BLKREF)不可用呢?
发表于 2008-1-27 11:21 | 显示全部楼层

正常调用应该是(vla-get-attributes BLKREF)

不是(vla-getattributes BLKREF)吧,

输入(vla-get-attributes BLKREF)显示不可用的,没有变成蓝色!

 楼主| 发表于 2008-1-27 11:38 | 显示全部楼层

vla-getattributes和(vla-get-attributes BLKREF)应该是一回事,获取属性都是不可用的,但我图里的确实有属性

发表于 2008-1-27 12:37 | 显示全部楼层

getattributes 是方法

没有 attributes 属性

 楼主| 发表于 2008-1-27 13:13 | 显示全部楼层
无痕发表于2008-1-27 12:37:00getattributes 是方法没有 attributes 属性

有属性,打开我图就知道了,只是我删除了一个

发表于 2008-1-27 15:05 | 显示全部楼层
本帖最后由 作者 于 2008-1-27 15:05:37 编辑

没有变蓝,是因为你没有加载vlisp支持函数,试试

(defun c:tt (/ BLKREF)
  (vl-load-com)
  (setq BLKREF (vlax-ename->vla-object (car (entsel))))
  (vla-getattributes BLKREF)
)

 楼主| 发表于 2008-1-27 15:35 | 显示全部楼层
本帖最后由 作者 于 2008-1-27 15:37:15 编辑

保存关闭文件后重新打开又能用vla-getattributes ,不知道怎么回事:

如果图块有两个属性,先vla-Delete掉一个,然后再用vla-getattributes就不起作用了,如果关掉文件vla-getattributes又能取出属性

这到底是怎么回事?大家测试下看看

 楼主| 发表于 2008-2-15 21:41 | 显示全部楼层
有没有人帮忙看看?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-4-26 22:10 , Processed in 1.199194 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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