明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 126|回复: 12

[提问] 请教 在当前窗口同时保存多个CAD图纸的方法

[复制链接]
发表于 昨天 19:22 | 显示全部楼层 |阅读模式
请教大家
想在图纸Drawing5中,如何在输入命令后可以同时保存Drawing1~5 这5个CAD图纸

本帖子中包含更多资源

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

x
回复

使用道具 举报

发表于 25 分钟前 | 显示全部楼层
本帖最后由 vitalgg 于 2024-11-22 09:26 编辑

  1. (defun c:save-and-close-all (/ docs)
  2.   (setq docs nil)
  3.   (vlax-for doc *DOCS*
  4.     (if (/= "" (vla-get-fullname doc))
  5.       (setq docs (cons (vla-get-fullname doc) docs))))
  6.   (vlax-for doc *DOCS*
  7.     (if
  8.       (and
  9.         (/= "" (vla-get-fullname doc))
  10.         (/= (vla-get-fullname *DOC*) (vla-get-fullname doc)))
  11.       (vla-close doc :vlax-true)))
  12.   (if (and (/= "" (vla-get-fullname *DOC*)))
  13.     (progn
  14.       (vla-save *DOC*)
  15.       (vla-sendcommand *DOC* "close ")))
  16.   (princ))


源自 @lisp会话管理 :
https://gitee.com/atlisp/package ... sion/at-session.lsp

https://mp.weixin.qq.com/s?__biz ... 49394&lang=zh_CN#rd



本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

发表于 昨天 20:36 | 显示全部楼层
kozmosovia 发表于 2024-11-21 20:33
lsp是跟随doc的,切换到别的doc,这个doc里面load的lsp功能在别的doc中就废了。所以不能支持切换后继续执行 ...

选择但是不确定,手工切换就好了,然后遍历docs发送命令,就会弹图形忙.
我第一次遇见这个bug的时候觉得:应该修一下
回复 支持 反对

使用道具 举报

发表于 昨天 19:43 | 显示全部楼层
https://gitee.com/inspirefunction/CadLabelBar/tree/dev
多文档功能都写那么多年了,
C#处理这样情况贼简单,跨文档功能的docs能够来回切换.
并且我已经写好了啊...没必要讲怎么做了...
Lisp就不知道怎么处理了,而且各种跨线程问题需要处理.
回复 支持 反对

使用道具 举报

发表于 昨天 20:01 | 显示全部楼层
lisp不需要跨线程,直接vlax-for docx就行,不过要确保每个doc都是空闲状态,否则不能保存
回复 支持 反对

使用道具 举报

发表于 昨天 20:12 | 显示全部楼层
本帖最后由 你有种再说一遍 于 2024-11-21 20:14 编辑
kozmosovia 发表于 2024-11-21 20:01
lisp不需要跨线程,直接vlax-for docx就行,不过要确保每个doc都是空闲状态,否则不能保存

for可以...但是要激活过去才可以send save cmd,
不妨写个demo给他?
回复 支持 反对

使用道具 举报

发表于 昨天 20:15 | 显示全部楼层
每个DWG的doc都有save或者saveas方法,不需要去激活执行cmd
回复 支持 反对

使用道具 举报

发表于 昨天 20:22 | 显示全部楼层
kozmosovia 发表于 2024-11-21 20:15
每个DWG的doc都有save或者saveas方法,不需要去激活执行cmd

不太行吧,我记得会给你来个图形忙.
回复 支持 反对

使用道具 举报

发表于 昨天 20:27 | 显示全部楼层
你有种再说一遍 发表于 2024-11-21 20:22
不太行吧,我记得会给你来个图形忙.

不会的。
  1. (vlax-for doc (vla-get-documents (vlax-get-acad-object))
  2.   (vla-save doc)
  3. )
复制代码
回复 支持 反对

使用道具 举报

发表于 昨天 20:30 | 显示全部楼层

你试试另一个doc用鼠标选择但是不确定,然后切换回来这边doc,接着发送你这个命令
回复 支持 反对

使用道具 举报

发表于 昨天 20:33 | 显示全部楼层
lsp是跟随doc的,切换到别的doc,这个doc里面load的lsp功能在别的doc中就废了。所以不能支持切换后继续执行,一切换就死掉了。
回复 支持 反对

使用道具 举报

发表于 昨天 20:34 | 显示全部楼层
现在这样的遍历相当于把其他DWG当成可见的ObjectDBX文件操作。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-22 09:44 , Processed in 0.184444 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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