明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 4307|回复: 20

[经验] [首创]向块中添加块属性并修改

    [复制链接]
发表于 2023-4-14 17:50:09 | 显示全部楼层 |阅读模式
本帖最后由 和尚777 于 2023-4-15 09:58 编辑

   向块中增加属性后再修改

             不会破坏原块属性,无属性的直接增加
        新发现一个函数acet-attsync,可代替command
  1. (defun C:tt (/ b blkref bname doc ent i list0 list1 num ss)  ;向块中添加属性
  2.   (setq doc(vla-get-ActiveDocument(vlax-get-acad-object)))
  3.   ;"和尚777"
  4.   (if(and (setq bName (cdr(assoc 2 (entget (car(entsel))))))
  5.        (setq b(vla-item (vla-get-Blocks doc) bName)))
  6.     (progn
  7.       (vla-AddAttribute b
  8.         50 4 "表示长度" (vlax-3D-point '(0 0 0)) "c" "777")
  9.       (acet-attsync bName);(command "attsync" "n" bname)
  10.       (if(setq ss(ssget "x"(list'(0 . "insert")(cons 2 bName))))
  11.         (progn
  12.           (setq i -1)
  13.           (while(setq ent(ssname ss (setq i(1+ i))))
  14.             (if (= (vla-Get-ObjectName (setq blkref (vlax-Ename->vla-Object ent))) "AcDbBlockReference")
  15.               (if (vla-Get-HasAttributes blkref)
  16.                 (progn (setq liST0 (vlax-safearray->list  (vlax-variant-value (vla-GetAttributes blkref))))
  17.                   (setq liST1 (mapcar 'vla-Get-TagString  liST0))
  18.                   (setq num (vl-position "c" list1))
  19.                   (vla-put-TextString (nth num liST0) (itoa i))
  20.                 )
  21.               )
  22.             )
  23.           )
  24.         )
  25.       )
  26.     )
  27.   )(princ)
  28. )



本帖子中包含更多资源

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

x

评分

参与人数 7明经币 +7 收起 理由
bssurvey + 1 赞一个!
d1742647821 + 1
baitang36 + 1 很给力!
freedom_ice + 1 优秀
菜鸟初来乍到 + 1
cghdy + 1
dtucad + 1 和尚666

查看全部评分

发表于 2023-4-19 09:47:39 | 显示全部楼层
attsync  是一个cad自带的命令
将块定义中的属性更改应用于所有块参照。

查找
使用该命令来更新包含属性的块的实例,曾经使用 BLOCK 或 BEDIT 命令重定义这些属性。ATTSYNC 不更改现有块中指定给属性的任何值。

注: ATTSYNC 删除所有使用 ATTEDIT 或 EATTEDIT 命令进行的格式更改或特性更改。也将删除所有与块关联的扩展数据,并可能影响动态块和第三方应用程序创建的块。


ACET-ATTSYNC  大概率  也是用command调用的
发表于 2024-8-7 21:14:41 | 显示全部楼层
liuhe 发表于 2023-4-19 09:47
attsync  是一个cad自带的命令
将块定义中的属性更改应用于所有块参照。

attsync命令,只能针对一个块,是否有什么命令,可以批量操作呢,刚好要批量对多个不同块,添加同一个定义属性,但是添加之后,需要每个块使用一次attsync,感觉比较麻烦
发表于 2023-4-17 16:51:26 | 显示全部楼层
本帖最后由 KO你 于 2023-4-18 01:25 编辑

测试了,提示显示
调用(*push-error-using-command*)前无法从 *error* 调用(command)。
建议将(command)调用转换为(command-s)。
增加不了,什么问题


添加的属性文字能按所需要指定位置添加吗,经测试有时不行,有时添加在右下角,还有添加的属性文字不可以带点拖动
发表于 2023-4-14 18:06:08 | 显示全部楼层
首赞
谢谢分享
很牛逼的功能
发表于 2023-4-14 21:33:25 | 显示全部楼层
感谢分享,支持源码,,,,
发表于 2023-4-14 21:54:44 | 显示全部楼层
谢谢大佬无私奉献
发表于 2023-4-15 08:09:25 | 显示全部楼层
牛逼  谢谢分享!!
发表于 2023-4-15 09:07:27 | 显示全部楼层
太强了,感谢楼主分享
发表于 2023-4-15 12:59:44 | 显示全部楼层
提示函数ACET-ATTSYNC未定义
发表于 2023-4-15 18:24:57 | 显示全部楼层
增加属性文字的位置 是怎么定的
发表于 2023-4-15 20:42:49 | 显示全部楼层
厉害力哈哈哈
发表于 2023-4-17 15:50:57 | 显示全部楼层
厉害。请问acet-attsync怎样加载出来呢?另外就是新加的属性位置怎样定义呢?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-25 09:49 , Processed in 0.197277 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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