乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 59|回复: 7

[编程交流] 查找和替换属性值

[复制链接]

3

主题

4

帖子

1

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-6 11:58:00 | 显示全部楼层 |阅读模式
hai all公司
 
我是一名大学生,也是一名兼职工人
 
请帮助我使用Auto cad lisp程序,该程序可以查找并替换autocad属性中的属性值
 
例如,如果不同属性的值为CAXXXXYYYY001、CAXXXXYYYY002、CAXXXXYYYY003等
然后
我想用字母“D”替换第二个字母“C”
因此,它成为
CDXXXXYYYY001、CDXXXXYY002、CDXXXXYYYY003等
 
已经有一个了。exe程序,但系统安全不允许我安装程序到我的系统,这是我急需一个lisp
 
请帮忙
 
提前感谢
 
梅林·梅纳奥
回复

使用道具 举报

1

主题

1069

帖子

1050

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
69
发表于 2022-7-6 12:12:51 | 显示全部楼层
 
这只适用于以“CA”开头的属性
对于其他情况,更改代码内的属性模式
  1. ;; cav.lsp
  2. ;; change attribute values by given pattern
  3. (defun C:CAV (/ *error* adoc atts cnt layer locked newvalue oldvalue)
  4. ;; error trapping function
  5. (defun *error* (msg)
  6. (if (and msg
  7.    (vl-position
  8.      msg
  9.      '("console break"
  10. "Function cancelled"
  11. "quit / exit abort"
  12. )
  13.      )
  14.    )
  15.     (princ (strcat "Error >>> " (princ msg)))
  16.     (princ msg)
  17.     )
  18. (vla-endundomark
  19.    (vla-get-activedocument
  20.      (vlax-get-acad-object))
  21.    )
  22.     )
  23. (setq adoc (vla-get-activedocument
  24.      (vlax-get-acad-object))
  25.        )
  26. (vla-startundomark adoc)
  27. (setq cnt 0)
  28. ;; loop through all layouts
  29. (vlax-for layout  (vla-get-layouts adoc)
  30.    (vlax-for obj  (vla-get-block layout)
  31.      (if (and (eq "AcDbBlockReference" (vla-get-objectname obj))
  32.     (eq :vlax-true (vla-get-hasattributes obj)))
  33. (progn
  34.   (setq layer (vla-item (vla-get-layers adoc) (vla-get-layer obj)))
  35.   (if (eq :vlax-true (vla-get-lock layer))
  36.     (progn
  37.       (setq locked (cons (vla-get-layer obj) locked))
  38.       (vla-put-lock layer :vlax-false))   ;<--unlock layer if locked
  39.     )
  40.   (setq atts (vlax-invoke obj 'GetAttributes))
  41.   (foreach att atts
  42.     (setq oldvalue (vla-get-textstring att)) ;<--get attribute value
  43.     (if (wcmatch oldvalue "CA*") ;<-- CA* is attribute pattern, change to suit
  44.       (progn
  45. (setq cnt (1+ cnt))    ;<--increment counter
  46. (setq newvalue (vl-string-subst "D" "A" oldvalue)) ;<--change patterns(letters) to suit
  47. (vla-put-textstring att newvalue) ;<--set new attribute value
  48. (vla-update att)
  49. (princ (strcat "\n\t\t\t\t\>> Attribute value "
  50.          (vl-princ-to-string oldvalue)
  51.          " changed on: "
  52.          (vl-princ-to-string newvalue)))
  53. )
  54.       )
  55.     )
  56.   (vla-update obj)
  57.   )
  58. )
  59.      )
  60.    )
  61. ;; turn all layers state back
  62. (if locked
  63. (foreach layer  locked
  64.    (vla-put-lock
  65.      (vla-item (vla-get-layers adoc) layer)
  66.      :vlax-true))
  67. )
  68. (setq locked nil)
  69. (alert (strcat "Done. Processed "
  70.        (itoa cnt)
  71.        " attributes on all layouts"))
  72. (*error* nil)
  73. (princ)
  74. )
  75. (prompt"\n\t\t\t\tType CAV to change attributes by pattern")
  76. (princ)
  77. (vl-load-com);_end of code
回复

使用道具 举报

41

主题

301

帖子

265

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
209
发表于 2022-7-6 12:22:59 | 显示全部楼层
李,你永远不会停止惊叹,完美!!!我绝对欠你一到四品脱。下次我在伦敦或周围的时候,我会让你知道!
回复

使用道具 举报

1

主题

1069

帖子

1050

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
69
发表于 2022-7-6 12:24:24 | 显示全部楼层
 
不客气,Jaylo-随时都可以,伙计
回复

使用道具 举报

3

主题

35

帖子

32

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-6 12:34:37 | 显示全部楼层
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 12:41:57 | 显示全部楼层
Give this a shot:
 
  1. (defun c:attupd (/ i ss ent att) (vl-load-com) (or *def_com* (setq *def_com* "NORTH")) ;; First-time Default (if (and (setq i -1 ss (ssget "_:L" '((0 . "INSERT") (66 . 1))))          (not (initget "NORTH SOUTH EAST WEST"))          (setq *def_com* (cond ((getkword (strcat "\nNorth/South/East/West?  : ")))                                (*def_com*))))                  (while (setq ent (ssname ss (setq i (1+ i))))     (foreach att (vlax-invoke (vlax-ename->vla-object ent) 'GetAttributes)       (and (eq "COMMENTS" (strcase (vla-get-TagString att)))            (vla-put-TextString att (strcat "LKG. " *def_com* (vla-get-TextString att)))))))  (princ))
回复

使用道具 举报

3

主题

35

帖子

32

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-6 12:55:35 | 显示全部楼层
Lee Mac you never cease to amaze, PERFECT!!!  I definitely owe you a pint or 4.  Next time im in or around London ill let ya know!
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 12:58:58 | 显示全部楼层
 
You're welcome Jaylo - anytime mate
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-5 10:26 , Processed in 0.369798 second(s), 68 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表