明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
123
返回列表 发新帖
楼主: cnks

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

  [复制链接]
发表于 2008-2-18 18:51 | 显示全部楼层
 (progn
      (setq ENT (vlax-safearray->list
    (vlax-variant-value (vla-getattributes BLKREF))
  )
改为(vlax-invoke  BLKREF 'getattributes) 试试看
 楼主| 发表于 2008-2-18 21:22 | 显示全部楼层
无痕发表于2008-2-18 18:51:00 (progn      (setq ENT (vlax-safearray->list    (vlax-variant-value (vla-getattributes BLKREF))  )改为(vlax-invoke&n

用(vlax-invoke  BLKREF 'getattributes):错误: Automation 错误。未提供说明。

用(vla-getattributes BLKREF):错误: 发生意外。

两个都不行

发表于 2008-2-19 09:51 | 显示全部楼层
无痕版主的在2002不能通过,,,,
我猜测vla和vlax方法是否都是通过句柄获得下一个对象??所以删除第一个属性对象出现vla方法不能用.
块实例来于块定义,而属性实例也来于属性定义,,,他们的连接用vla方法可能就是通过句柄顺序,当删除第一个属性实例对象,在数据库其实并不进行清除(因为要保存用来undo),只有彻底关闭并保存再打开文件才能真正清除我们删除的第一个属性实例对象的数据,
2002下测试一下不用vla-delete,而是用entdel..................奇迹发生了,什么事情也没有做,结论entdel删除不了块实例内属性???
参照块实例内部对象的处理方法,事实上属性对象实例理论上应该也是不可删除的.所以entdel对属性对象实例的操作会出现无操作结果.如果图中存在两个同一块的实例,你删除其中一个块实例的属性对象实例,只能造成属性对象实例的分离,应该说一定程度上造成了程序管理的混乱性.
如果一定要删除块实例的第一个属性对象实例,(vlax-invoke  BLKREF 'getattributes)加一个错误判断,出现错误就用entnext来获取后面的属性应该是比较可靠的方法~~~~~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-8 07:03 , Processed in 0.546464 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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