rlx 发表于 2022-7-5 16:01:25

 
也意识到了这一点,这就是为什么我做了所有三种可能性,长度、数字和字母:-)

Tharwat 发表于 2022-7-5 16:05:53

这还不够吗?
(wcmatch "My drawing12345678 YAY.dwg" "*########*")

Grrr 发表于 2022-7-5 16:07:24

 
OP没有提到数字是否连续。

(wcmatch "My drawing12345678 YAY1234567890.dwg" "*########*")
 
也许OP必须提供dwg文件的样例名称。

acad1985 发表于 2022-7-5 16:11:46

嘿Tharwat
 
你是对的,这里有数字和字母的组合,所以我只使用数字。
因此文件名将类似于1234567。图纸7896541。图纸9632587。图纸
 
@rlx,非常感谢你的代码,但是你的代码只显示文件名,你能告诉我如何使用你的代码自动运行清除命令吗。
 
 
再次感谢

rlx 发表于 2022-7-5 16:15:34

如果您的文件名正好是7个数字,则不必比以下困难:
 
(if (wcmacth (vl-filename-base (getvar 'dwgname)) "#######")(vla-PurgeAll (vla-get-ActiveDocument (vlax-get-acad-object))))
 
(ps直接打出来,很抱歉我打错了…)

Tharwat 发表于 2022-7-5 16:18:25

你好
 
将以下内容添加到您的acaddoc中。lsp文件。
 

(defun PurgeMe (/ FileName)
(and (setq FileName (vl-filename-base (getvar 'DWGNAME)))
      (vl-every '(lambda (u) (< 47 u 58)) (vl-string->list FileName))
      (vla-purgeall (vla-get-activedocument (vlax-get-acad-object)))
      )
(princ)
)
;; Auto-run on start up of drawing names that their names are consist of digits only.
(PurgeMe)

acad1985 发表于 2022-7-5 16:21:26

嘿Tharwat
谢谢你的代码,这是可行的,但即使文件名有数字(它的工作文件名为1,2,3,4,5,6,7,8,9…等数字),它也总是可行的
但我需要它应该运行只有7位数字的文件名。
另外,请告诉我,如果我想使用另一个命令或Lisp命令而不是purge,那么我必须在这个Lisp中进行更改。
 
再次感谢。

Grrr 发表于 2022-7-5 16:23:13

(wcmatch(strcase…)“#########.DWG”)

rlx 发表于 2022-7-5 16:26:21

认为文件名结构有点混乱。它要么是7个数字(数字什么的),什么都没有,或者,它也可以有字母,但它包含7个数字,要么相邻,要么不相邻。无论如何,如果总文件名是一行7个数字,wcmatch选项就可以了。如果它是多文化的,唯一可以确定的方法是撕下人物并测量尸体。因此:
 
(if (= (strlen (ripcar (vl-filename-base (getvar 'dwgname)))) 7) (progn ... purge...surge...merge whatever... ))
 
gr.Rlx

acad1985 发表于 2022-7-5 16:28:59

嘿,Rlx
我已经用Tharwat提供的代码替换了你的代码,但它不起作用。你能看看我做错了什么吗。。
(defun PurgeMe (/ FileName)
(if (= (strlen (ripcar (vl-filename-base (getvar 'dwgname)))) 7)
(progn ... purge...surge...merge whatever... ))
      )
(princ)
)
;; Auto-run on start up of drawing names that their names are consist of digits only.
(PurgeMe)
 
谢谢
页: 1 [2]
查看完整版本: Lisp自动运行命令