找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1507|回复: 14

[求助] [求助]:更改块内实体颜色问题。

[复制链接]
发表于 2004-12-1 21:50:10 | 显示全部楼层 |阅读模式

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

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

×
我在R14里面,想把某一个图层内的所有块名为“KL”的块全部改成红色(原先是黑色的)。但 是不能把这个块炸开。也就是说要把这个块里所有的实体都改成红颜色的。
请问该怎么编这个程序啊?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2004-12-2 04:25:24 | 显示全部楼层
请参考下面的程序,原程序有点小BUG, 已经改好可用于R14。
[PHP]
;;;Usage: This routine will allow you change the color of a block without having to load the original block.
;;;;;;By: Craig Boggan (c)
;;;Created: September 15, 2001
;;;;;
(defun c:blkclr (/ en count index clr eg1 en1 cnt nm2 en3 eg2 )
    (setvar "cmdecho" 0)
    (prompt "\nSelect blocks that needs color changed: ")
    (setq en (ssget '((0 . "INSERT"))))
    (setq count (sslength en))
    (setq index 0)
    (setq clr (acad_colordlg 7))
    (repeat count
      (setq eg1 (entget (ssname en index)))
      (setq en1 (ssname en index))
      (redraw en1 3)
      (setq en1 nil)
      (setq nam (cdr (assoc 2 eg1)))
      (setq en2 (cdr (assoc -2 (tblsearch "block" nam))))
      (prblk en2 nam)
    )
    (setq index (+ index 1))
  )
  (defun prblk (en2 nam)
    (setq cnt 0)
    (while en2
      (setq cnt        (1+ cnt)
            eg2        (entget en2)
            en2        (entnext (cdr (assoc -1 eg2)))
      )
      (grtext -2 (strcat nam " block entity # " (itoa cnt)))
      (if (= (cdr (assoc 0 eg2)) "insert")
        (progn
          (setq        nm2 (cdr (assoc 2 eg2))
                en3 (cdr (assoc -2 (tblsearch "block" nm2)))
          )
          (prblk en3 nm2)
        )

        (progn
          (if (assoc 62 eg2)
            (setq eg2 (subst (cons 62 clr) (assoc 62 eg2) eg2))
            (setq eg2 (append eg2 (list (cons 62 clr))))
          )
          (entmod eg2)
        )
      )
    )
    (setq ss1 (ssget "x" (list (cons 2 nam)))
          cnt 0
    )
    (while (setq en1 (ssname ss1 cnt))
      (setq cnt (1+ cnt))
      (entupd en1)
    )
    (setvar "cmdecho" 1)
    (princ)
  )
;;;Stop by and visit Craig's Autolisp at http://www.bigswamp
[/PHP]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

发表于 2004-12-2 13:28:32 | 显示全部楼层
关于块中块的问题,我以前编过与此类似的程序。
对于更改块内实体颜色问题(含块中块)我想可以这样解决:首先编写一个更改块内实体颜色的函数abc;遍历图形数据库查找满足1楼楼主要求的块,然后判断找到的块是否嵌套,如果嵌套则用之前定义的函数abc递归调用更改Color,不过嵌套圈数不宜超过4层,否则易引起CAD崩溃!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-12-2 13:52:07 | 显示全部楼层
楼主的程序将图形中所有同名块改变颜色;

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

使用道具 举报

 楼主| 发表于 2004-12-2 22:02:07 | 显示全部楼层
好。谢谢大家。我拿程序回去测试一下。
我的块没有嵌套。
不知道5楼说的是不是事实?你测试过了吗?我就是想一次更改某指定图层里所有指定块名的颜色。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

 楼主| 发表于 2004-12-6 22:20:19 | 显示全部楼层
我试过了,但是好象不能用于图层方式的更改,因为我需要的就是不同的图层这个块的颜色不一样,我试着改了一下程序,但是好象不行。不知道哪位给指点(修改)一二。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-12-6 22:30:40 | 显示全部楼层
块内实体全部改为 0 层,颜色随层就可以实现一个块在不同层显示不同颜色。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-12-7 12:00:14 | 显示全部楼层
1.把BLOCKDEF內物件顏色改為BYBLOCK
2.BLOCKREF(某一個圖層內的所有塊名為“KL”的塊)改為你要的顏色
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-12-7 17:02:54 | 显示全部楼层
该程序不能对文字进行修改吗?我试了一下,不行啊,何故?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-12-7 20:50:45 | 显示全部楼层
我发过一个lsp程序改块内图元特性
http://www.xdcad.net/forum/showt ... 1057263#post1057263
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-12-8 15:42:56 | 显示全部楼层
我曾经发过的
处理完的块可随便改层,色,线形,包括属性部分
纯LIsp
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-12-10 11:16:16 | 显示全部楼层
感謝13樓大大分享這麼實用工具!對了!再請教可以選擇改為層的顏色嗎?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-28 00:36 , Processed in 0.233009 second(s), 61 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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