nyistjz 发表于 2020-11-8 11:12:26

求布局视口中反向冻结功能

本帖最后由 nyistjz 于 2020-12-3 03:44 编辑

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

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

wudechao 发表于 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)
)

start4444 发表于 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)
)

oldskooler 发表于 2021-9-15 17:27:12

nyistjz 发表于 2021-9-13 13:45
最好不要这么操作,因为在视口中,是对单个视口的操作,而对模型的操作会影响到全部的视口。
对于你这个 ...

现在经常有一些图纸,大地下室,模型空间都是画在一起的,在图纸空间利用视口里面的图层冻结,分隔成多张图纸,这样的就会有一个问题,需要在图纸空间才能方便的浏览图纸,我现在的方法是,在某个视口中把冻结的图层放到一个组过滤器里面,然后在模型空间里面把组过滤器里面的图层关闭或冻结,这样看到的东西就和图纸空间中一致,毕竟在模型空间操作,大的图纸不怎么卡

nyistjz 发表于 2020-11-9 00:46:23

start4444 发表于 2020-11-9 00:00
(defun C:tt5(/ i laList ssent)
        (princ "-->反转视口内冻结非冻结图层")
        (setvar "cmdecho" 0)


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

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

是否可以实现?

nyistjz 发表于 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)

大侠,牛逼,膜拜中!:handshake考虑很全面。

nyistjz 发表于 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

顶一下 求大神解决

nyistjz 发表于 2020-12-3 03:43:25

附件已经有更新,在1楼

xotoo 发表于 2021-9-9 23:35:58

nyistjz 发表于 2020-12-3 03:43
附件已经有更新,在1楼

能不能把 ZD();打开指定图层 命令完善
很需要这个命令

依然小小鸟 发表于 2021-9-11 07:31:07

求大神们 完善这个功能
页: [1] 2
查看完整版本: 求布局视口中反向冻结功能