sjzm 发表于 2023-4-28 15:48:26

布局和MV窗口一键切换代码

本帖最后由 sjzm 于 2023-4-29 16:28 编辑

我再布局内标注的时候,想要进入模型空间画图需要鼠标双击视口进入模型空间才行,画完后还要把鼠标移出来双击布局空间,很不方便。如果是用快捷键mspace和pspace切换也不方便。
所以请问有没有这样的插件可以一键切换布局/模型空间,不用我再来回双击鼠标。

这是旧的提问
static/image/hrline/1.gif


谢谢大家的帮助和回复,我对需求的形容不清误导了大家,在此表达歉意!
自己借助AI工具鼓捣了一下,满足我我的需求。希望能帮到大家

(defun C:ww ()
(if (= (getvar "CVPORT") 1)
      (command "_.MSPACE")
    (command "_.PSPACE")
)
)


liuhe 发表于 2023-4-28 17:12:46

本帖最后由 liuhe 于 2023-4-28 17:31 编辑

(defun c:t1 ()
(setq lst (cons "Model" (layoutlist)))
(setq num (vl-position (getvar "ctab") lst))
(if (= num (1- (length lst)))
    (setq num 0)
    (setq num (1+ num))
)
(setvar 'ctab (nth num lst))
)

(defun c:t2 ()
(setqacadObj(vlax-get-acad-object)
doc(vla-get-ActiveDocument acadObj)
lst(list acModelSpace acPaperSpace)
)
(vla-put-ActiveSpace
    doc
    (nth (/ (1+ (getvar "TILEMODE")) 2) lst)
)

)
(vl-load-com)
(defun c:Example_ActiveSpace()
    ;; This example toggles the ActiveSpace property from
    ;; paper space to model space.
    (setq acadObj (vlax-get-acad-object))
    (setq doc (vla-get-ActiveDocument acadObj))

    ;; Display the current setting for TILEMODE
    (alert (strcat "TILEMODE = " (itoa (vla-get-ActiveSpace doc))))
   
    ;; Changes active document to paper space
    (vla-put-ActiveSpace doc acPaperSpace)
    (alert (strcat "TILEMODE = " (itoa (vla-get-ActiveSpace doc))))
   
    ;; Changes active document to model space
    (vla-put-ActiveSpace doc acModelSpace)
    (alert (strcat "TILEMODE = " (itoa (vla-get-ActiveSpace doc))))
)

CAD帮助自带的程序,自己改改就行了

liuhe 发表于 2023-4-28 21:23:14

本帖最后由 liuhe 于 2023-4-28 21:24 编辑

;;判断工作空间及是否在活动视口中
(DEFUN C:T3()
(cond
((= (getvar "TILEMODE") 1)
   (princ "\n——★★★ 在模型空间中 ★★★——")
)
((and (= (getvar "TILEMODE") 0)(= (getvar "CVPORT") 1))
   (COMMAND "MSPACE")(PRINC)
)
((and (= (getvar "TILEMODE") 0)(> (getvar "CVPORT") 1))
   (COMMAND "PSPACE")(PRINC)
)
))

PSPACE 命令)
在布局中,从布局视口中的模型空间切换到图纸空间。


MSPACE(命令)
在布局中,从图纸空间切换到布局视口中的模型空间。

sjzm 发表于 2023-4-29 16:23:41

liuhe 发表于 2023-4-29 13:25
直接复制就可以快捷键是T3

谢谢你的代码,以你的代码为基础,我让GTP修改了一下,最后实现了我想要的功能,是我对我需要的功能描述不清晰误导了你,但还是谢谢你,一下是代码(我不懂代码和编程,只能瞎鼓捣)

(defun C:ww ()
(if (= (getvar "CVPORT") 1)
      (command "_.MSPACE")
    (command "_.PSPACE")
)
)

kucha007 发表于 2023-4-28 16:23:45

参考这个帖子,判断不同空间执行不同的命令:http://bbs.mjtd.com/thread-186934-1-1.html

sjzm 发表于 2023-4-28 16:59:16

kucha007 发表于 2023-4-28 16:23
参考这个帖子,判断不同空间执行不同的命令:http://bbs.mjtd.com/thread-186934-1-1.html

谢谢你的回复和帮助,这个帖子的内容我看不懂啊,请问有现成的lsp吗

kucha007 发表于 2023-4-28 17:38:46

liuhe 发表于 2023-4-28 17:12
(vl-load-com)
(defun c:Example_ActiveSpace()
    ;; This example toggles the ActiveSpace propert ...
感觉他要的不是你这个,是要退出和进入视口。顺便说一下你这个程序也可以用这个代替:(ai_onoff 'TILEMODE)

a2580106803 发表于 2023-4-29 08:35:19

要退出视口回到布局空间设置一下不就好了:
命令CUI,设置快捷键,
下面搜索命令"图纸空间",拖到"键盘快捷键"的子菜单"快捷键"菜单
然后设置一个快捷键比如SHIFT+1,这样你在视口中的时候按一下SHIFT+1就退出了视口

andyzha 发表于 2023-4-29 09:37:14

liuhe 发表于 2023-4-28 21:23
PSPACE 命令)
在布局中,从布局视口中的模型空间切换到图纸空间。



很好的循环切换程序

sjzm 发表于 2023-4-29 13:15:26

liuhe 发表于 2023-4-28 17:12
(vl-load-com)
(defun c:Example_ActiveSpace()
    ;; This example toggles the ActiveSpace propert ...

谢谢你的帮助,我尝试研究下

sjzm 发表于 2023-4-29 13:17:42

本帖最后由 sjzm 于 2023-4-29 13:18 编辑

liuhe 发表于 2023-4-28 21:23
PSPACE 命令)
在布局中,从布局视口中的模型空间切换到图纸空间。


谢谢你的代码,我好想有点懂了,这个代码是自动判别当前是在模型空间还是在布局空间,然后根据情况输入pspace或者mspace。不知道我理解的对不对。
请问:这段代码我复制到文档中然后改名为lsp文件就行能用了吗? 快捷键怎么设置呢?
页: [1] 2
查看完整版本: 布局和MV窗口一键切换代码