明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2490|回复: 17

[讨论] 求布局视口中反向冻结功能

  [复制链接]
发表于 2020-11-8 11:12:26 | 显示全部楼层 |阅读模式
本帖最后由 nyistjz 于 2020-12-3 03:44 编辑

如附件,是我在本论坛找到的可以在视口中冻结和打开的两个功能,很好用。
但是目前缺少了,反向冻结的功能,也就是把冻结的解冻,把非冻结的冻结。
还请高手,能有解决办法,感谢!

====================================================
如附件,按网友们的意见已做修改,并增加了些功能,希望对大家有帮助 !
在模型与布局中会有不同的表现

本帖子中包含更多资源

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

x
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2020-11-9 12:02:22 | 显示全部楼层
本帖最后由 wudechao 于 2020-11-9 12:06 编辑
nyistjz 发表于 2020-11-9 00:46
感谢,可以实现需要的功能。

另外,这个程序有个小问题,就是反显和全显,时需要点击需要的视口才行, ...
;我改一下

(defun c:tt5 (/ i lalist ssent ffg)
  (princ "-->反转视口内冻结非冻结图层")
  (setvar "cmdecho" 0)
  (setq ffg (getvar "cvport"))
  (if (/= ffg 1)
    (setq ssent (ssget "x" (list '(0 . "VIEWPORT") (cons 69 ffg))))
    (progn
      (command "_PSPACE")
      (setq ssent (ssget '((0 . "VIEWPORT"))))
    )
  )
  (if ssent
    (progn
      (setq i 0)
      (repeat (sslength ssent)
        (if (/= "" (setq lalist (la:getfreezelayerforview (vlax-ename->vla-object (ssname ssent i)))))
          (command "_.vplayer" "f" "*" "s" (ssname ssent i) "" "" "_.vplayer" "T" lalist "S" (ssname ssent i) "" "")
          (command "_.vplayer" "f" "*" "s" (ssname ssent i) "" "")
        )
        (setq i (1+ i))
      )
    )
  )
  (if (/= ffg 1)
    (command "_.MSPACE")
  )
  (setvar "cmdecho" 1)
  (princ)
)
发表于 2020-11-9 00:00:02 | 显示全部楼层
(defun C:tt5(/ i laList ssent)
        (princ "-->反转视口内冻结非冻结图层")
        (setvar "cmdecho" 0)
  (if (/= (getvar "cvport") 1)(command "_PSPACE"))
  (if (setq ssent (ssget '((0 . "VIEWPORT"))))
    (progn
      (setq i 0)
      (repeat (sslength ssent)
        (if (/= "" (setq laList(LA:GetFreezeLayerForView(vlax-ename->vla-object(ssname ssent i)))))
          (command "_.vplayer" "f" "*" "s" (ssname ssent i) "" "" "_.vplayer" "T" laList "S" (ssname ssent i) "" "")
        (command "_.vplayer" "f" "*" "s" (ssname ssent i) "" "")
                                        )
        (setq i (1+ i))
      )
    )
  )
        (setvar "cmdecho" 1)
  (princ)
)
发表于 2021-9-15 17:27:12 | 显示全部楼层
nyistjz 发表于 2021-9-13 13:45
最好不要这么操作,因为在视口中,是对单个视口的操作,而对模型的操作会影响到全部的视口。
对于你这个 ...

现在经常有一些图纸,大地下室,模型空间都是画在一起的,在图纸空间利用视口里面的图层冻结,分隔成多张图纸,这样的就会有一个问题,需要在图纸空间才能方便的浏览图纸,我现在的方法是,在某个视口中把冻结的图层放到一个组过滤器里面,然后在模型空间里面把组过滤器里面的图层关闭或冻结,这样看到的东西就和图纸空间中一致,毕竟在模型空间操作,大的图纸不怎么卡
 楼主| 发表于 2020-11-9 00:46:23 | 显示全部楼层
start4444 发表于 2020-11-9 00:00
(defun C:tt5(/ i laList ssent)
        (princ "-->反转视口内冻结非冻结图层")
        (setvar "cmdecho" 0)

感谢,可以实现需要的功能。

另外,这个程序有个小问题,就是反显和全显,时需要点击需要的视口才行,有没有可能直接对已经激活的这个视口反显或全显,而去除掉选择视口的这个步骤。

是否可以实现?
 楼主| 发表于 2020-11-9 12:37:59 | 显示全部楼层
本帖最后由 nyistjz 于 2020-11-9 12:46 编辑
wudechao 发表于 2020-11-9 12:02
;我改一下

(defun c:tt5 (/ i lalist ssent ffg)

大侠,牛逼,膜拜中!考虑很全面。
 楼主| 发表于 2020-11-9 13:44:44 | 显示全部楼层
wudechao 发表于 2020-11-9 12:02
;我改一下

(defun c:tt5 (/ i lalist ssent ffg)

大侠,不好意思,还想再请教您个功能。
有没有办法在视口中实现“只打开指定图层”的功能,比如:选择图层1和图层2,则只保留这两个图层打开是打开状态,其它图层全部冻结关闭。
发表于 2020-11-12 08:51:45 | 显示全部楼层
顶一下 求大神解决
 楼主| 发表于 2020-12-3 03:43:25 | 显示全部楼层
附件已经有更新,在1楼
发表于 2021-9-9 23:35:58 | 显示全部楼层
nyistjz 发表于 2020-12-3 03:43
附件已经有更新,在1楼

能不能把 ZD();打开指定图层 命令完善
很需要这个命令
发表于 2021-9-11 07:31:07 | 显示全部楼层
求大神们 完善这个功能
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-23 08:38 , Processed in 0.204328 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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