明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 5266|回复: 15

[求助]请教如何编程实现某图层在指定视口中冻结

  [复制链接]
发表于 2004-7-7 10:54 | 显示全部楼层 |阅读模式
请教如何编程实现某图层在指定视口(Viewport in a Layout)中冻结?

"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2018-12-5 13:00 | 显示全部楼层
如何解冻 跪求大神
发表于 2004-7-7 11:28 | 显示全部楼层
1.进入layout,layout中有多个viewport


2.进入某个viewport的model状态。


3.用vplayer--freeze可以冻结这个viewport的某个层。
发表于 2004-7-7 13:12 | 显示全部楼层
;;(TTT "DIM,CENTER")
(defun TTT (LST / ENT)
(command "_PSPACE")
(setq ENT (cdr
(assoc 69 (entget (car (entsel "\nSelect Viewport: "))))
)
)
(command "_.MSPACE")
(setvar "cvport" ENT)
(command "_.vplayer" "f" LST "" "")
(princ)
)
 楼主| 发表于 2004-7-7 18:07 | 显示全部楼层
我是想有没有不通过调用command的办法?
发表于 2004-7-7 20:51 | 显示全部楼层
这些信息是在xdata中的。很麻烦。ActiveX方法也很难,我是没有试出来。


我原来因为遍历Layout时重生成太费时间而想去冻结不用的图层,后来我放弃了。呵呵。
发表于 2004-7-7 22:39 | 显示全部楼层
发表于 2004-7-8 00:00 | 显示全部楼层
viewport的所有冻结层:
  1. (defun viewport-frozen-layers(/ cvp)
  2.    (if (= 0 (getvar "tilemode"))
  3.        (if (/= 1 (setq cvp (getvar "cvport")))
  4.            (apply
  5.                'append
  6.                (mapcar
  7.                    '(lambda (x)
  8.                          (if (= 1003 (car x))
  9.                              (list (cdr x))
  10.                          )
  11.                      )
  12.                    (cdadr
  13.                        (assoc
  14.                            -3
  15.                            (entget
  16.                                (ssname
  17.                                    (ssget "_X"
  18.                                                  (list (cons 69 cvp) (cons 410 (getvar "ctab")))
  19.                                    )
  20.                                    0
  21.                                )
  22.                                '("acad")
  23.                            )
  24.                        )
  25.                   ))
  26.   ))))
写出好东西,别忘了分享!!!!!
发表于 2004-7-8 07:56 | 显示全部楼层
e2002发表于2004-7-7 18:07:00我是想有没有不通过调用command的办法?

我试出来了!只是忘了带,明天补上(就怕又忘了)
发表于 2004-7-8 21:15 | 显示全部楼层
本帖最后由 作者 于 2004-7-9 10:08:34 编辑

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x

评分

参与人数 1威望 +1 金钱 +10 贡献 +5 激情 +5 收起 理由
mccad + 1 + 10 + 5 + 5 【精华】好程序

查看全部评分

发表于 2004-7-12 08:26 | 显示全部楼层
  1. ;;(freeze_lay '("DIM" "HATCH") (car (entsel "\nSelect Viewport: ")))
  2. ;;(freeze_lay <layer list> <Viewport ename>)
  3. ;;BY 龙龙仔(LUCAS)
  4. (defun FREEZE_LAY (LST_1 ENT / ENT2 LST1 LST3 LST NN NEW TYPES VALUES
  5.          DATA  PBJECT)
  6.    (vl-load-com)
  7.    (defun MAKE_VARIANT (X / V)
  8.        (cond
  9.            ((= (type X) 'INT) (vlax-make-variant X 2))
  10.            ((= (type X) 'REAL) (vlax-make-variant X 5))
  11.            ((= (type X) 'STR) (vlax-make-variant X 8))
  12.            ((= (type X) 'VLA-OBJECT) (vlax-make-variant X 9))
  13.            ((and (= (type X) 'list)
  14.          (vl-remove-if-not 'numberp X)
  15.          (setq V (vlax-make-safearray
  16.                vlax-vbdouble
  17.                (cons 0 (1- (length X)))
  18.            )
  19.          )
  20.          (vlax-safearray-fill V X)
  21.              )
  22.              (vlax-make-variant V 8197)
  23.            )
  24.        )
  25.    )   (setq ENT2 (assoc -3 (entget ENT '("ACAD"))))
  26.    (setq  LST1 (reverse
  27.                (cdr (member (cons 1002 "{") (reverse (cdadr ENT2))))
  28.            )
  29.    )
  30.    (setq  LST (mapcar (function (lambda (X) (strcase (cdr X))))
  31.            (vl-remove-if-not
  32.                (function (lambda (X) (= (car X) 1003)))
  33.                (cdadr ENT2)
  34.            )
  35.          )
  36.    )
  37.    (foreach NN LST_1
  38.        (if  (and (tblsearch "layer" NN)
  39.            (not (member (strcase NN) LST))
  40.   )
  41.            (setq LST (append LST (list NN)))
  42.        )
  43.    )
  44.    (setq  LST3 (mapcar (function (lambda (X)
  45.          (cons 1003 X)
  46.                    )
  47.              )
  48.              LST
  49.            )
  50.    )
  51.    (setq  NEW (append (list (cons 1001 "ACAD"))
  52.            LST1
  53.            (list (cons 1002 "{"))
  54.            LST3
  55.            (list (cons 1002 "}"))
  56.            (list (cons 1002 "}"))
  57.          )
  58.    )
  59.    (setq N (1- (length NEW)))
  60.    (setq TYPES (vlax-make-safearray vlax-vbinteger (cons 0 N)))
  61.    (vlax-safearray-fill TYPES (mapcar 'car NEW))
  62.    (setq VALUES (vlax-make-safearray vlax-vbvariant (cons 0 N)))
  63.    (setq
  64.        DATA (mapcar (function (lambda (X) (MAKE_VARIANT (cdr X)))) NEW)
  65.    )
  66.    (vlax-safearray-fill VALUES DATA)
  67.    (setq OBJECT (vlax-ename->vla-object ENT))
  68.    (not
  69.        (vl-catch-all-error-p
  70.            (vl-catch-all-apply
  71.   'vla-setxdata
  72.   (list OBJECT TYPES VALUES)
  73.            )
  74.        )
  75.    )
  76.    (if (= (vla-get-viewporton OBJECT) :vlax-true)
  77.        (progn
  78.            (vla-put-viewporton OBJECT :vlax-false)
  79.            (vla-put-viewporton OBJECT :vlax-true)
  80.        )
  81.    )
  82.    (princ)
  83. )

点评

龙版 解冻的VLA办法可有?  发表于 2013-10-5 09:02
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-4-25 05:55 , Processed in 3.492971 second(s), 34 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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