YZ 发表于 2022-7-5 17:15:11

Lisp从中去掉前缀

当来自第三方软件时,我的块有一个前缀“SYMBOL_u”。
 
有没有人能给我一个开始,告诉我如何在任何具有该前缀的块实例上学习删除该前缀?
 
例如,这些块名
 
SYMBOL_PP
SYMBOL\u SMH
符号树
 
成为
 
PP页
SMH公司

Tharwat 发表于 2022-7-5 17:25:26

你好
 
试试这个程序;

(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)
         

steven-g 发表于 2022-7-5 17:36:46

或者你可以用艰难的方式。使用rename命令
旧名称“SYMBOL_*”
新名称“*”

BIGAL 发表于 2022-7-5 17:42:58

我第二个史蒂文g的想法-重命名将作为命令行运行没有拨号非常快。
 
Tharwat不错的代码,唯一的问题是“substr name 8”这对于硬代码SYMBOL\u2是可以的,可能版本2要求前缀,我有一个来自YZ的PM,所以知道YZ将需要其他块名,如15个字符的前缀。也许可以使用列表。如果我能抽出时间,我将把你的代码Tharwat合并到一个更具电子化的多功能清理中,以适合第三方输出,如YZ的其他问题。一旦完成,将张贴在这里为其他人。

Tharwat 发表于 2022-7-5 17:55:03

BIGAL,请不要以任何理由修改我的代码,只需编写自己的代码。

YZ 发表于 2022-7-5 18:02:19

 
 
嗨,塔瓦,这很有效!谢谢你抽出时间。我的同事和我在阅读LISP方面越来越好,所以我实际上可以跟着这一个。

YZ 发表于 2022-7-5 18:12:34

 
是的,我实际上在做一个老式的。
 
问题是,如果文件中有不同的符号,则宏无法处理它。
 
由于-rename命令不能使用通配符,因此只有对话框可以使用通配符。
 
尽管如此,上周我还是决定写一个宏,一次完成每个标准符号。但那是因为我试图写一个lisp,但自己无法解决逻辑问题。

Tharwat 发表于 2022-7-5 18:21:32

 
非常欢迎你。
 
很乐意帮忙。
页: [1]
查看完整版本: Lisp从中去掉前缀