明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: print1985

[源码] 图层控制-源码,VL函数,非command,非修改组码

    [复制链接]
 楼主| 发表于 2012-6-11 09:47 | 显示全部楼层
把这句加上(vl-load-com)
亲 以后遇见VL函数都要加哦
发表于 2012-6-11 10:25 | 显示全部楼层
谢谢楼主分享,支持源码。
发表于 2012-6-11 12:34 来自手机 | 显示全部楼层
本帖最后由 smartstar 于 2012-6-11 13:01 编辑

图层锁定没有褪色效果,可否添加此效果。另外可否添加选择图层解除锁定功能。

可扩展功能图片:

本帖子中包含更多资源

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

x
发表于 2012-6-11 12:58 | 显示全部楼层
太感谢了,很好的资料,而且是免费的,谢谢!
 楼主| 发表于 2012-6-11 14:20 | 显示全部楼层
smartstar 发表于 2012-6-11 12:34
图层锁定没有褪色效果,可否添加此效果。另外可否添加选择图层解除锁定功能。

可扩展功能图片:

谢谢,功能会慢慢添加的,因为我自己也要用
褪色你是指的高版本的LAYLOCKFADECTL参数控制的褪色,还是直接改变锁定图层的颜色?
高版本的那个褪色很鸡肋,锁层与解锁切换很慢,有时图纸太大要等半天
直接改变图层颜色也只能改变颜色随层的物体,如果图层多图纸大也慢,因为都需要刷新,只要刷新就慢
发表于 2012-6-11 14:24 来自手机 | 显示全部楼层
本帖最后由 smartstar 于 2012-6-11 14:25 编辑

我指的是LAYLOCKFADECTL参数控制的褪色,锁定褪色可以很直观判断那些图层已经被锁定。
 楼主| 发表于 2012-6-11 16:16 | 显示全部楼层
smartstar 发表于 2012-6-11 14:24
我指的是LAYLOCKFADECTL参数控制的褪色,锁定褪色可以很直观判断那些图层已经被锁定。

先试试
  1. ;自定义命令
  2. (defun c:vs () (tcsd));图层锁定
  3. (defun c:vjs () (tcjs));选择解锁
  4. (defun c:vjq () (tcqbjs));全部解锁
  5. (defun c:vsf () (tcsdf));锁定(反)

  6. ;[图层锁定]
  7. (defun tcsd (/ AcadObject AcadDocument LayersObj ss n i ent ob lay vlay tuise)
  8.        (setq AcadObject (vlax-get-acad-object)
  9.               AcadDocument (vla-get-ActiveDocument AcadObject)
  10.                                        LayersObj (vla-get-layers AcadDocument)
  11.        );end setq
  12.        (princ "\n请选择需要锁定的图层" )
  13.        (if (setq ss (ssget))
  14.               (progn
  15.                      (setq n (sslength ss))
  16.                      (setq i (- n 1))
  17.                      (repeat n
  18.                             (setq ent (ssname ss i)
  19.                                    ob (vlax-ename->vla-object ent)
  20.                                                                     lay (vla-get-layer ob)
  21.                                                                     vlay (vla-item LayersObj lay)
  22.                                                             );end setq
  23.                                                      (vla-put-lock vlay :vlax-true)
  24.                             (setq i (1- i))
  25.                      );end repeat
  26.                                  (setq tuise (getvar "LAYLOCKFADECTL"))
  27.         (setvar "LAYLOCKFADECTL" (* tuise -1))
  28.                                  (setvar "LAYLOCKFADECTL" tuise)
  29.        (princ "\n已锁定选择图层" )
  30.        ));end if
  31.        (princ)
  32. );end defun
  33. ;[图层全部解锁]
  34. (defun tcqbjs (/ AcadObject AcadDocument LayersObj vlay tuise)
  35.        (setq AcadObject (vlax-get-acad-object)
  36.               AcadDocument (vla-get-ActiveDocument AcadObject)
  37.               LayersObj (vla-get-layers AcadDocument)
  38.        );end setq
  39.        (vlax-for vlay LayersObj
  40.               (vla-put-lock vlay :vlax-false)
  41.        );end vlax-for
  42.                                  (setq tuise (getvar "LAYLOCKFADECTL"))
  43.         (setvar "LAYLOCKFADECTL" (* tuise -1))
  44.                                  (vla-regen AcadDocument AcAllViewPorts)
  45.                                  (setvar "LAYLOCKFADECTL" tuise)
  46.        (princ "\n已解锁全部图层" )
  47.        (princ)
  48. );end defun
  49. ;[图层解锁(反)]
  50. (defun tcsdf (/ AcadObject AcadDocument LayersObj ss n i ent ob lay vlay tuise)
  51.        (setq AcadObject (vlax-get-acad-object)
  52.               AcadDocument (vla-get-ActiveDocument AcadObject)
  53.                                        LayersObj (vla-get-layers AcadDocument)
  54.        );end setq
  55.        (princ "\n请选择不需要锁定的图层" )
  56.        (if (setq ss (ssget))
  57.               (progn
  58.                               (vlax-for vlay LayersObj
  59.                             (vla-put-lock vlay :vlax-true)
  60.                      );end vlax-for
  61.                      (setq n (sslength ss))
  62.                      (setq i (- n 1))
  63.                      (repeat n
  64.                             (setq ent (ssname ss i)
  65.                                    ob (vlax-ename->vla-object ent)
  66.                                                                     lay (vla-get-layer ob)
  67.                                                                     vlay (vla-item LayersObj lay)
  68.                                                             );end setq
  69.                                                      (vla-put-lock vlay :vlax-false)
  70.                             (setq i (1- i))
  71.                      );end repeat
  72.                                  (setq tuise (getvar "LAYLOCKFADECTL"))
  73.         (setvar "LAYLOCKFADECTL" (* tuise -1))
  74.                                  (setvar "LAYLOCKFADECTL" tuise)
  75.         (princ "\n已锁定除选择图层外的其余图层" )
  76.        ));end if
  77.        (princ)
  78. );end defun
  79. ;[选择解锁]
  80. (defun tcjs (/ AcadObject AcadDocument LayersObj ss n i ent ob lay vlay tuise lay-tn)
  81.        (setq AcadObject (vlax-get-acad-object)
  82.               AcadDocument (vla-get-ActiveDocument AcadObject)
  83.                                        LayersObj (vla-get-layers AcadDocument)
  84.        );end setq
  85.        (princ "\n请选择需要解锁的图层" )
  86.        (if (setq ss (ssget))
  87.               (progn
  88.                      (setq n (sslength ss))
  89.                      (setq i (- n 1))
  90.                      (repeat n
  91.                             (setq ent (ssname ss i)
  92.                                    ob (vlax-ename->vla-object ent)
  93.                                                                     lay (vla-get-layer ob)
  94.                                                                     vlay (vla-item LayersObj lay)
  95.                                                             );end setq
  96.                                                                                                                                 (if (= (vla-get-lock vlay) :vlax-true)
  97.                                                                                                                                    (progn
  98.                                                      (vla-put-lock vlay :vlax-false)
  99.                                                      (setq lay-tn T)
  100.                                                                                                                                 ))
  101.                             (setq i (1- i))
  102.                      );end repeat
  103.                                  (if lay-tn
  104.                                   (progn
  105.                                    (setq tuise (getvar "LAYLOCKFADECTL"))
  106.           (setvar "LAYLOCKFADECTL" (* tuise -1))
  107.                                    (vla-regen AcadDocument AcAllViewPorts)
  108.                                    (setvar "LAYLOCKFADECTL" tuise)
  109.                                  ))
  110.        (princ "\n已解锁选择图层" )
  111.        ));end if
  112.        (princ)
  113. );end defun
发表于 2012-6-11 17:28 | 显示全部楼层
关于隐藏物体的代码论坛已经比较多了,但有个缺点就是对隐藏物体的显示都是全显。。。
如果可以预览所隐藏的物体是不是更简便易用,更加人性化呢?希望楼主能先搞出来


我想应该是这样的个思路

本帖子中包含更多资源

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

x

点评

这个想法和我一样!  发表于 2013-1-2 00:29
看界面这个工具有个问题,预览隐藏物体只能单选。。。另外,以什么特征可以较明显找到所需要恢复的隐藏物体?  发表于 2012-6-11 23:51
发表于 2012-6-11 17:58 | 显示全部楼层
支持楼主开源
发表于 2012-6-11 18:00 | 显示全部楼层
下了,学习学习!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-4-25 18:12 , Processed in 0.337058 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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