明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3967|回复: 21

Lisp关闭文件所有文件并退出CAD

[复制链接]
发表于 2020-9-23 01:24:14 | 显示全部楼层 |阅读模式
  1. ;□□□□□□□□□□□□□□□□□□□□□□
  2. ;关闭文件代码开始
  3. ;□□□□□□□□□□□□□□□□□□□□□□

  4. (defun C:yd-quit-alldoc-save(/ AcadApp docs cdoc);保存所有文档退出
  5.   
  6.   (setq AcadApp (vlax-get-acad-object))
  7.   (setq docs (vla-get-documents AcadApp))
  8.   (setq cdoc (vla-get-ActiveDocument AcadApp))
  9.   ;缩放视口(比例为1)使文件处于未保存状态,如果图层未改动VLA-CLOSE的第二第三个参数会被忽略。
  10.   (vla-zoomscaled AcadApp 1.0 acZoomScaledRelative)
  11.   (vlax-for doc docs
  12.     (if (not (equal cdoc doc))
  13.       (if (= (Vlax-Get doc 'fullname) "")
  14.         (vla-Close doc :vlax-false )
  15.         (vla-close doc :vlax-true)
  16.       )
  17.     )
  18.   )
  19.   ;由于不能关闭当前活动文档,此处用Command关闭
  20.   (if (= (Vlax-Get cdoc 'fullname) "")
  21.     (command "quit" "y");y代表不保存
  22.     (command "quit" "n");n代表保存
  23.   )
  24.   (prin1)
  25. )


  26. (defun C:yd-close-alldoc-save(/ AcadApp docs cdoc);保存关闭所有文档
  27.   (setq AcadApp (vlax-get-acad-object))
  28.   (setq docs (vla-get-documents AcadApp))
  29.   (setq cdoc (vla-get-ActiveDocument AcadApp))
  30.   (vla-zoomscaled AcadApp 1.0 acZoomScaledRelative)
  31.   (vlax-for doc docs
  32.     (if (not (equal cdoc doc))
  33.       (if (= (vla-get-FullName doc) "")
  34.         (progn (vla-Close doc :vlax-false) (alert (vla-get-FullName doc)))
  35.         (vla-close doc)
  36.       )
  37.     )
  38.   )
  39.   ;由于不能关闭当前活动文档,此处用Command关闭
  40.   (if (= (Vlax-Get cdoc 'fullname) "")
  41.     (command "close" "y");y代表不保存
  42.     (command "close" "n");n代表保存
  43.   )
  44.   (prin1)
  45. )

  46. (defun C:yd-close-otherdoc-save(/ AcadApp docs cdoc);保存关闭其他文档
  47.   (setq AcadApp (vlax-get-acad-object))
  48.   (setq docs (vla-get-documents AcadApp))
  49.   (setq cdoc (vla-get-ActiveDocument AcadApp))
  50.   (vla-zoomscaled AcadApp 1.0 acZoomScaledRelative)
  51.   (vlax-for doc docs
  52.     (print (vla-get-FullName doc))
  53.     (if (not (equal cdoc doc))
  54.       (if (= (Vlax-Get doc 'fullname) "")
  55.         (vla-Close doc :vlax-false )
  56.         (vla-close doc :vlax-true)
  57.       )
  58.     )
  59.   )
  60.   (princ "关闭其他文档成功!")
  61.   (prin1)
  62. )

  63. (defun C:yd-quit-alldoc-withoutsave(/ AcadApp docs cdoc);不保存所有文档退出
  64.   (setq AcadApp (vlax-get-acad-object))
  65.   (setq docs (vla-get-documents AcadApp))
  66.   (setq cdoc (vla-get-ActiveDocument AcadApp))
  67.   (vlax-for doc docs
  68.     (if (not (equal cdoc doc))
  69.       (vla-close doc :vlax-false)
  70.     )
  71.   )
  72.   ;由于不能关闭当前活动文档,此处用Command关闭
  73.   (command "quit" "y");y代表不保存
  74.   (prin1)
  75. )

  76. (defun C:yd-close-alldoc-withoutsave(/ AcadApp docs cdoc);不保存关闭所有文档
  77.   (setq AcadApp (vlax-get-acad-object))
  78.   (setq docs (vla-get-documents AcadApp))
  79.   (setq cdoc (vla-get-ActiveDocument AcadApp))
  80.   (vlax-for doc docs
  81.     (if (not (equal cdoc doc))
  82.       (vla-close doc :vlax-false)
  83.     )
  84.   )
  85.   ;由于不能关闭当前活动文档,此处用Command关闭
  86.   (command "close" "y");y代表不保存
  87.   (prin1)
  88. )
  89. (defun C:yd-close-otherdoc-withoutsave(/ AcadApp docs cdoc);不保存关闭其他文档
  90.   (setq AcadApp (vlax-get-acad-object))
  91.   (setq docs (vla-get-documents AcadApp))
  92.   (setq cdoc (vla-get-ActiveDocument AcadApp))
  93.   (vlax-for doc docs
  94.     (if (not (equal cdoc doc))
  95.       (vla-close doc :vlax-false)
  96.     )
  97.   )
  98.   (princ "关闭其他文档成功!")
  99.   (prin1)
  100. )


  101. (defun C:gb( / mod)
  102.   (initget "1 2 3 4 5 6")
  103.   (setq mod (getkword "\n请选择关闭选项[保存所有文档退出(1) /保存关闭所有文档(2) /保存关闭其他文档(3) /不保存所有文档退出(4) /不保存关闭所有文档(5) /不保存关闭其他文档(6)]:"))
  104.   (cond
  105.     ((= mod "1") (C:yd-quit-alldoc-save))
  106.     ((= mod "2") (C:yd-close-alldoc-save))
  107.     ((= mod "3") (C:yd-close-otherdoc-save))
  108.     ((= mod "4") (C:yd-quit-alldoc-withoutsave))
  109.     ((= mod "5") (C:yd-close-alldoc-withoutsave))
  110.     ((= mod "6") (C:yd-close-otherdoc-withoutsave))
  111.   )
  112.   (princ)
  113. )
  114. ;■■■■■■■■■■■■■■■■■■■■■■
  115. ;关闭文件代码结束
  116. ;■■■■■■■■■■■■■■■■■■■■■■


评分

参与人数 1明经币 +1 收起 理由
叮咚 + 1

查看全部评分

发表于 2020-9-23 22:17:17 | 显示全部楼层
谢谢分享                        
发表于 2022-5-28 06:53:30 | 显示全部楼层
遇到打开的有只读文件不会自动关闭并退出,希望优化一下遇到只读文件直接关闭
发表于 2020-9-30 12:27:49 | 显示全部楼层
我cad2021用的倒是挺好的 但是用cad2020的话会出现乱码 4操作不了
发表于 2020-9-23 08:06:17 | 显示全部楼层
谢谢大神的分享,学习一波,优秀优秀,,一大早上就看到了分享,谢谢啦
发表于 2020-9-23 22:35:43 | 显示全部楼层
谢谢分享   
发表于 2020-9-25 11:19:39 | 显示全部楼层
经测试,很好用,收藏了,谢谢分享
发表于 2020-9-28 09:06:38 | 显示全部楼层
不错,蛮好用的
发表于 2020-11-4 19:50:50 | 显示全部楼层
经测试,很好用,收藏了,谢谢分享
发表于 2020-12-3 22:43:30 | 显示全部楼层
error: bad function: 1
请问怎么回事?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-25 04:39 , Processed in 0.181820 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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