请教 在当前窗口同时保存多个CAD图纸的方法
本帖最后由 开心无惧 于 2024-11-22 17:26 编辑请教大家
想在图纸Drawing5中,如何在输入命令后可以同时保存Drawing1~5 这5个CAD图纸
补充:
这里统一感谢你们的回复
本帖最后由 vitalgg 于 2024-11-22 09:52 编辑
(defun c:save-and-close-all (/ docs)
(setq docs nil)
(vlax-for doc *DOCS*
(if (/= "" (vla-get-fullname doc))
(setq docs (cons (vla-get-fullname doc) docs))))
(vlax-for doc *DOCS*
(if
(and
(/= "" (vla-get-fullname doc))
(/= (vla-get-fullname *DOC*) (vla-get-fullname doc)))
(vla-close doc :vlax-true)))
(if (and (/= "" (vla-get-fullname *DOC*)))
(progn
(vla-save *DOC*)
(vla-sendcommand *DOC* "close ")))
(princ))
源自 @lisp会话管理 :
https://gitee.com/atlisp/package ... sion/at-session.lsp
https://mp.weixin.qq.com/s?__biz ... 49394&lang=zh_CN#rd
https://www.bilibili.com/video/BV1opUdYLEx5/?vd_source=f238933ef363feb9bc3ceff41b386f5c
kozmosovia 发表于 2024-11-21 20:33
lsp是跟随doc的,切换到别的doc,这个doc里面load的lsp功能在别的doc中就废了。所以不能支持切换后继续执行 ...
选择但是不确定,手工切换就好了,然后遍历docs发送命令,就会弹图形忙.
我第一次遇见这个bug的时候觉得:应该修一下 https://gitee.com/inspirefunction/CadLabelBar/tree/dev
多文档功能都写那么多年了,
C#处理这样情况贼简单,跨文档功能的docs能够来回切换.
并且我已经写好了啊...没必要讲怎么做了...
Lisp就不知道怎么处理了,而且各种跨线程问题需要处理.
lisp不需要跨线程,直接vlax-for docx就行,不过要确保每个doc都是空闲状态,否则不能保存 本帖最后由 你有种再说一遍 于 2024-11-21 20:14 编辑
kozmosovia 发表于 2024-11-21 20:01
lisp不需要跨线程,直接vlax-for docx就行,不过要确保每个doc都是空闲状态,否则不能保存
for可以...但是要激活过去才可以send save cmd,
不妨写个demo给他?
每个DWG的doc都有save或者saveas方法,不需要去激活执行cmd kozmosovia 发表于 2024-11-21 20:15
每个DWG的doc都有save或者saveas方法,不需要去激活执行cmd
不太行吧,我记得会给你来个图形忙. 你有种再说一遍 发表于 2024-11-21 20:22
不太行吧,我记得会给你来个图形忙.
不会的。
(vlax-for doc (vla-get-documents (vlax-get-acad-object))
(vla-save doc)
) kozmosovia 发表于 2024-11-21 20:27
不会的。
你试试另一个doc用鼠标选择但是不确定,然后切换回来这边doc,接着发送你这个命令 lsp是跟随doc的,切换到别的doc,这个doc里面load的lsp功能在别的doc中就废了。所以不能支持切换后继续执行,一切换就死掉了。 现在这样的遍历相当于把其他DWG当成可见的ObjectDBX文件操作。
页:
[1]
2