Lisp从中去掉前缀
当来自第三方软件时,我的块有一个前缀“SYMBOL_u”。有没有人能给我一个开始,告诉我如何在任何具有该前缀的块实例上学习删除该前缀?
例如,这些块名
SYMBOL_PP
SYMBOL\u SMH
符号树
成为
PP页
SMH公司
树 你好
试试这个程序;
(defun c:test ( / name new )
;; Tharwat - 06.Sep.2016 ;;
(vlax-for blk (vla-get-blocks (vla-get-activedocument (vlax-get-acad-object)))
(and (= :vlax-false (vla-get-isxref blk))
(= :vlax-false (vla-get-islayout blk))
(wcmatch (setq name (vla-get-name blk)) "SYMBOL_*")
(not (tblsearch "BLOCK" (setq new (substr name )))
(vla-put-name blk new))
)
(princ)
)(vl-load-com)
或者你可以用艰难的方式。使用rename命令
旧名称“SYMBOL_*”
新名称“*” 我第二个史蒂文g的想法-重命名将作为命令行运行没有拨号非常快。
Tharwat不错的代码,唯一的问题是“substr name 8”这对于硬代码SYMBOL\u2是可以的,可能版本2要求前缀,我有一个来自YZ的PM,所以知道YZ将需要其他块名,如15个字符的前缀。也许可以使用列表。如果我能抽出时间,我将把你的代码Tharwat合并到一个更具电子化的多功能清理中,以适合第三方输出,如YZ的其他问题。一旦完成,将张贴在这里为其他人。 BIGAL,请不要以任何理由修改我的代码,只需编写自己的代码。
嗨,塔瓦,这很有效!谢谢你抽出时间。我的同事和我在阅读LISP方面越来越好,所以我实际上可以跟着这一个。
是的,我实际上在做一个老式的。
问题是,如果文件中有不同的符号,则宏无法处理它。
由于-rename命令不能使用通配符,因此只有对话框可以使用通配符。
尽管如此,上周我还是决定写一个宏,一次完成每个标准符号。但那是因为我试图写一个lisp,但自己无法解决逻辑问题。
非常欢迎你。
很乐意帮忙。
页:
[1]