乐筑天下

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

[编程交流] Remove $ from layer name

[复制链接]

26

主题

210

帖子

184

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
130
发表于 2022-7-5 23:17:25 | 显示全部楼层 |阅读模式
hi all,I need help, I need lisp which can remove $ from layer name ,block name ,style text ,etc. with explain the steps of syntax of lisp.
thanks for help.
mostafa
回复

使用道具 举报

49

主题

1246

帖子

1210

银币

后起之秀

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

铜币
254
发表于 2022-7-5 23:41:38 | 显示全部楼层
You can already accomplish this with the RENAME tool, utilizing wildcard matches to edit all names in these categories.
回复

使用道具 举报

26

主题

210

帖子

184

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
130
发表于 2022-7-5 23:48:20 | 显示全部楼层
Thanks tzframpton fro respond,can you to clarify more,there's too much layers, blocks,the RENAME tool renamed as single category.
回复

使用道具 举报

51

主题

481

帖子

457

银币

后起之秀

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

铜币
262
发表于 2022-7-6 00:13:36 | 显示全部楼层
Start withthis one
  1. (defun c:BF;/////////////////////////////////////////////////////////////////////////  ;  ;  BindFix15.lsp (AutoCAD 2000+)  ;  ;  Copyright 2003 | Michael Puckett | All Rights Reserved  ;;/////////////////////////////////////////////////////////////////////////  (  /     ;  local defuns     __GetTableEntries     __RenameTableEntry     __RenameTableEntryViaObjname     __RenameTableEntryViaActiveX     __StripBindingArtifacts     __GetUniqueTableEntryName     ;  local vars     doc     newname  );/////////////////////////////////////////////////////////////////////////  ;  ;  local defun  ;;/////////////////////////////////////////////////////////////////////////  (defun __GetTableEntries ( table / data result )     (while (setq data (tblnext table (null data)))        (setq result           (cons (cdr (assoc 2 data)) result)        )     )     result  );/////////////////////////////////////////////////////////////////////////  ;  ;  local defun  ;;/////////////////////////////////////////////////////////////////////////  (defun __RenameTableEntry ( doc table oldname newname / data )     ;  wrapper for __RenameTableEntryViaObjname     ;  and __RenameTableEntryViaActiveX functions     (setq table        (cond           ((eq (setq table (strcase table t)) "ltype") "linetype")           (t table)        )     )     (if (member table '("style" "dimstyle"))        ;  autodesk made textstyles and dimstyles read-only to        ;  the automation model w/regards to the symbol name, why?        (__RenameTableEntryViaObjname table oldname newname)        (__RenameTableEntryViaActiveX doc table oldname newname)     )  );/////////////////////////////////////////////////////////////////////////  ;  ;  local defun  ;;/////////////////////////////////////////////////////////////////////////  (defun __RenameTableEntryViaObjname ( table oldname newname / data )     ;  calling function responsible for     ;  ensuring appropriate data passed     (entmod        (subst           (cons 2 newname)           (assoc 2 (setq data (entget (tblobjname table oldname))))           data        )     )  );/////////////////////////////////////////////////////////////////////////  ;  ;  local defun  ;;/////////////////////////////////////////////////////////////////////////  (defun __RenameTableEntryViaActiveX ( doc table oldname newname / data )     ;  calling function responsible for     ;  ensuring appropriate data passed     (vla-put-name        (vla-item           (eval              (list                 (read (strcat "vla-get-" table "s"))                 doc              )           )           oldname        )        newname     )     ;  if you wanted this to be more robust     ;  you could use the following ...     ;     ;  (vl-catch-all-apply     ;     (function     ;        (lambda ()     ;           (vla-put-name ...)     ;        )     ;     )     ;  )     ;     ;  I chose to pass valid data instead  );/////////////////////////////////////////////////////////////////////////  ;  ;  local defun  ;;/////////////////////////////////////////////////////////////////////////  (defun __StripBindingArtifacts ( entry / i done )     (cond        (  (wcmatch entry "*`$#`$*")           (setq i 0 ceiling (strlen entry))           (while (and (not done) (< i ceiling))              (if (wcmatch (substr entry (setq i (1+ i)) 3) "`$#`$*")                 (setq                    entry (substr entry (+ i 3))                    done  t                 )              )           )        )     )     entry  );/////////////////////////////////////////////////////////////////////////  ;  ;  local defun  ;;/////////////////////////////////////////////////////////////////////////  (defun __GetUniqueTableEntryName ( table entry )     (cond        (  (tblsearch table entry)           (setq i 1)           (while              (tblsearch table                 (strcat entry "_" (itoa (setq i (1+ i))))              )           )           (strcat entry "_" (itoa i))        )        (  t entry  )     )  );/////////////////////////////////////////////////////////////////////////  ;  ;  "main"  ;;/////////////////////////////////////////////////////////////////////////  (cond     (  (< 14 (atoi (getvar "acadver")))        (vl-load-com)        (setq doc (vla-get-activedocument (vlax-get-acad-object)))        (foreach table '("block" "dimstyle" "layer" "ltype" "style")           (foreach entry (reverse (__GetTableEntries table))              (cond                 (  (wcmatch entry "*`$#`$*")                    (__RenameTableEntry                       doc                       table                       entry                       (setq newname                          (__GetUniqueTableEntryName table                             (__StripBindingArtifacts entry)                          )                       )                    )                    (princ                       (strcat "\n"                          (if (tblsearch table newname)                             (strcat                                "Renamed "                                table " "                                entry " => "                                newname "."                             )                             (strcat                                "Could not rename "                                table " "                                entry "."                             )                          )                       )                    )                 )              )           )        )     )     (  t (princ "\nSorry, penned for AutoCAD 2000+."))  )  (princ))
回复

使用道具 举报

26

主题

210

帖子

184

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
130
发表于 2022-7-6 00:30:16 | 显示全部楼层
Thanks Mr asos2000 I will try this,thanks for your response.
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-11 00:36 , Processed in 0.566952 second(s), 73 queries .

© 2020-2025 乐筑天下

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