诡异的视口,让我摸不着头脑,求助。
本帖最后由 mokson 于 2023-2-24 09:54 编辑右边是我自己创建的视口,是正常的。
左边是原图里的视口,但会隐藏许多对象,这功能也挺实用的。
但是又没有隐藏图层呀,它究竟是用什么原理实现的呢?
特此请教大佬们!
附上文件:
你这是诡异的问题阿
(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:51 编辑
xiaocainiao 发表于 2023-2-24 10:11
这不是最基础的视口操作吗、把视口内的图层冻结就行了、是视口内冻结、不是全部冻结那个太阳图标
感谢各位大佬的指点,原来是视口冻结是这样用的。
以前没有深入研究过,真是学艺不精呀。
原来双击进入视口,才可以进行冻结操作。
见笑了。
看看是不是设置了现实深度,或者渲染模式 mikewolf2k 发表于 2023-2-24 10:05
看看是不是设置了现实深度,或者渲染模式
两个视口都是线框模式。你下载附件看看。 这不是最基础的视口操作吗、把视口内的图层冻结就行了、是视口内冻结、不是全部冻结那个太阳图标 视口内图层冻结操作
图层状态管理器琢磨一下,模型画图,布局出图 layfrz 命令中也是可以设置是 VPFreeze还是Freeze的。
页:
[1]
2