找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 970|回复: 2

[求助]:自动转到别的图层

[复制链接]
发表于 2005-7-24 22:17:57 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
eachy斑主,我想请问你一下!你编的这个程序,希望能再改动一下!就更好用了!问题有几个:1用了这个名字就不可以用U返回命令了,2.有了一个关闭命令,希望能再添加一个打开命令。这样就很完美了.

  1. (if (not ea:savenew)
  2.   (setq        ea:savenew
  3.          (vlr-acdb-reactor
  4.            "Ea-acdb-reactor"
  5.            '((:vlr-objectModified . SaveChangedLyr) ;修改
  6.              (:vlr-objectAppended . SaveChangedLyr) ;添加
  7.             )
  8.          )
  9.   )
  10. )
  11. ;;命令监视器
  12. (if (not ea:chgnew)
  13.   (setq        ea:chgnew
  14.          (vlr-editor-reactor
  15.            nil
  16.            '((:vlr-commandended . ChgModefied) ;图形内绘制
  17.              (:vlr-commandcancelled . ChgModefied)
  18.                                         ;命令中断时检查是否有新实体
  19.              (:vlr-lispEnded . ChgModefied) ;检查Lisp生成的新实体
  20.              (:vlr-lispCancelled . ChgModefied) ;中断后是否有新实体
  21.             )
  22.          )
  23.   )
  24. )
  25. ;;命令回调
  26. (defun ChgModefied (var1 var2 / lyrs lyrlst item doc)
  27.   (setq        lyrs (vla-get-layers
  28.                (setq doc (vla-get-activedocument (vlax-get-acad-object)))
  29.              ) ;_vla-get-layers
  30.   ) ;_setq
  31.   (if HasChangedObject
  32.     (progn
  33.       (vla-startundomark doc)
  34.       (mapcar
  35.         '(lambda (item / name lyr lyrobj)
  36.            (IF (and (not (vlax-erased-p item))
  37.                     (= (type ea:globlelay) 'STR)
  38.                     (vlax-property-available-p item 'layer)
  39.                     (not (vl-catch-all-error-p
  40.                            (vl-catch-all-apply
  41.                              'vla-item
  42.                              (list lyrs ea:globlelay)
  43.                            )
  44.                          )
  45.                     )
  46.                     (/=        (strcase (vla-get-layer item))
  47.                         (strcase ea:globlelay)
  48.                     )
  49.                );_ end and
  50.              (progn

  51.                (if (= (vla-get-lock
  52.                         (setq lyrobj
  53.                                (vla-item lyrs
  54.                                          (setq lyr (vla-get-layer item))
  55.                                )
  56.                         )
  57.                       ) ;_ vla-get-lock
  58.                       :vlax-true
  59.                    ) ;_ =
  60.                  (vla-put-lock lyrobj :vlax-false)
  61.                ) ;_ if
  62.                (vla-put-layer item ea:globlelay) ;change layer
  63.                (vla-put-color item 256)        ;change color to bylayer
  64.              ) ;_ progn
  65.            ) ;_ if
  66.          ) ;_ lambda
  67.         (vl-remove nil
  68.                    (mapcar 'vlax-ename->vla-object
  69.                            HasChangedObject
  70.                    ) ;_ mapcar
  71.         ) ;_ vl-remove
  72.       ) ;_ mapcar
  73.       (vla-endundomark doc)
  74.       (setq HasChangedObject nil)
  75.     ) ;_ progn
  76.   ) ;_ if
  77. )
  78. ;;acdb 回调函数, 保存修改或者新加的实体
  79. (defun SaveChangedlyr (var1 var2 /)
  80.   (if (not HasChangedObject)
  81.     (setq HasChangedObject (list (cadr var2)))
  82.     (setq HasChangedObject
  83.            (append (list (cadr var2)) HasChangedObject)
  84.     ) ;_ setq
  85.   ) ;_ if
  86. ) ;_ end defun
  87. ;;设置修改的图层,使用前请先设定要修改的图层
  88. (defun c:fvv        (/ str lyr)
  89.   (if (setq str (getstring "\n输入转换至图层: "))
  90.     (progn
  91.       (if (not (tblsearch "layer" str))
  92.         (progn
  93.           (setq        lyr
  94.                  (vla-add (vla-get-layers
  95.                             (vla-get-activedocument (vlax-get-acad-object))
  96.                           )
  97.                           str
  98.                  )
  99.           )
  100.           (vla-put-color lyr 6) ;_可以通过图层管理器修改颜色
  101.         )
  102.       )
  103.       (setq ea:globlelay str)
  104.     )
  105.   )
  106.   (princ)
  107. )
  108. (defun c:Removelyr (/)
  109.   (vlr-remove-all)
  110.   (setq        ea:savenew
  111.          nil
  112.         ea:chgnew nil
  113.   )
  114.   (princ "\n\t已取消自动更新图层, 要启用请重新加载本程序!")
  115.   (princ)
  116. )
  117. (princ "\n\t已启用修改自动更新图层功能!")
  118. (defun c:1111 ( / )
  119.   (setq h (getreal "\\n 请输入标号字体的高度h:"))
  120.   (setq bili (getreal "\\n 请输入图纸的比例b:"))
  121.   (setq h1 (* h bili))
  122.   (setq n (getint "\\n 请输入标号的最大值n:"))
  123.   (setq i 1)
  124.   (while (< i n)
  125.     (setq pt (getpoint "\\n 请输入标号的位置pt:"))
  126.     (command "text" "m" pt h1 0 (rtos i 2 0))
  127.     (setq i (+ i 1))
  128.   )
  129. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2014-5-22 20:23:42 | 显示全部楼层
ding ding ding
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 859个

财富等级: 财运亨通

发表于 2014-5-22 22:06:42 来自手机 | 显示全部楼层
1 把最开始的两个 if 包装到一个启用命令中
2 可以把移除函数的 setq 注释掉
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-5-8 12:48 , Processed in 0.424201 second(s), 35 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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