明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2060|回复: 6

如何用LISP先清CAD垃圾再保存?

[复制链接]
发表于 2007-11-30 23:24 | 显示全部楼层 |阅读模式
本帖最后由 作者 于 2007-12-3 23:23:35 编辑

我想编这样一小段,键入命令后先调用PURGE清楚图形中的多余垃圾对象,再保存文件。但调用PURGE时似乎不能像在CAD中直接使用PURGE可以清理嵌套项目。比如说A层上仅有一个块B,而我又把B删除了,那么应该是清理完块B之后,连同A层也一起清理,但LISP调用能实现吗?请前辈们指点,谢谢!
  1. (command "purge" "A" "" "N")
发表于 2007-12-1 09:26 | 显示全部楼层

PURGE只能清除当前不用的项目。要想清除得更干净,多次调用PURGE。

发表于 2007-12-1 09:41 | 显示全部楼层

如果用程序,怎样才能判断是否已经清理得差不多了呢?

 楼主| 发表于 2007-12-3 23:27 | 显示全部楼层

Purge看来Repeat几次就可以了,现在是save比较麻烦。lisp调用的save都是命令行形式的,似乎不能像直接在CAD里键入SAVE一样弹出对话框来。我的意思是如果文件已经保存过,则直接保存,如果文件尚未保存在,则弹对对话框,不知道LISP容易实现否?

发表于 2007-12-4 16:23 | 显示全部楼层

(vl-cmdf "-purge" "a" "*" "N")

直接执行上面的代码就可以全部清理了。

发表于 2007-12-4 17:51 | 显示全部楼层

(defun c:fd()
(command "zoom" "e")
(command "-purge" "a" "" "n" )            ;清除垃圾
(command "qsave")                         ;保存

(setq nowdwg (getvar "dwgname"))          ;取得当前文件的名称
(setq path (findfile nowdwg))             ;寻找当前文件的路径
(setq strle (strlen path))                ;当前文件路径的长度
(setq bak1 (substr path 1 (- strle 4)))   ;去掉倒数第四以后的字符(即去掉扩展名)
(setq bak (strcat bak1 ".bak"))           ;把扩展名改为bak
(command "DEL" bak)                       ;删除bak文件
(command "del" "plot.log")                ;删除打印文件
(command "_close" "y" )                   ;关闭当前的文件,继续进行下一个文件的操作
)

这个程序是早就做的,清理垃圾,然后保存,再删除bak文件,然后退出cad的当前窗口

说明都写好了,自己可以调整一下

发表于 2007-12-5 13:02 | 显示全部楼层
yedajiang发表于2007-12-4 16:23:00(vl-cmdf \"-purge\" \"a\" \"*\" \"N\")直接执行上面的代码就可以全部清理了。

似乎也不完全是,我采用上面的代码用,再purge看,还有一个图层可以清理。

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

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-5-12 09:03 , Processed in 0.153974 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表