明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1329|回复: 14

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

[复制链接]
发表于 2023-4-28 15:48 | 显示全部楼层 |阅读模式
本帖最后由 sjzm 于 2023-4-29 16:28 编辑

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

这是旧的提问



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

  1. (defun C:ww ()
  2.   (if (= (getvar "CVPORT") 1)
  3.       (command "_.MSPACE")
  4.     (command "_.PSPACE")
  5.   )
  6. )


本帖子中包含更多资源

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

x
发表于 2023-4-28 17:12 | 显示全部楼层
本帖最后由 liuhe 于 2023-4-28 17:31 编辑
  1. (defun c:t1 ()
  2.   (setq lst (cons "Model" (layoutlist)))
  3.   (setq num (vl-position (getvar "ctab") lst))
  4.   (if (= num (1- (length lst)))
  5.     (setq num 0)
  6.     (setq num (1+ num))
  7.   )
  8.   (setvar 'ctab (nth num lst))
  9. )

  10. (defun c:t2 ()
  11.   (setq  acadObj  (vlax-get-acad-object)
  12.   doc  (vla-get-ActiveDocument acadObj)
  13.   lst  (list acModelSpace acPaperSpace)
  14.   )
  15.   (vla-put-ActiveSpace
  16.     doc
  17.     (nth (/ (1+ (getvar "TILEMODE")) 2) lst)
  18.   )

  19. )

(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帮助自带的程序,自己改改就行了
发表于 2023-4-28 21:23 | 显示全部楼层
本帖最后由 liuhe 于 2023-4-28 21:24 编辑
  1. ;;判断工作空间及是否在活动视口中
  2. (DEFUN C:T3()
  3. (cond
  4.   ((= (getvar "TILEMODE") 1)
  5.    (princ "\n——★★★ 在模型空间中 ★★★——")
  6.   )
  7.   ((and (= (getvar "TILEMODE") 0)(= (getvar "CVPORT") 1))
  8.    (COMMAND "MSPACE")(PRINC)
  9.   )
  10.   ((and (= (getvar "TILEMODE") 0)(> (getvar "CVPORT") 1))
  11.    (COMMAND "PSPACE")(PRINC)
  12.   )
  13. ))
复制代码


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


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

 楼主| 发表于 2023-4-29 16:23 | 显示全部楼层
liuhe 发表于 2023-4-29 13:25
直接复制就可以  快捷键是T3

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

  1. (defun C:ww ()
  2.   (if (= (getvar "CVPORT") 1)
  3.       (command "_.MSPACE")
  4.     (command "_.PSPACE")
  5.   )
  6. )
发表于 2023-4-28 16:23 | 显示全部楼层
参考这个帖子,判断不同空间执行不同的命令:http://bbs.mjtd.com/thread-186934-1-1.html
 楼主| 发表于 2023-4-28 16:59 | 显示全部楼层
kucha007 发表于 2023-4-28 16:23
参考这个帖子,判断不同空间执行不同的命令:http://bbs.mjtd.com/thread-186934-1-1.html

谢谢你的回复和帮助,这个帖子的内容我看不懂啊,请问有现成的lsp吗
发表于 2023-4-28 17:38 | 显示全部楼层
liuhe 发表于 2023-4-28 17:12
(vl-load-com)
(defun c:Example_ActiveSpace()
    ;; This example toggles the ActiveSpace propert ...

感觉他要的不是你这个,是要退出和进入视口。顺便说一下你这个程序也可以用这个代替:(ai_onoff 'TILEMODE)
发表于 2023-4-29 08:35 | 显示全部楼层
要退出视口回到布局空间设置一下不就好了:
命令CUI,设置快捷键,
下面搜索命令"图纸空间",拖到"键盘快捷键"的子菜单"快捷键"菜单
然后设置一个快捷键比如SHIFT+1,这样你在视口中的时候按一下SHIFT+1就退出了视口
发表于 2023-4-29 09:37 | 显示全部楼层
liuhe 发表于 2023-4-28 21:23
PSPACE 命令)
在布局中,从布局视口中的模型空间切换到图纸空间。

很好的循环切换程序
 楼主| 发表于 2023-4-29 13:15 | 显示全部楼层
liuhe 发表于 2023-4-28 17:12
(vl-load-com)
(defun c:Example_ActiveSpace()
    ;; This example toggles the ActiveSpace propert ...

谢谢你的帮助,我尝试研究下
 楼主| 发表于 2023-4-29 13:17 | 显示全部楼层
本帖最后由 sjzm 于 2023-4-29 13:18 编辑
liuhe 发表于 2023-4-28 21:23
PSPACE 命令)
在布局中,从布局视口中的模型空间切换到图纸空间。

谢谢你的代码,我好想有点懂了,这个代码是自动判别当前是在模型空间还是在布局空间,然后根据情况输入pspace或者mspace。不知道我理解的对不对。
请问:这段代码我复制到文档中然后改名为lsp文件就行能用了吗? 快捷键怎么设置呢?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-9 13:21 , Processed in 0.154232 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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