mokson 发表于 2023-2-24 09:52:20

诡异的视口,让我摸不着头脑,求助。

本帖最后由 mokson 于 2023-2-24 09:54 编辑

右边是我自己创建的视口,是正常的。
左边是原图里的视口,但会隐藏许多对象,这功能也挺实用的。
但是又没有隐藏图层呀,它究竟是用什么原理实现的呢?
特此请教大佬们!


附上文件:

start4444 发表于 2023-2-24 11:39:24

你这是诡异的问题阿

cq4920 发表于 2023-2-24 18:48:37


(defun c:FE ()(command "LAYFRZ" ));冻结关闭视口内图层

;;;打开视口内所有图层
(defun c:fr (/ ssent laList i)

(if (= (getvar "tilemode") 1)
    (setvar "tilemode" 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" "T" laList "S" (ssname ssent i) "" "")
      )
      (setq i (1+ i))
      )
    )
)
(princ)
)
(defun LA:GetFreezeLayerForView(VpObj / xt xd lyrlst a b)
(vla-getxdata VpObj "ACAD" 'xt 'xd)
(mapcar 'set
    '(xt xd)
    (list (safearray-value xt) (safearray-value xd))
)
(setq lyrlst "")
(mapcar '(lambda (a b)
             (if (= a 1003)
               (setq lyrlst (strcat lyrlst (strcase (variant-value b))","))
             )
         )
    xt
    xd
)
lyrlst
)

;;;;====================图层工具===================================
;        隔离图层,选择层除外,关闭其它所有层
(defun c:r1(/ x)
        (vl-cmdf "LAYISO" "s" "o" "o" )
        (princ )
)
;        *打开所有层
(defun c:r2( / )
        (vl-cmdf "layer" "on" "*" "")
        (princ )
)
(defun c:r3(/ x)
        (IF (setq e (car(entsel"\n选择对象关闭所在图层")))
                (progn
                        (setq lay (cdr(assoc 8 (entget e))))
                        (cond
                                ((and (= lay (getvar "CLAYER")) (/= lay "0"))
                                        (progn
                                                (setvar "CLAYER" "0")
                                                (vla-put-layeron(vlax-ename->vla-object(tblobjname "LAYER" lay)):vlax-false)
                                        )
                                )
                                ((/= lay (getvar "CLAYER"))
                                        (vla-put-layeron(vlax-ename->vla-object(tblobjname "LAYER" lay)):vlax-false)
                                )
                                ((and (= lay (getvar "CLAYER")) (= lay "0"))
                                        (princ"当前图层和对象图层都在0层,请重新执行")
                                )
                        )
                )
        )
        (princ)
)
(defun c:r4(/ x)
        (vl-cmdf "LAYvpi" )
        (princ )
)


mokson 发表于 2023-2-24 10:48:06

本帖最后由 mokson 于 2023-2-24 10:51 编辑

xiaocainiao 发表于 2023-2-24 10:11
这不是最基础的视口操作吗、把视口内的图层冻结就行了、是视口内冻结、不是全部冻结那个太阳图标
感谢各位大佬的指点,原来是视口冻结是这样用的。
以前没有深入研究过,真是学艺不精呀。
原来双击进入视口,才可以进行冻结操作。
见笑了。

mikewolf2k 发表于 2023-2-24 10:05:05

看看是不是设置了现实深度,或者渲染模式

mokson 发表于 2023-2-24 10:08:40

mikewolf2k 发表于 2023-2-24 10:05
看看是不是设置了现实深度,或者渲染模式

两个视口都是线框模式。你下载附件看看。

xiaocainiao 发表于 2023-2-24 10:11:45

这不是最基础的视口操作吗、把视口内的图层冻结就行了、是视口内冻结、不是全部冻结那个太阳图标

xj6019 发表于 2023-2-24 10:14:13

视口内图层冻结操作

kwok 发表于 2023-2-24 10:18:49


cghdy 发表于 2023-2-24 15:10:08

图层状态管理器琢磨一下,模型画图,布局出图

e2002 发表于 2023-2-24 17:14:30

layfrz 命令中也是可以设置是 VPFreeze还是Freeze的。
页: [1] 2
查看完整版本: 诡异的视口,让我摸不着头脑,求助。