MZ_li 发表于 2023-8-14 11:06:11

怎么批量获取块的属性文字内容?

怎么批量获取块的属性文字内容?

自贡黄明儒 发表于 2023-8-14 11:49:18

本帖最后由 自贡黄明儒 于 2023-8-14 11:51 编辑

nentsel
程序用(entnext e)

llsheng_73 发表于 2023-8-14 15:14:03

(defun getatts(blk);|获取块参照图元(对象)的属性参照,返回值((属性标记 属性值 属性对象)...)以便进一步修改指定标记的属性值|;
(if(equal(VL-CATCH-ALL-APPLY'vlax-get-property(list(setq blk(if(=(type blk)'ename)(vlax-ename->vla-object blk)blk))'HasAttributes)):vlax-true)
    (mapcar(function(lambda(x)(list(strcase(vlax-get-property'TagString))(vlax-get-property x'TextString)x)))
           (vlax-safearray->list(vlax-variant-value(vlax-invoke-method blk'GetAttributes))))))
(defun putatts(enblk lst / a);|enblk属性块图元或对象,lst((标记 值)(标记 值)(标记 值)...)|;
(and(setq a(getatts enblk))
      (vl-some(function(lambda(x / b)(and(setq b(assoc(strcase(car x))a))(vlax-put-property(caddr b)'TextString(cadr x)))))lst)))

zhangcan0515 发表于 2023-8-14 11:50:24

标签:是属性块里的标签,要修的属性值标签要对应,不然无法修改。

MZ_li 发表于 2023-8-14 12:37:41

自贡黄明儒 发表于 2023-8-14 11:49
nentsel
程序用(entnext e)

感谢大佬。

hzyhzjjzh 发表于 2023-8-14 12:38:57

:lol感谢大佬

weimeng555 发表于 2024-5-5 00:42:09

zhangcan0515 发表于 2023-8-14 11:50
标签:是属性块里的标签,要修的属性值标签要对应,不然无法修改。

你好,没看懂怎么使用,标签:说是跟属性块里的一致才能使用,是这个意思吧,也就是定义属性和标签一致才能使用,但是标签无法输入中文,只能是英文输入,就算切到中文输入法也不行。。。还是输入的英文,能否说明下操作步骤吗

zhangcan0515 发表于 2024-5-5 09:32:05

weimeng555 发表于 2024-5-5 00:42
你好,没看懂怎么使用,标签:说是跟属性块里的一致才能使用,是这个意思吧,也就是定义属性和标签一致才 ...

可以啊,标签可以中文,可以英文,可以数字。

阿猪蛋 发表于 2024-5-6 11:00:30

感谢大佬。
页: [1]
查看完整版本: 怎么批量获取块的属性文字内容?