本帖最后由 npcer 于 2025-9-12 17:45 编辑
源码来源:http://bbs.mjtd.com/thread-193570-1-1.html
我只是小改了一下表现效果和支持透明命令,代码不到700B,致敬原作者
0→配置视图,1~9→切换视图,'1~'9→透明切换视图
效果预览:
源码:

网友答: 本帖最后由 jun470 于 2025-9-14 10:55 编辑
我在楼主的基础上,修改了。
吸收了14楼Qwer1243的修改,代码更简洁了。
下面是优化的代码
0→配置视图,1~9→切换视图,'1~'9→透明切换视图

网友答: named view 你自己命名即可,为啥非要1-9呢? 10-99都可以,999,abc, 某个名字...只要不使用那些不支持的特定字符。
vport 左上角默认显示 ViewControl,那里也可以直接切换 View.
还要更快捷一点,我写了一个快捷切换的命令行工具,命令的右键菜单直接可以点选切换View, Save/saveTo/Delete.
1-5 一般大家都已经设置为更加高频的操作,切换 View这个的操作频率实际上很低,分给他们占用实在是得不偿失哦。网友答:
可能是版本的差异,我CAD2012虽然会提示未知命令1,但不需要额外键入enter,而且按照你修改之后的这一版运行,和我原来的无差别,还是会提示未知命令1,最后,按照你这个写法,我这边还有个BUG,就是输入0之后直接回车框选的视图不会被写入视图1,输入1会提示未找到视图1,除非0--然后手动按1网友答: 感谢大佬的热心分享网友答: 本帖最后由 bai2000 于 2025-9-12 18:33 编辑
不错,能不能把1-9调为透明命令,毕竟透明命令实用点,'1~'9→透明切换视图 上撇忒不方便,常错网友答:
能够想出1-9调为透明命令的,都是人才。
网友答:
是不是有enter没有键入,运行完没有自动结束,需要多一个空格。网友答:
有回车确认呀,我这边CAD2012一切正常网友答:
透明命令不就是前面加 ' 的嘛。你现在试试在绘图命令中 输入 ‘P 就是用了PAN命令,取消之后,绘图命令还在。透明命令只有少数命令可以支持,所以平时不常用到。网友答: 本帖最后由 npcer 于 2025-9-12 20:47 编辑
1-9透明化可能会导致一些不可预见性问题吧网友答:
我改了代码,解决了,看9楼
源码来源:http://bbs.mjtd.com/thread-193570-1-1.html
我只是小改了一下表现效果和支持透明命令,代码不到700B,致敬原作者

0→配置视图,1~9→切换视图,'1~'9→透明切换视图
效果预览:
源码:

- (vl-load-com)
- ;; 保存命名视图
- (defun c:0 (/ p num)
- (setvar "cmdecho" 0)
- (while (not (and (setq num (getint "\n视图编号[1-9]: "))
- (>= num 1)
- (<= num 9)))
- (princ "\n请输入1到9之间的数字")
- )
- (command "-view" "w" (itoa num)
- (setq p (getpoint "\n第一角点: "))
- (getcorner p "\n对角点: "))
- (princ)
- )
- ;; 批量定义 c:1 到 c:9
- (foreach n '(1 2 3 4 5 6 7 8 9)
- (eval
- (list 'defun
- (read (strcat "c:" (itoa n)))
- '()
- (list 'vl-cmdf "'_.-view" "r" (itoa n) "")
- '(princ)
- )
- )
- )
- (princ "\n已加载视图切换:0→配置视图,1~9→切换视图,'1~'9→透明切换视图")
- (princ)
网友答: 本帖最后由 jun470 于 2025-9-14 10:55 编辑
cghdy 发表于 2025-9-12 19:46
是不是有enter没有键入,运行完没有自动结束,需要多一个空格。
我在楼主的基础上,修改了。
吸收了14楼Qwer1243的修改,代码更简洁了。
下面是优化的代码
0→配置视图,1~9→切换视图,'1~'9→透明切换视图

- ;; 保存命名视图
- (defun c:0 (/ p num)
- (setvar "cmdecho" 0)
- (initget "1 2 3 4 5 6 7 8 9")
- (setq num (getkword"视图编号:[1/2/3/4/5/6/7/8/9]:<1>"))
- (command "-view" "w" num
- (setq p (getpoint "\n第一角点: "))
- (getcorner p "\n对角点: "))
- (princ)
- )
- ;; 批量定义 c:1 到 c:9
- (foreach n '(1 2 3 4 5 6 7 8 9)
- (eval
- (list 'defun
- (read (strcat "c:" (itoa n)))
- '()
- (list 'command-s "'-view" "r" n "")
- '(princ)
- )
- )
- )
- (princ "\n已加载视图切换:0→配置视图,1~9→切换视图,'1~'9→透明切换视图")
- (princ)
网友答: named view 你自己命名即可,为啥非要1-9呢? 10-99都可以,999,abc, 某个名字...只要不使用那些不支持的特定字符。
vport 左上角默认显示 ViewControl,那里也可以直接切换 View.
还要更快捷一点,我写了一个快捷切换的命令行工具,命令的右键菜单直接可以点选切换View, Save/saveTo/Delete.
1-5 一般大家都已经设置为更加高频的操作,切换 View这个的操作频率实际上很低,分给他们占用实在是得不偿失哦。网友答:
jun470 发表于 2025-9-12 22:23
我在楼主的基础上,修改了。
吸收了14楼Qwer1243的修改,代码更简洁了。
可能是版本的差异,我CAD2012虽然会提示未知命令1,但不需要额外键入enter,而且按照你修改之后的这一版运行,和我原来的无差别,还是会提示未知命令1,最后,按照你这个写法,我这边还有个BUG,就是输入0之后直接回车框选的视图不会被写入视图1,输入1会提示未找到视图1,除非0--然后手动按1网友答: 感谢大佬的热心分享网友答: 本帖最后由 bai2000 于 2025-9-12 18:33 编辑
不错,能不能把1-9调为透明命令,毕竟透明命令实用点,'1~'9→透明切换视图 上撇忒不方便,常错网友答:
bai2000 发表于 2025-9-12 18:27
不错,能不能把1-9调为透明命令,毕竟透明命令实用点,'1~'9→透明切换视图 上撇忒不方便,常错
能够想出1-9调为透明命令的,都是人才。
网友答:
是不是有enter没有键入,运行完没有自动结束,需要多一个空格。网友答:
cghdy 发表于 2025-9-12 19:46
是不是有enter没有键入,运行完没有自动结束,需要多一个空格。
有回车确认呀,我这边CAD2012一切正常网友答:
bai2000 发表于 2025-9-12 18:27
不错,能不能把1-9调为透明命令,毕竟透明命令实用点,'1~'9→透明切换视图 上撇忒不方便,常错
透明命令不就是前面加 ' 的嘛。你现在试试在绘图命令中 输入 ‘P 就是用了PAN命令,取消之后,绘图命令还在。透明命令只有少数命令可以支持,所以平时不常用到。网友答: 本帖最后由 npcer 于 2025-9-12 20:47 编辑
bai2000 发表于 2025-9-12 18:27
不错,能不能把1-9调为透明命令,毕竟透明命令实用点,'1~'9→透明切换视图 上撇忒不方便,常错
1-9透明化可能会导致一些不可预见性问题吧网友答:
npcer 发表于 2025-9-12 20:44
1-9透明化可能会导致一些不可预见性问题吧
我改了代码,解决了,看9楼