明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
12
返回列表 发新帖
楼主: userzhl

[求助]请教高手,我选中了一个属性块,如何获取属性块里文字的属性呢?

  [复制链接]
 楼主| 发表于 2009-5-13 22:32:00 | 显示全部楼层

获得的值是这样的呢?

("%%P0.000" "*U1" "%%P0.000")

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

命令: (setq en     (entget name))
((-1 . <图元名: 7ef5fdf8>) (0 . "ATTRIB") (330 . <图元名: 7ef5fde8>) (5 . "3F")
(100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "TXT【文字】") (100 .
"AcDbText") (10 218.072 150.377 0.0) (40 . 2.5) (1 . "%%P0.000") (50 . 0.0) (41
. 0.75) (51 . 0.0) (7 . "Standard") (71 . 0) (72 . 2) (11 226.197 149.544 0.0)
(210 0.0 0.0 1.0) (100 . "AcDbAttribute") (2 . "%%P0.000") (70 . 0) (73 . 1)
(74 . 1))

炸开后获取文字才看得到(3 . "海龙工具_1:1"):

(-1 . <图元名: 7ef5fe28>)
(0 . "ATTDEF")
(330 . <图元名: 7ef5fd08>)
(5 . "45")
(100 . "AcDbEntity")
(67 . 0)
(410 . "Model")
(8 . "TXT【文字】")
(100 . "AcDbText")
(10 218.072 150.377 0.0)
(40 . 2.5)
(1 . "%%P0.000")
(50 . 0.0)
(41 . 0.75)
(51 . 0.0)
(7 . "Standard")
(71 . 0)
(72 . 2)
(11 226.197 149.544 0.0)
(210 0.0 0.0 1.0)
(100 . "AcDbAttributeDefinition")
(3 . "海龙工具_1:1")
(2 . "%%P0.000")
(70 . 8)
(73 . 1)
(74 . 1)

是不是需要Vlisp才能获得(3 . "海龙工具_1:1")吗?

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

可以用这个语句:

(setq mBlocks (vla-get-Blocks
  (vla-get-ActiveDocument (vlax-get-acad-object))
       )
      en      (entget (car (entsel "\n请选择属性块:")))
      obj     (vla-item mBlocks (cdr (assoc 2 en)))
      str     (vla-get-promptstring (vla-item obj 2))
)

 楼主| 发表于 2009-5-14 18:08:00 | 显示全部楼层
谢谢tengte
发表于 2009-5-14 21:04:00 | 显示全部楼层

还可以这么写:

(progn
  (setq ename (car (entsel "\n请选择属性块:"))
 bname (cdr (assoc 2 (entget ename)))
 ename (tblobjname "BLOCK" bname)
  )
  (while (and ename (setq en (entget ename)))
    (if (= "ATTDEF" (cdr (assoc 0 en)))
      (progn (setq tag  (cdr (assoc 2 en))
     promptstring (cdr (assoc 3 en))
      )
      (foreach el (list "\n标记:" tag "\t提示:" promptstring)
        (princ el)
      )
      )
    )
    (setq ename (entnext ename))
  )
  (princ)
)

 楼主| 发表于 2009-5-15 09:09:00 | 显示全部楼层
可不可以把"提示"作为过滤条件对图块进行选择呢?
 楼主| 发表于 2009-5-16 17:09:00 | 显示全部楼层
哪位高手知道吗?
发表于 2009-5-16 18:34:00 | 显示全部楼层

先转换为vla对象

然后使用vla-get-attributes,此时返回一个variant,对此variant转换为list,之后就好办了

可以使用vla-get-textstring获取,vla-put-textstring赋值

 楼主| 发表于 2009-5-16 20:44:00 | 显示全部楼层

我已经(vl-load-com)

但还是出现:

错误: no function definition: VLA-GET-ATTRIBUTES

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

本版积分规则

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

GMT+8, 2025-6-17 10:32 , Processed in 0.188869 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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