明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2728|回复: 10

读取块属性出错VxGetAtts 获取块中所有属性

  [复制链接]
发表于 2007-11-7 00:28:00 | 显示全部楼层 |阅读模式

我用本社区的vlisp函数中介绍的“VxGetAtts 获取块中所有属性”执行时,出错提示如下: “Error: 参数类型错误: VLA-OBJECT <图元名: 7ef6d6f8>”,我的源程序是:

(defun c:sx()
  (setq aa (car (entsel)));;;选择块(带有属性的)
  (setq a (vxgetatts aa))
)
(defun VxGetAtts (Obj)
  (mapcar
    '(lambda (Att)
       (cons (vla-get-TagString Att)
     (vla-get-TextString Att)
       )
     )
    (vlax-invoke Obj "GetAttributes")
  )
)

请老师解决!!!zqy@ntup.com

发表于 2009-11-20 15:24:00 | 显示全部楼层
版主,我想通过图档中的块名以及块属性的名称而不是选取块来提取块的属性,该用什么函数呀?
回复 支持 0 反对 1

使用道具 举报

发表于 2007-11-7 11:50:00 | 显示全部楼层

 (setq aa (car (entsel)))   

->

 (setq aa (vlax-ename->vla-object (car (entsel))))

发表于 2009-11-20 15:43:00 | 显示全部楼层

;;获得属性标签

(defun TEST (BLKNAME / LST)
  (vlax-for X
    (vla-item (vla-get-blocks
                (vla-get-activedocument (vlax-get-acad-object))
              )
              BlkName
    )
    (if (= (vla-get-ObjectName X) "AcDbAttributeDefinition")
      (setq LST (cons (vla-get-TagString X) LST));;把vla-get-TagString 改为vla-get-textString可得到标签值
    )
  )
  LST
)

发表于 2009-11-20 18:01:00 | 显示全部楼层
谢谢,我马上结合我自己的需要试试。
发表于 2009-11-20 22:25:00 | 显示全部楼层
動態圖塊可以讀的到嗎?
发表于 2009-11-22 11:51:00 | 显示全部楼层

版主,我又有问题了:我做了一个块,定义块名为“矩形”,增加属性标签:"TOP"  "BOTTOM" "CENTER" "LEFT" "RIGHT"

标签值分别为:上方 下方 中--心 左方 右方

如下图

程序依你的如下:(defun test (/ lst)
  (vlax-for X
     (vla-item (vla-get-blocks
   (vla-get-activedocument (vlax-get-acad-object))
        )
        "矩形"
     )
    (if (= (vla-get-ObjectName X) "AcDbAttributeDefinition")
      (setq LST (cons (list (vla-get-TagString X)
       (vla-get-textstring x)
        )
        LST
  )
      )
    )
  )
  LST

)

但是返回的结果是("TOP" "") ("BOTTOM" "") ("CENTER" "") ("LEFT" "") ("RIGHT" ""))

怎么都不能把标签值提出来,哪里不行,请指点呀。标签值总是nil.为什么呀?

谢谢了!!!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2009-11-22 13:08:00 | 显示全部楼层
你要分清块定义(BLOCK)和块实例(INSERT)的区别,对已经插入的块实例需要你1楼的代码
发表于 2009-11-23 10:09:00 | 显示全部楼层

哦,那有办法通过tbl类函数或别的办法,而不是通过entsel来提取图档中所有块实例(INSERT),并取得属性吗?我用tblobjname/tblsearch只能找到一个(且一直是同一个,是不是tbl也是只能找块定义,而不是块实例),如果有多个该怎么找到提取呢?谢谢版主的热心帮助!!!

发表于 2009-11-23 10:51:00 | 显示全部楼层

已找到相关帖子,谢谢版主的热心帮忙,我先试试,有问题再来请教。谢谢了。

http://www.mjtd.com/BBS/dispbbs.asp?boardid=3&replyid=117737&id=72487&page=1&skin=0&landlord=0&Star=1

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-10-1 19:37 , Processed in 0.212719 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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