世人皆醉 发表于 2022-11-11 09:18:15

如何设置文档的优先级

本帖最后由 世人皆醉 于 2022-11-11 10:47 编辑

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





菜卷鱼 发表于 2022-11-11 09:18:16

本帖最后由 菜卷鱼 于 2022-11-11 18:10 编辑

;;;;关闭未活动文档
(defun qclose (/ vacad vdocs vadoc ok)
      (setq vacad (vlax-get-acad-object))
      (setq vdocs (vla-get-Documents vacad))
      (setq vadoc (vla-get-ActiveDocument vacad))
      (vlax-for      x vdocs
      (if (not (equal x vadoc))
          (vla-close x)
      )
      )
(princ "**操作完成")
(prin1)
)

菜卷鱼 发表于 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文件啊

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

;;;设置主文档
(defun c:q1 nil
(vl-bb-set 'maindoc (getvar "dwgname"))
)
;;;返回主文档
(defun c:q2 (/ dwgname)
(princ "\n切回主文档")
(setq dwgname (getvar "dwgname"))
(if (not (= (vl-bb-ref 'maindoc) dwgname))
    (progn
      (vl-bb-set 'currentdoc dwgname)
      (activatedoc (vl-bb-ref 'maindoc))
    )
)
(prin1)
)
;;;两文档之间来回切换
(defun c:q3 (/ s)
(setq s (vl-bb-ref 'currentdoc))
(setq dwgname (getvar "dwgname"))
(if (not (= s dwgname))
    (progn
      (vl-bb-set 'currentdoc dwgname)
      (activatedoc s)
    )
)
(prin1)
)
(defun activatedoc (doc / tablist)
(or *ACAD* (setq *ACAD* (vlax-get-acad-object)))
(or *DOC* (setq *DOC* (vla-get-ActiveDocument *ACAD*)))
(or *docs* (setq *docs* (vla-get-Documents *ACAD*)))
(or *MSPACE* (setq *MSPACE* (vla-get-ModelSpace *DOC*)))
(vl-bb-set 'currentdoc (getvar "dwgname"))
(vlax-for layout *docs*
    (setq tablist (cons (list (vla-get-Name layout) layout) tablist))
)
(vl-some '(lambda (x)
      (if (= (car x) doc)
    (vla-activate (cadr x))
      )
      )
   tablist
)
(prin1)
)

caaooo 发表于 2022-11-11 17:03:49

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

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

caaooo 发表于 2022-11-11 17:07:47

本帖最后由 caaooo 于 2022-11-11 17:29 编辑

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


cheefeel 发表于 2022-11-11 21:41:08

我一般遇到你在这种情况都是把 主文档标签 拖出来成为一个窗口。拖出来的窗口本身就自带置顶按钮。
页: [1]
查看完整版本: 如何设置文档的优先级