明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 858|回复: 7

[提问] 如何设置文档的优先级

[复制链接]
发表于 2022-11-11 09:18:15 | 显示全部楼层 |阅读模式
25明经币
本帖最后由 世人皆醉 于 2022-11-11 10:47 编辑

      假设我打开了主文档1,其他的都是次文档,我需要每次提取次文档的文件到主文档,用ctrl+table快捷键是可以快速切换文档,但是当文档太多的时候有点切不过来,想请教大神,
      能不能快速切换到主文档(第一个,也可以设定一个固定名字),或者有没有命令能够关闭除主文档之外的所有文档,望赐教,谢谢!





附件: 您需要 登录 才可以下载或查看,没有账号?注册
发表于 2022-11-11 09:18:16 | 显示全部楼层
本帖最后由 菜卷鱼 于 2022-11-11 18:10 编辑

  1. ;;;;关闭未活动文档
  2. (defun qclose (/ vacad vdocs vadoc ok)
  3.       (setq vacad (vlax-get-acad-object))
  4.       (setq vdocs (vla-get-Documents vacad))
  5.       (setq vadoc (vla-get-ActiveDocument vacad))
  6.       (vlax-for        x vdocs
  7.         (if (not (equal x vadoc))
  8.           (vla-close x)
  9.         )
  10.       )
  11.   (princ "**操作完成")
  12.   (prin1)
  13. )
回复

使用道具 举报

发表于 2022-11-11 10:00:36 | 显示全部楼层
设个命令
(defun c:tt nil
(startapp "explorer"  "主文档1")
(prin1)
)
这种简单的方式不行吗?
  
回复

使用道具 举报

 楼主| 发表于 2022-11-11 10:46:18 | 显示全部楼层
菜卷鱼 发表于 2022-11-11 10:00
设个命令
(defun c:tt nil
(startapp "explorer"  "主文档1")

我的意思是CAD里面的文档之前的转换,不是打开CAD文件啊
回复

使用道具 举报

发表于 2022-11-11 14:31:56 | 显示全部楼层
本帖最后由 菜卷鱼 于 2022-11-11 14:59 编辑
世人皆醉 发表于 2022-11-11 10:46
我的意思是CAD里面的文档之前的转换,不是打开CAD文件啊


用这个改一改就行了
文件标签与布局标签 循环切换

  1. ;;;设置主文档
  2. (defun c:q1 nil
  3.   (vl-bb-set 'maindoc (getvar "dwgname"))
  4. )
  5. ;;;返回主文档
  6. (defun c:q2 (/ dwgname)
  7.   (princ "\n切回主文档")
  8.   (setq dwgname (getvar "dwgname"))
  9.   (if (not (= (vl-bb-ref 'maindoc) dwgname))
  10.     (progn
  11.       (vl-bb-set 'currentdoc dwgname)
  12.       (activatedoc (vl-bb-ref 'maindoc))
  13.     )
  14.   )
  15.   (prin1)
  16. )
  17. ;;;两文档之间来回切换
  18. (defun c:q3 (/ s)
  19.   (setq s (vl-bb-ref 'currentdoc))
  20.   (setq dwgname (getvar "dwgname"))
  21.   (if (not (= s dwgname))
  22.     (progn
  23.       (vl-bb-set 'currentdoc dwgname)
  24.       (activatedoc s)
  25.     )
  26.   )
  27.   (prin1)
  28. )
  29. (defun activatedoc (doc / tablist)
  30.   (or *ACAD* (setq *ACAD* (vlax-get-acad-object)))
  31.   (or *DOC* (setq *DOC* (vla-get-ActiveDocument *ACAD*)))
  32.   (or *docs* (setq *docs* (vla-get-Documents *ACAD*)))
  33.   (or *MSPACE* (setq *MSPACE* (vla-get-ModelSpace *DOC*)))
  34.   (vl-bb-set 'currentdoc (getvar "dwgname"))
  35.   (vlax-for layout *docs*
  36.     (setq tablist (cons (list (vla-get-Name layout) layout) tablist))
  37.   )
  38.   (vl-some '(lambda (x)
  39.         (if (= (car x) doc)
  40.     (vla-activate (cadr x))
  41.         )
  42.       )
  43.      tablist
  44.   )
  45.   (prin1)
  46. )
回复

使用道具 举报

发表于 2022-11-11 17:03:49 | 显示全部楼层
暂时不能搞成通用的,本来想做成自动回到第一个文件的,暂时没研究出来
下面代码中的"1.dwg"就是你问题中的“固定名字”,把程序设置为自动加载,执行命令kk
不管在哪个文件,都可以自动回到"1.dwg",你自己试试吧

  1. (defun c:kk ()
  2.         (vlax-for a (vlax-get-property (vlax-get-acad-object) 'documents) (if (= (vlax-get-property a 'Name) "1.dwg") (vla-activate a))))

评分

参与人数 1明经币 +1 金钱 +5 收起 理由
世人皆醉 + 1 + 5

查看全部评分

回复

使用道具 举报

发表于 2022-11-11 17:07:47 | 显示全部楼层
本帖最后由 caaooo 于 2022-11-11 17:29 编辑

然后,你所谓的关闭其他文件的功能,是cad自带的,你也可以试试


本帖子中包含更多资源

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

x
回复

使用道具 举报

发表于 2022-11-11 21:41:08 | 显示全部楼层
我一般遇到你在这种情况都是把 主文档标签 拖出来成为一个窗口。拖出来的窗口本身就自带置顶按钮。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-16 02:50 , Processed in 0.167330 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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