明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 654|回复: 0

[提问] 视口冻结解冻图层列表如何使用

[复制链接]
发表于 2021-7-7 23:20 | 显示全部楼层 |阅读模式
本帖最后由 magicheno 于 2021-7-7 23:23 编辑

这下面是晓东里复制过来的,下面的函数就是不知道怎么用,有没有大佬指教下,该如何使用呢
明经里有一个帖子好像只有一种全部视口解冻的用法
http://bbs.mjtd.com/forum.php?mod=viewthread&tid=175737&highlight=%B6%B3%BD%E1%2B%C1%D0%B1%ED
(vp:frzlayer (vlax-ename->vla-object (car (entsel))) '("center" "dim"));冻结图层
(vp:thwlayer (vlax-ename->vla-object (car (entsel))) '("center" "dim"));解冻图层
(vp:getfrzlayer (vlax-ename->vla-object (car (entsel))));_获取冻结图层列表

  1. ;;Author: eachy from www.xdcad.net 2013.10.9
  2. (defun Vp:GetXdata (Vpobj / xt xd)
  3.   (vla-getxdata VpObj "ACAD" 'xt 'xd)
  4.   (list (safearray-value xt) (safearray-value xd))
  5. )
  6. (defun Vp:SetXdata (Vpobj xtype xdata /)
  7.   (vla-setxdata
  8.     VpObj
  9.     (vlax-safearray-fill
  10.       (vlax-make-safearray
  11.     vlax-vbInteger
  12.     (cons 0 (1- (length xtype)))
  13.       )
  14.       xtype
  15.     )
  16.     (vlax-safearray-fill
  17.       (vlax-make-safearray
  18.     vlax-vbvariant
  19.     (cons 0 (1- (length xdata)))
  20.       )
  21.       xdata
  22.     )
  23.   )
  24.   (vla-update VpObj)
  25.   (vla-display VpObj :vlax-false)
  26.   (vla-display VpObj :vlax-true)
  27. )
  28. (defun Vp:GetxdataFrzlyr (xt xd / lyrlst)
  29.   (mapcar '(lambda (a b)
  30.          (if (= a 1003)
  31.            (setq lyrlst (cons (strcase (variant-value b)) lyrlst))
  32.          )
  33.        )
  34.       xt
  35.       xd
  36.   )
  37.   lyrlst
  38. )
  39. (defun vp:PutFrzLyr (xt xd lyrlst / xtt xdd flyr l)
  40.   (if lyrlst
  41.     (progn (setq xt (reverse (vl-remove 1003 xt))
  42.          xd (reverse xd)
  43.          l  (list (car xd) (cadr xd))
  44.          xd (vl-member-if
  45.               '(lambda (x) (equal (variant-value x) "{"))
  46.               (cddr xd)
  47.             )
  48.          xd (append l xd)
  49.        )
  50.        (setq flyr (mapcar '(lambda (x)
  51.                  (list 1003
  52.                        (vlax-make-variant x vlax-vbstring)
  53.                  )
  54.                    )
  55.                   lyrlst
  56.               )
  57.          xtt  (reverse (append (list (car xt) (cadr xt))
  58.                        (mapcar 'car flyr)
  59.                        (cddr xt)
  60.                    )
  61.               )
  62.          xdd  (reverse (append (list (car xd) (cadr xd))
  63.                        (mapcar 'cadr flyr)
  64.                        (cddr xd)
  65.                    )
  66.               )
  67.        )
  68.        (list xtt xdd)
  69.     )
  70.     (if    (member 1003 xt)
  71.       (progn (setq xt (reverse (vl-remove 1003 xt))
  72.            xd (reverse xd)
  73.            l  (list (car xd) (cadr xd))
  74.            xd (vl-member-if
  75.             '(lambda (x) (equal (variant-value x) "{"))
  76.             (cddr xd)
  77.               )
  78.            xd (append l xd)
  79.          )
  80.          (list (reverse xt) (reverse xd))
  81.       )
  82.       (list xt xd)
  83.     )
  84.   )
  85. )
  86. ;;
  87. (defun Vp:GetFrzLayer (VpObj / xt xd)
  88.   (mapcar 'set '(xt xd) (vp:getxdata vpobj))
  89.   (vp:getxdataFrzlyr xt xd)
  90. )
  91. (defun Vp:Frzlayer (VpObj lyrlst / xd xt oldlyrlst xdata llyrlst)
  92.   (mapcar 'set '(xt xd) (vp:getxdata vpobj))
  93.   (if lyrlst
  94.     (progn
  95.       (setq lyrlst (mapcar 'strcase lyrlst))
  96.       (if (setq    oldlyrlst (vp:getxdatafrzlyr xt xd)
  97.         llyrlst      oldlyrlst
  98.       )
  99.     (mapcar    '(lambda (x)
  100.            (if (not (member x oldlyrlst))
  101.              (setq oldlyrlst (append (list x) oldlyrlst))
  102.            )
  103.          )
  104.         lyrlst
  105.     )
  106.     (setq oldlyrlst lyrlst)
  107.       )
  108.       (if (not (equal oldlyrlst llyrlst))
  109.     (progn
  110.       (setq xdata (vp:putfrzlyr xt xd oldlyrlst))
  111.       (Vp:SetXdata Vpobj (car xdata) (cadr xdata))
  112.     )
  113.       )
  114.     )
  115.   )
  116. )
  117. (defun Vp:ThwLayer
  118.        (VpObj lyrlst / properties pSp nVp oldFrzlyr lfrzlyr xt xd)
  119.   (mapcar 'set '(xt xd) (vp:getxdata vpobj))
  120.   (setq    oldFrzlyr (vp:getxdatafrzlyr xt xd)
  121.     lfrzlyr      oldfrzlyr
  122.   )
  123.   (mapcar '(lambda (x) (setq oldfrzlyr (vl-remove x oldFrzlyr)))
  124.       (mapcar 'strcase lyrlst)
  125.   )
  126.   (if (not (equal oldfrzlyr lfrzlyr))
  127.     (progn
  128.       (setq properties
  129.          '("CustomScale"      "Direction"         "DisplayLocked"
  130.            "GridOn"          "Layer"         "LensLength"
  131.            "Linetype"      "LinetypeScale"    "Lineweight"
  132.            "SnapBasePoint"      "SnapOn"         "SnapRotationAngle"
  133.            "StandardScale"      "StandardScale2"   "Target"
  134.            "TrueColor"      "TwistAngle"         "UCSIconAtOrigin"
  135.            "UCSIconOn"      "ViewportOn"         "Visible"
  136.           )
  137.       )
  138.       (mapcar '(lambda (x)
  139.          (if (vlax-property-available-p VpObj x)
  140.            (set (read x) (vlax-get-property VpObj x))
  141.          )
  142.            )
  143.           properties
  144.       )
  145.       (setq pSp    (vla-get-PaperSpace
  146.           (vla-get-ActiveDocument
  147.             (vlax-get-acad-object)
  148.           )
  149.         )
  150.         nVp    (vla-AddPViewport
  151.           pSp
  152.           (vla-get-center VpObj)
  153.           (vla-get-width VpObj)
  154.           (vla-get-height VpObj)
  155.         )
  156.       )
  157.       (setq xdata (vp:putfrzlyr xt xd oldFrzlyr))
  158.       (Vp:SetXdata nVp (car xdata) (cadr xdata))
  159.       (mapcar '(lambda (x)
  160.          (if (eval (read x))
  161.            (vl-catch-all-apply
  162.              'vlax-put-property
  163.              (list nVp x (eval (read x)))
  164.            )
  165.          )
  166.            )
  167.           properties
  168.       )
  169.       (mapcar '(lambda (x) (set (read x) nil)) properties)
  170.       (vla-delete vpobj)
  171.     )
  172.   )
  173. )



"觉得好,就打赏"
还没有人打赏,支持一下
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-6-29 07:43 , Processed in 0.156671 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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