明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3697|回复: 6

[讨论] 不用打开就能批量清理图形

[复制链接]
发表于 2010-2-2 22:20:00 | 显示全部楼层 |阅读模式

有人能告诉我不用打开就能批量清理图形的lisp吗?

用purge得一个个打开清理,上百个文件很累人啊

求大爷们替小民作主

-----sos-------

"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2010-2-3 09:03:00 | 显示全部楼层

一下程序是从本论坛下载的,忘记是哪位高手编的了,我借花献佛了。

;程序执行:
;在命令行中输入userpurge或userwblock,选择文件夹,就可以了;
;userpurge对目标文件夹下的每个文件执行purge后保存文件;
;userwblock将目标文件夹下的每个文件执行wblock,写入目标文件夹下的"处理后的"子文件夹文件中,文件名不变;
(vl-load-com)

(defun getFolder (str_title str_prompt /)
    (strcat
        (vl-string-right-trim
            "\\"
            (strcase
                (acet-ui-pickdir str_prompt (vl-string-right-trim "\\" (getvar "dwgprefix")) str_title)
            )
        )
        "\\"
    )
)

(defun makeDirectory (dir / )
    (vl-mkdir dir)
)

(defun userundo()
    (setq *error* errtmp)
    (setvar "cmdecho" old_cmdecho)
    (setvar "acadlspasdoc" old_acadlspasdoc)
    (princ)
)

(defun err (msg)
  (userundo)
)

(defun c:userpurge ( / app doc docs err errtmp file files newpath old_acadlspasdoc old_cmdecho path sset)
  (setq errtmp *error*)
  (setq *error* err)
    (setq old_cmdecho (getvar "cmdecho"))
    (setvar "cmdecho" 0)
    (setq old_acadlspasdoc (getvar "acadlspasdoc"))
    (setvar "acadlspasdoc" 0)
  (setq path (getFolder "请选择目录..." "请选择目录:"))
  (setq files (vl-directory-files path "*.dwg" 1))
  (if files
        (progn
                (setq scrfile (strcat path "batpurge.scr"))
                (setq fn (open scrfile "w"))
                (foreach file files
                    (setq str (strcat "open \" " path file "\" purge all * no qsave close"))
                    (write-line str fn)(princ)
                )
                (close fn)
        )
    (alert "所选目录无 .dwg 文件!请重新选择:")
  )
    (command "script" scrfile)
    (userundo)
  (setq *error* errtmp)
  (princ)
)

(defun c:userwblock ( / app doc docs err errtmp file files newpath old_acadlspasdoc old_cmdecho path sset)
  (setq errtmp *error*)
  (setq *error* err)
    (setq old_cmdecho (getvar "cmdecho"))
    (setvar "cmdecho" 0)
    (setq old_acadlspasdoc (getvar "acadlspasdoc"))
    (setvar "acadlspasdoc" 0)
  (setq path (getFolder "请选择目录..." "请选择目录:"))
  (setq files (vl-directory-files path "*.dwg" 1))
  (if files
        (progn
          (setq newpath (strcat path "处理后的\\"))
                (setq scrfile (strcat newpath "batwblock.scr"))
                (makeDirectory newpath)
                (setq fn (open scrfile "w"))
                (foreach file files
                    (setq str (strcat "open \" " path file "\" wblock " newpath file " * qsave close"))
                    (write-line str fn)(princ)
                )
                (close fn)
        )
    (alert "所选目录无 .dwg 文件!请重新选择:")
  )
    (command "script" scrfile)
    (userundo)
  (setq *error* errtmp)
  (princ)
)

发表于 2010-2-3 21:18:00 | 显示全部楼层

lisp写scr脚本,是非常经典的跨图档执行方法。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2010-2-3 21:45:00 | 显示全部楼层
script貌似作用有限, 还是不如lisp得心应手吧.
发表于 2010-10-1 10:47:00 | 显示全部楼层
2楼的方法还是一个个的打开,清理只有保存在关闭,没有理解1楼的意思:不打开图形而实现清理!!!
发表于 2012-2-13 09:54:01 | 显示全部楼层
zml84 发表于 2010-2-3 21:18
lisp写scr脚本,是非常经典的跨图档执行方法。

大侠,你上图的这个软件可以给我一份吗?
发表于 2012-2-13 14:39:54 | 显示全部楼层
这里边就有lisp写scr脚本批量清理垃圾的功能
http://bbs.mjtd.com/thread-92000-1-1.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-8-29 04:08 , Processed in 0.161661 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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