找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 2690|回复: 13

[LISP程序]:改块颜色的LSP。

[复制链接]
发表于 2006-9-4 18:14:18 | 显示全部楼层 |阅读模式

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

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

×
  1. (defun c:blk_col( / blk blkref blocks doc ent name ss n clo)
  2. (vl-load-com)
  3.   (princ "\n选要改颜色的块: ")
  4. (setq ss (ssget '((0 . "INSERT")))
  5.       n  (sslength ss)
  6. )
  7.   (while (and (setq BLK     (ssname ss (setq n (1- n))))
  8.    (setq BLKREF  (vlax-ename->vla-object BLK))
  9.    (not(and(/= (vla-get-objectname BLKREF) "AcDbBlockReference")
  10.        (princ"\n不是块:"))
  11.     )
  12.        (setq clo (acad_colordlg 7))
  13.    (setq name(vla-get-name BLKREF))
  14.       )
  15.     (progn
  16.           (command"undo""group")
  17.           (setq DOC     (vla-get-activedocument (vlax-get-acad-object))
  18.                 BLOCKS  (vla-get-blocks doc)
  19.          blk     (vla-item BLOCKS name)
  20.           )
  21.            (vlax-for ENT blk
  22.              (vla-put-layer ent "图块")
  23.              (vla-put-color ent clo)
  24.            )
  25.         (vla-regen doc acActiveViewport)
  26.         (vlax-release-object blk)
  27.         (vlax-release-object BLOCKS)
  28.         (vlax-release-object DOC)
  29.         (command"undo""end")
  30.         
  31.      )
  32.   )
  33.   (princ"\nUndo后请regen.")
  34. (princ))


这个程序只能单选,而且需要选色——可不可以改成这样:

不用多次选色(即:可同时选择若干个块,无论是多重块匿名块嵌套块还是属性块),颜色自动改为8号色(不需选色),并把其图层(块内的所有图元)自动归到"图块"层。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 6个

财富等级: 恭喜发财

发表于 2006-9-26 11:55:49 | 显示全部楼层
(defun c:iys ( / blk blkref blocks doc ent name ss n clo)
  (if (> (atoi (substr (getvar "acadver") 1 2)) 14)
    (progn
      (VL-LOAD-COM)
      (setq clo (acad_colordlg 7))
      (while (and
                  (princ (strcat "\n  选要要颜色改为[" (itoa clo) "]的块: <退出> "))
                  (setq ss (ssget (list (cons 0 "insert"))))
             )
        (setq n  (sslength ss))
        (command "_.undo" "be")
        (repeat n
          (setq blk (ssname ss (setq n (1- n))))
          (setq blkref  (vlax-ename->vla-object blk))
          (setq name (vla-get-name blkref))
          (setq doc     (vla-get-activedocument (vlax-get-acad-object))
                blocks  (vla-get-blocks doc)
                blk     (vla-item blocks name)
          )
          (vlax-for ent blk (vla-put-color ent clo))
          (vla-regen doc acactiveviewport)
          (vlax-release-object blk)
          (vlax-release-object blocks)
          (vlax-release-object doc)
          (vlax-release-object blkref)
        );;;repeat;
        (command "_.undo" "e")
      );;;while;
    );;;progn;
    (progn
      (princ "\n  **无法在ACAD14及以下版本中运行(VL-LOAD-COM)!!!请在ACAD2000及以上版本中运行!!!")
    );;;progn;
  );;;if;
  (gc)(redraw)(princ)
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 1 反对 0

使用道具 举报

发表于 2006-9-25 22:32:59 | 显示全部楼层
是啊 建议不错 不知道哪位大虾帮改一下
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

发表于 2006-11-17 12:02:08 | 显示全部楼层
选色的时候,最好能直接参照图中的图元,不要弹对话框。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 4个

财富等级: 恭喜发财

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

使用道具 举报

发表于 2006-11-19 09:06:20 | 显示全部楼层
最初由 formz 发布
[B]砍套的多層次BLOCK沒法改色 [/B]

改为递归调用就可以了!

点评

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

发表于 2015-6-5 09:55:07 | 显示全部楼层
qjcpj 发表于 2006-11-19 09:06
改为递归调用就可以了!

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

使用道具 举报

发表于 2019-11-29 23:16:46 | 显示全部楼层
crtrccrt 发表于 2006-9-26 11:55
(defun c:iys ( / blk blkref blocks doc ent name ss n clo)
  (if (> (atoi (substr (getvar "acadver") ...

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

使用道具 举报

发表于 2019-11-29 23:26:24 | 显示全部楼层
crtrccrt 发表于 2006-9-26 11:55
(defun c:iys ( / blk blkref blocks doc ent name ss n clo)
  (if (> (atoi (substr (getvar "acadver") ...

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-15 04:34 , Processed in 0.486846 second(s), 62 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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