明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
12
返回列表 发新帖
楼主: mokson

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

[复制链接]
 楼主| 发表于 2023-2-24 18:47:30 | 显示全部楼层
感谢各大佬们的指点,现在搞定了。
发表于 2023-2-24 18:48:37 | 显示全部楼层

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

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

  4.   (if (= (getvar "tilemode") 1)
  5.     (setvar "tilemode" 0)
  6.   )
  7.   (if (/= (getvar "cvport") 1)
  8.     (command "_PSPACE")
  9.   )
  10.   (if (setq ssent (ssget '((0 . "VIEWPORT"))))
  11.     (progn
  12.       (setq i 0)
  13.       (repeat (sslength ssent)
  14.         (if (/=        ""
  15.               (setq laList (LA:GetFreezeLayerForView
  16.          (vlax-ename->vla-object (ssname ssent i))
  17.        )
  18.               )
  19.             )
  20.           (command "_.vplayer" "T" laList "S" (ssname ssent i) "" "")
  21.         )
  22.         (setq i (1+ i))
  23.       )
  24.     )
  25.   )
  26.   (princ)
  27. )
  28. (defun LA:GetFreezeLayerForView  (VpObj / xt xd lyrlst a b)
  29.   (vla-getxdata VpObj "ACAD" 'xt 'xd)
  30.   (mapcar 'set
  31.     '(xt xd)
  32.     (list (safearray-value xt) (safearray-value xd))
  33.   )
  34.   (setq lyrlst "")
  35.   (mapcar '(lambda (a b)
  36.              (if (= a 1003)
  37.                (setq lyrlst (strcat lyrlst (strcase (variant-value b))  ","))
  38.              )
  39.            )
  40.     xt
  41.     xd
  42.   )
  43.   lyrlst
  44. )

  45. ;;;;====================图层工具===================================
  46. ;        隔离图层,选择层除外,关闭其它所有层
  47. (defun c:r1(/ x)
  48.         (vl-cmdf "LAYISO" "s" "o" "o" )
  49.         (princ )
  50. )
  51. ;        *打开所有层
  52. (defun c:r2( / )
  53.         (vl-cmdf "layer" "on" "*" "")
  54.         (princ )
  55. )
  56. (defun c:r3(/ x)
  57.         (IF (setq e (car(entsel"\n选择对象关闭所在图层")))
  58.                 (progn
  59.                         (setq lay (cdr(assoc 8 (entget e))))
  60.                         (cond
  61.                                 ((and (= lay (getvar "CLAYER")) (/= lay "0"))
  62.                                         (progn
  63.                                                 (setvar "CLAYER" "0")
  64.                                                 (vla-put-layeron(vlax-ename->vla-object(tblobjname "LAYER" lay)):vlax-false)
  65.                                         )
  66.                                 )
  67.                                 ((/= lay (getvar "CLAYER"))
  68.                                         (vla-put-layeron(vlax-ename->vla-object(tblobjname "LAYER" lay)):vlax-false)
  69.                                 )
  70.                                 ((and (= lay (getvar "CLAYER")) (= lay "0"))
  71.                                         (princ"当前图层和对象图层都在0层,请重新执行")
  72.                                 )
  73.                         )
  74.                 )
  75.         )
  76.         (princ)
  77. )
  78. (defun c:r4(/ x)
  79.         (vl-cmdf "LAYvpi" )
  80.         (princ )
  81. )


发表于 2023-2-25 09:02:10 | 显示全部楼层
不错的帖子 顶一下
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-16 10:29 , Processed in 0.224318 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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