明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3427|回复: 17

[已解答] 如果同时打开几个DWG文件,如何将除当前文件外的其余文件全部关闭?谢谢!

[复制链接]
发表于 2013-9-9 21:09 | 显示全部楼层 |阅读模式
如题……请求帮助……谢谢!
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2020-6-29 12:45 | 显示全部楼层
很好用 终于找到了
发表于 2020-6-29 22:33 | 显示全部楼层
实用的程序!!!
发表于 2013-9-9 22:03 | 显示全部楼层
一起等待高手出现!
发表于 2013-9-10 07:44 | 显示全部楼层
本帖最后由 Andyhon 于 2013-9-10 07:45 编辑

  1. ;|
  2. alanjt 14th Oct 2010, 08:41 pm
  3. I use this to close all but the active drawing...
  4. |;

  5. (defun c:CABA (/)
  6.   ;; Close all but active drawing (with option to save inactive)
  7.   ;; Express Tool subroutine "ACET-UI-Message" required
  8.   ;; Alan J. Thompson, 06.09.10
  9.   ((lambda (save)
  10.      (vlax-for x (vla-get-documents
  11.                    (cond (*Acad*)
  12.                          ((setq *Acad* (vlax-get-acad-object)))
  13.                    )
  14.                  )
  15.        (or (eq :vlax-true (vla-get-active x))
  16.            (vl-catch-all-apply (function vla-close) (list x save))
  17.        )
  18.      )
  19.    )
  20.     (if (eq 6
  21.             (acet-ui-message
  22.               "Save drawings before closing?"
  23.               "Close All But Active Drawing"
  24.               52
  25.             )
  26.         )
  27.       :vlax-true
  28.       :vlax-false
  29.     )
  30.   )
  31.   (princ)
  32. )
More info:

http://www.afralisp.net/archive/Tips/code42.htm
http://forums.autodesk.com/t5/Vi ... no-save/m-p/2662606
发表于 2013-9-10 14:55 | 显示全部楼层
  1. (defun c:tt()
  2.   (setq docs (vla-get-documents (vlax-get-acad-object)))
  3.   (setq cdoc (vla-get-ActiveDocument (vlax-get-acad-object)))
  4.   (vlax-for doc docs
  5.     (if (not (equal cdoc doc))
  6.       (progn
  7.         (vla-Close doc :vlax-true )
  8.         )
  9.       )
  10.     )
  11.   )

评分

参与人数 1明经币 +1 收起 理由
669423907 + 1 很给力!

查看全部评分

 楼主| 发表于 2013-9-10 18:59 | 显示全部楼层
本帖最后由 xhq1954425 于 2013-9-10 19:06 编辑

在金秋十月来临之际..仅以此表达谢意


本帖子中包含更多资源

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

x
 楼主| 发表于 2013-9-11 07:51 | 显示全部楼层
Gu_xl 发表于 2013-9-10 14:55

你的程序简单好使,我想通过选用(getvar 'DWGTITLED),仅关闭所有没存过盘的新建文件,应该怎样写?谢谢!
发表于 2013-9-11 09:42 | 显示全部楼层
Gu_xl 发表于 2013-9-10 14:55

(defun c:gdn()
(setq docs (vla-get-documents (vlax-get-acad-object)))
  (setq cdoc (vla-get-ActiveDocument (vlax-get-acad-object)))
  (vlax-for doc docs
    (if (not (equal cdoc doc))
      (progn
        (vla-Close doc :vlax-true )
        ))))
(command"quit" "y" "n")(princ))


终于不用一直按着 N 了!实在太感谢G版。可不可以加个功能,把电脑也关掉呢?晚上下班时就感觉爽多了........
发表于 2013-9-11 10:19 | 显示全部楼层
xhq1954425 发表于 2013-9-11 07:51
你的程序简单好使,我想通过选用(getvar 'DWGTITLED),仅关闭所有没存过盘的新建文件,应该怎样写?谢谢! ...

给你两个思路参考
思路一
,在G版的基础上,增加下面两行:
(vla-activate doc)
    (if (= (getvar 'DWGTITLED) 0) 记录文件名
;即把全部文档设为一次当前文档,如果当前文档是新文件则记录,然后关闭有记录的文件;

思路二:
getvar 'DWGTITLED 可与 (Vlax-Get doc 'FullName) 作同样的判断
getvar 'DWGTITLED 为0 时,(Vlax-Get doc 'FullName)  为空字符串
getvar 'DWGTITLED 为1 时,(Vlax-Get doc 'FullName)  为全路径名字符串;
因此,可以用下面的:
(defun c:tt()
  (setq docs (vla-get-documents (vlax-get-acad-object)))
  (setq cdoc (vla-get-ActiveDocument (vlax-get-acad-object)))
  (vlax-for doc docs
    (if (not (equal cdoc doc))
                (if (= (Vlax-Get doc 'FullName) "")
      (progn
        (vla-Close doc :vlax-false )
        )
      )
                        )
    )
  )

评分

参与人数 1明经币 +1 金钱 +50 收起 理由
xhq1954425 + 1 + 50 很给力!

查看全部评分

发表于 2013-9-11 10:37 | 显示全部楼层
669423907 发表于 2013-9-11 09:42
(defun c:gdn()
(setq docs (vla-get-documents (vlax-get-acad-object)))
  (setq cdoc (vla-get-Acti ...

在退出cad之前,增加以下的命令,即可关机了。
(command "shell" "shutdown -f -s -t 10") ;10秒后关机
 楼主| 发表于 2013-9-11 16:07 | 显示全部楼层

本帖子中包含更多资源

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

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

本版积分规则

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

GMT+8, 2024-5-6 16:16 , Processed in 0.359402 second(s), 34 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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