乐筑天下

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

[编程交流] Lisp自动运行命令

[复制链接]
rlx

21

主题

1505

帖子

1551

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
81
发表于 2022-7-5 16:01:25 | 显示全部楼层
 
也意识到了这一点,这就是为什么我做了所有三种可能性,长度、数字和字母:-)
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-5 16:05:53 | 显示全部楼层
这还不够吗?
  1. (wcmatch "My drawing12345678 YAY.dwg" "*########*")
回复

使用道具 举报

66

主题

1552

帖子

1514

银币

后起之秀

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

铜币
325
发表于 2022-7-5 16:07:24 | 显示全部楼层
 
OP没有提到数字是否连续。

  1. (wcmatch "My drawing12345678 YAY1234567890.dwg" "*########*")

 
也许OP必须提供dwg文件的样例名称。
回复

使用道具 举报

19

主题

85

帖子

76

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
86
发表于 2022-7-5 16:11:46 | 显示全部楼层
嘿Tharwat
 
你是对的,这里有数字和字母的组合,所以我只使用数字。
因此文件名将类似于1234567。图纸7896541。图纸9632587。图纸
 
@rlx,非常感谢你的代码,但是你的代码只显示文件名,你能告诉我如何使用你的代码自动运行清除命令吗。
 
 
再次感谢
回复

使用道具 举报

rlx

21

主题

1505

帖子

1551

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
81
发表于 2022-7-5 16:15:34 | 显示全部楼层
如果您的文件名正好是7个数字,则不必比以下困难:
 
  1. (if (wcmacth (vl-filename-base (getvar 'dwgname)) "#######")(vla-PurgeAll (vla-get-ActiveDocument (vlax-get-acad-object))))

 
(ps直接打出来,很抱歉我打错了…)
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-5 16:18:25 | 显示全部楼层
你好
 
将以下内容添加到您的acaddoc中。lsp文件。
 
  1. (defun PurgeMe (/ FileName)
  2. (and (setq FileName (vl-filename-base (getvar 'DWGNAME)))
  3.       (vl-every '(lambda (u) (< 47 u 58)) (vl-string->list FileName))
  4.       (vla-purgeall (vla-get-activedocument (vlax-get-acad-object)))
  5.       )
  6. (princ)
  7. )
  8. ;; Auto-run on start up of drawing names that their names are consist of digits only.
  9. (PurgeMe)
回复

使用道具 举报

19

主题

85

帖子

76

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
86
发表于 2022-7-5 16:21:26 | 显示全部楼层
嘿Tharwat
谢谢你的代码,这是可行的,但即使文件名有数字(它的工作文件名为1,2,3,4,5,6,7,8,9…等数字),它也总是可行的
但我需要它应该运行只有7位数字的文件名。
另外,请告诉我,如果我想使用另一个命令或Lisp命令而不是purge,那么我必须在这个Lisp中进行更改。
 
再次感谢。
回复

使用道具 举报

66

主题

1552

帖子

1514

银币

后起之秀

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

铜币
325
发表于 2022-7-5 16:23:13 | 显示全部楼层
(wcmatch(strcase…)“#########.DWG”)
回复

使用道具 举报

rlx

21

主题

1505

帖子

1551

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

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

 
gr.Rlx
回复

使用道具 举报

19

主题

85

帖子

76

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
86
发表于 2022-7-5 16:28:59 | 显示全部楼层
嘿,Rlx
我已经用Tharwat提供的代码替换了你的代码,但它不起作用。你能看看我做错了什么吗。。
  1. (defun PurgeMe (/ FileName)
  2. (if (= (strlen (ripcar (vl-filename-base (getvar 'dwgname)))) 7)
  3. (progn ... purge...surge...merge whatever... ))
  4.       )
  5. (princ)
  6. )
  7. ;; Auto-run on start up of drawing names that their names are consist of digits only.
  8. (PurgeMe)

 
谢谢
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-13 23:49 , Processed in 0.959489 second(s), 70 queries .

© 2020-2025 乐筑天下

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