乐筑天下

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

[编程交流] LISP初学者-清除Blo

[复制链接]

1

主题

7

帖子

6

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 22:21:39 | 显示全部楼层 |阅读模式
你好我希望你们能帮我解决Lisp程序的问题。我是新手,所以请原谅我I 听起来太基本了。
 
突然出现了一个问题,以前它还在工作。现在,当我打开dwg时,它会在acad文件的这一部分暂停。这就是我如何把它缩小到这个特殊的Lisp程序。
 
我可以看到我的地图,但它们被搁置了。大约1分钟后,它说有一个“致命错误-内存不足”。
 
你们知道该怎么办吗?
 
如果我去掉这一行上的“N”部分(命令“purge”“block”“*”“N”),它似乎可以工作,但我必须单击命令行中的几个选项才能在地图上执行任何操作。
 
(定义:PURGEBLOCK()
(如果(和(/=(getvar“dwgname”)“未命名”)(/=(substr(getvar“dwgname”)1 7)“图纸”))
(程序
(setq wts(getvar“writestat”))
(如果(/=wts 0)
(程序
(命令“purge”“block”“*”“N”)
(setq chg(getvar“dbmod”))
(如果(/=chg 0)
(程序
(setvar“cmdecho”0)
(princ“\n保存清除的图形”)
(setvar“专家”3)
(命令“保存”)
(setvar“expert”0)
;                (snd)
);结束程序
);如果结束
);结束程序
);如果结束
);结束程序
);如果结束
(setvar“cmdecho”0)
(普林斯)
)
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 22:33:40 | 显示全部楼层
试试这个-清除
回复

使用道具 举报

1

主题

7

帖子

6

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 22:36:45 | 显示全部楼层
你好对不起,我该在Lisp程序的地方试一试?
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 22:45:29 | 显示全部楼层
请尝试以下(未测试)代码:
  1. (defun purgeblock ( / val var )
  2.    (if (= 1 (getvar 'dwgtitled) (getvar 'writestat))
  3.        (progn
  4.            (setq var '(cmdecho expert)
  5.                  val  (mapcar 'getvar var)
  6.            )
  7.            (mapcar 'setvar var '(0 2))
  8.            (command "_.-purge" "_b" "*" "_n")
  9.            (if (< 0 (getvar 'dbmod))
  10.                (progn
  11.                    (command "_.save" "")
  12.                    (princ "\nPurged drawing saved.")
  13.                )
  14.                (princ "\nNothing to purge, drawing not saved.")
  15.            )
  16.            (mapcar 'setvar var val)
  17.        )
  18.        (princ "\nDrawing unsaved or read-only.")
  19.    )
  20.    (princ)
  21. )
回复

使用道具 举报

1

主题

7

帖子

6

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 22:47:29 | 显示全部楼层
非常感谢。我要试试这个!
 
 
 
 
回复

使用道具 举报

1

主题

7

帖子

6

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 22:53:38 | 显示全部楼层
这两种代码都有相同的错误。这似乎只发生在我的大地图上。这是截图,但我不确定这是否会有帮助。。。
 
 
 
 
它会在这一点上卡住,最终锁定。
 
 
这可能是另一个问题吗?
 
 
232143svvbrgsvuponrokk.png
回复

使用道具 举报

1

主题

7

帖子

6

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 22:59:23 | 显示全部楼层
我应该提到,如果我更改
 
 
(命令“-purge”“\u b”“*”“\u n”)到
 
 
(命令“_.-purge”“\u b”“*”“\u y”)
 
 
这似乎奏效了。
 
 
有什么理由我应该使用n或y吗?似乎只是验证要清除的名称?
 
 
回复

使用道具 举报

1

主题

7

帖子

6

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 23:07:47 | 显示全部楼层
对不起,这是我看到信息的链接。
 
 
http://help.autodesk.com/view/ACD/2015/ENU/?guid=GUID-C3876E92-3478-449C-8FAB-DA760B2EDD09
 
 
 
 
回复

使用道具 举报

4

主题

2143

帖子

2197

银币

限制会员

铜币
-24
发表于 2022-7-5 23:09:46 | 显示全部楼层
请阅读代码发布指南并编辑您的帖子,将代码包含在代码标签中。
回复

使用道具 举报

1

主题

7

帖子

6

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 23:21:12 | 显示全部楼层
让我再试一次
 
 
  1. (defun T:PURGEBLOCK ()
  2.    (if (and (/= (getvar "dwgname") "unnamed")(/= (substr (getvar "dwgname") 1 7) "Drawing"))
  3.      (progn
  4.       (setq wts (getvar "writestat"))
  5.        (if (/= wts 0)
  6.           (progn
  7.            (command "purge" "block" "*" "N")
  8.            (setq chg (getvar "dbmod"))
  9.              (if (/= chg 0)
  10.               (progn
  11.                (setvar "cmdecho" 0)
  12.                (princ "\n  Saving purged drawing \n")
  13.                (setvar "expert" 3)
  14.                (command "save" "")
  15.                (setvar "expert" 0)
  16. ;                (snd)
  17.               );end progn
  18.              );end if
  19.           );end progn
  20. );end if
  21.      );end progn
  22.    );end if
  23. (setvar "cmdecho" 0)
  24. (princ)
  25. )
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-8-18 11:45 , Processed in 0.359187 second(s), 86 queries .

© 2020-2025 乐筑天下

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