找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 3396|回复: 7

[教学] 命令反应器(标注和填充自动归层)

[复制链接]

已领礼包: 593个

财富等级: 财运亨通

发表于 2014-11-22 15:28:56 | 显示全部楼层 |阅读模式

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

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

×
早先的一个程序,很简单,执行 Dim  Hatch 命令前设置到特定图层
  1. ;;设置当前图层
  2. (defun Reactor:SetLayer        (name / lay)
  3.   (setq retlay (getvar "clayer"))
  4.   (if (tblsearch "layer" name)
  5.     (progn
  6.       (setq lay
  7.              (vla-item (vla-get-layers
  8.                          (vla-get-activedocument (vlax-get-acad-object))
  9.                        )
  10.                        name
  11.              )
  12.       )
  13.       (if (= :vlax-True (vla-get-lock lay))
  14.         (progn
  15.           (setq $laylock :vlax-True)
  16.           (vla-put-lock lay :vlax-False)
  17.         )
  18.       )
  19.       (if (= :vlax-False
  20.              (vla-get-layeron lay)
  21.           )
  22.         (progn
  23.           (setq $layon :vlax-false)
  24.           (vla-put-layeron lay :vlax-true)
  25.         )
  26.       )
  27.       (if (= :vlax-True (vla-get-Freeze lay))
  28.         (progn
  29.           (setq $layfrz :vlax-true)
  30.           (vla-put-Freeze lay :vlax-false)
  31.         )
  32.       )
  33.       (vla-put-activelayer
  34.         (vla-get-activedocument (vlax-get-acad-object))
  35.         lay
  36.       )
  37.     )
  38.     (progn
  39.       (vla-add (vla-get-layers
  40.                  (vla-get-activedocument (vlax-get-acad-object))
  41.                )
  42.                name
  43.       )
  44.       (vla-put-activelayer
  45.         (vla-get-activedocument (vlax-get-acad-object))
  46.         (vla-item (vla-get-layers
  47.                     (vla-get-activedocument (vlax-get-acad-object))
  48.                   )
  49.                   name
  50.         )
  51.       )
  52.     )
  53.   )
  54. )
  55. ;;命令结束或者中断后恢复图层状态
  56. ;;;upon completion of command restores *layers* to previous state
  57. (defun Reactor:Restorelayer (reactor info / cmd layobj)
  58.   (setq cmd (car info))
  59.   (if
  60.     (and
  61.       (wcmatch
  62.         (strcase cmd)
  63.         "*DIM,*DIMLINEAR,*DIMALIGNED,*DIMORDINATE,*DIMRADIUS,*DIMDIAMETER,*DIMANGULAR,*DIMBASELINE,*DIMCONTINUE,*QDIM,*LEADER,*QLEADER,*HATCH"
  64.       )
  65.       retlay
  66.     )
  67.      (progn
  68.        (vla-setvariable
  69.          (vla-get-activedocument (vlax-get-acad-object))
  70.          "clayer"
  71.          retlay
  72.        )
  73.        (if $layon
  74.          (vla-put-LayerOn layoff 0) ;_turn it off again
  75.        )
  76.        (if $layfrz
  77.          (vla-put-Freeze layfreeze 1) ;_freeze it again
  78.        ) ;_end if
  79.        (if $laylock
  80.          (vla-put-Lock laylock 1) ;_Lock it again
  81.        ) ;_end if
  82.        (setq $layon nil
  83.              $layfrz nil
  84.              $laylock nil
  85.              retlay nil
  86.        )
  87.      )
  88.   )
  89. )
  90. ;;命令开始设置当前图层
  91. (defun Reactor:Autolayer (reactor info / cmd)
  92.   (setq cmd (strcase (car info))) ;_ get command name
  93.   (cond
  94.     ((wcmatch cmd "*HATCH") ;_is the command "*hatch"?
  95.      (Reactor:SetLayer "HATCH") ;_填充图层
  96.     )
  97.     ((wcmatch
  98.        (strcase (car info))
  99.        "*DIM,*DIMLINEAR,*DIMALIGNED,*DIMORDINATE,*DIMRADIUS,*DIMDIAMETER,*DIMANGULAR,*DIMBASELINE,*DIMCONTINUE,*QDIM,*LEADER,*QLEADER"
  100.      )
  101.      (Reactor:SetLayer "DIM") ;_标注图层
  102.     )
  103.     (t)
  104.   )
  105. )
  106. (if (not ea:Hatch_Dim_reactor)
  107.   (setq        ea:Hatch_Dim_reactor
  108.          (VLR-Command-reactor
  109.            nil
  110.            '((:VLR-commandWillStart . Reactor:Autolayer) ;_命令开始执行
  111.              (:VLR-commandEnded . Reactor:Restorelayer) ;_命令结束执行
  112.              (:VLR-commandCancelled . Reactor:Restorelayer) ;_命令中断执行
  113.             )
  114.          )
  115.   )
  116. )
  117. (princ)

评分

参与人数 1D豆 +5 收起 理由
lucas3 + 5 技术引导讨论和指点奖!

查看全部评分

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 604个

财富等级: 财运亨通

发表于 2014-11-22 16:16:53 来自手机 | 显示全部楼层
其它可以类推了,向站长学习
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2014-11-25 03:05:40 | 显示全部楼层
记得是以前很早就写了的吧
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2015-1-20 14:23:14 | 显示全部楼层
最近研究反应器 来学习学习
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2015-2-26 12:19:08 | 显示全部楼层
最近研究反应器 来学习学习:):)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 3个

财富等级: 恭喜发财

发表于 2019-10-20 19:25:20 | 显示全部楼层
这个如何运行呢?
命令: ap APPLOAD 已成功加载 4.lsp。
命令: ; 错误: 读入的 (八进制) 字符不正确: 0
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2020-2-5 22:42:04 | 显示全部楼层
好程序 ,好好学习
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 51个

财富等级: 招财进宝

发表于 2020-3-6 07:33:01 | 显示全部楼层
学习了,感谢分享
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-14 20:28 , Processed in 0.335650 second(s), 43 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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