找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1342|回复: 11

[编程申请]:一个能图块改色的程序等你来

[复制链接]
发表于 2005-8-26 09:50:17 | 显示全部楼层 |阅读模式

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

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

×
实际设计中有许多图块更本无法改色,如果要改也只能炸开后,改色,再定义块,这样很麻烦,如果能一步就实现这个过程,就好了,有的LISP
只能改一些线的色,但这些软件更本没有用,CAD自己都可以改,一样方便

现在的软件,如HCAD,规划工具包等能实现,但我是用天正,要在软件之间切换也很麻烦,如果能这一个LISP程序,就太好了,大家来挑战吧,或许对自己编程也是个好处哦

所以:一个能图块改色的程序等你来

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

使用道具 举报

发表于 2005-8-26 12:27:48 | 显示全部楼层
search
change color of block lisp
in google, 得到如下地址

http://www.cadresource.com/library/lisptz.html

UPDBLOCK.ZIP          4K          This routine allows the user to update the color of all entities within a block to a single color (eg: color=BYLAYER) without the user having to explode the symbol.

可以实现您的目的

一般google一些简单的lisp都能找到的

;****************************************************************************************
;        UPDATE BLOCK COLOR (updblkcl.lsp)
;        PRE-INSERTED BLOCK DEFINITION CLEAN-UP UTILITY
;
;        This routine is especially usefull to redefine pre-inserted blocks whose
;        entity colors need to be changed to BYLAYER.
;
;       This routine allows the user to update the color of
;        all entities within a block to a single color (exam: color=BYLAYER)
;        without the user having to explode the symbol.  By default the layer name of
;        all entities are NOT changed. The routine changes the original
;        definition of the block within the current drawing.
;       
;        To use this routine the user is asked to specify a single
;        color to place all entities of a selected block(s).
;
;        The user is next prompted to select one or more blocks to update. The routine
;        then redefines all entities of the block to the color specified.
;
;        When the user regenerates the drawing she/he will find that all
;        occurances of the block have been redefined.  This is because the
;        original definition of the block is changed!!!
;
;       by CAREN LINDSEY, July 1996
;****************************************************************************************
;

;INTERNAL ERROR HANDLER
(defun err-ubc (s)                                ; If an error (such as CTRL-C) occurs
                                                ; while this command is active...
        (if (/= s "Function cancelled")
                  (princ (strcat "\nError: " s))
        )
        (setq *error* olderr)                        ; Restore old *error* handler
        (princ)
);err-ubc

(DEFUN C:UPDBLKCL (/ BLK CBL CBL2 C ACL ALY NLY NCL)

        (setq olderr *error* *error* err-ubc)
        (initget "?")
        (while
                (or (eq (setq C (getint "\nEnter new color number/<?>: ")) "?")
                    (null C)
                    (> C 256)
                    (< C 0)
                );or
                (textscr)
                (princ "\n                                                     ")
                (princ "\n                 Color number   |   Standard meaning ")
                (princ "\n                ________________|____________________")
                (princ "\n                                |                    ")
                (princ "\n                       0        |      <BYBLOCK>     ")
                (princ "\n                       1        |      Red           ")
                (princ "\n                       2        |      Yellow        ")
                (princ "\n                       3        |      Green         ")
                (princ "\n                       4        |      Cyan          ")
                (princ "\n                       5        |      Blue          ")
                (princ "\n                       6        |      Magenta       ")
                (princ "\n                       7        |      White         ")
                (princ "\n                    8...255     |      -Varies-      ")
                (princ "\n                      256       |      <BYLAYER>     ")
                (princ "\n                                               \n\n\n")
                (initget "?")
        );while


        (PROMPT "\nPick blocks to update. ")

        (SETQ SS (SSGET '((0 . "INSERT"))))
        (SETQ K 0)
        (WHILE (< K (SSLENGTH SS))
                (setq CBL (tblsearch "BLOCK" (CDR (ASSOC 2 (ENTGET (SETQ BLK (SSNAME SS K)))))))
                (SETQ CBL2 (CDR (ASSOC -2 CBL)))
                (WHILE (BOUNDP 'CBL2)
                        (SETQ EE (ENTGET CBL2))

                        ;Update layer value
                        (SETQ NCL (CONS 62 C))
                        (SETQ ACL (ASSOC 62 EE))
                        (IF (= ACL nil)
                                (SETQ NEWE (APPEND EE (LIST NCL)))
                                (SETQ NEWE (SUBST NCL ACL EE))
                        );if
                        (ENTMOD NEWE)

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

使用道具 举报

已领礼包: 194个

财富等级: 日进斗金

发表于 2005-8-26 12:31:30 | 显示全部楼层
有很多图块必须炸开后才能改色,这个程序不知道可不可以,下载试一试!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-8-26 13:28:31 | 显示全部楼层
二楼的那个程序不理想,基本上不能改色,很多图块无法改到指定的色,但我还是要谢谢
建议去看HCAD,的图块改色功能,能做到那种地步,就算成功了,谢谢
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-8-26 22:09:55 | 显示全部楼层
最初由 my_autocad 发布
[B]二楼的那个程序不理想,基本上不能改色,很多图块无法改到指定的色,但我还是要谢谢
建议去看HCAD,的图块改色功能,能做到那种地步,就算成功了,谢谢 [/B]

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

使用道具 举报

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

使用道具 举报

 楼主| 发表于 2005-8-27 09:45:41 | 显示全部楼层
三楼的程序还是好用哈,如果能有七楼的程序那就更好了,谢谢大家,七楼的兄弟能不能把你的程序传上来呀
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 59个

财富等级: 招财进宝

发表于 2005-9-23 01:33:48 | 显示全部楼层
生成块之前把要组成块的物体的颜色改为BYBLOCK,再生成块,可以随便改颜色的呀,不用编程序吧!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

使用道具 举报

发表于 2005-9-23 19:04:57 | 显示全部楼层
将3楼的程序改成7楼的模式

(DEFUN C:UPDBLKCL (/ BLK CBL CBL2 C ACL ALY NLY NCL)
  (PROMPT "\n选择要改颜色的块:")
  (SETQ SS (SSGET '((0 . "INSERT"))))
  (if (/= ss nil)
    (progn
      (setq C (acad_colordlg 3))
      (if (/= c nil)
        (progn
          (SETQ K 0)
          (WHILE (< K (SSLENGTH SS))
            (setq
              CBL (tblsearch
                    "BLOCK"
                    (CDR (ASSOC 2 (ENTGET (SETQ BLK (SSNAME SS K)))))
                  )
            )
            (SETQ CBL2 (CDR (ASSOC -2 CBL)))
            (WHILE (BOUNDP 'CBL2)
              (SETQ EE (ENTGET CBL2))
              (SETQ NCL (CONS 62 C))
              (SETQ ACL (ASSOC 62 EE))
              (IF (= ACL nil)
                (SETQ NEWE (APPEND EE (LIST NCL)))
                (SETQ NEWE (SUBST NCL ACL EE))
              )
              (ENTMOD NEWE)
              (SETQ CBL2 (ENTNEXT CBL2))
            )
            (ENTUPD BLK)
            (SETQ K (1+ K))
          )
        )
      )
    )
  )
  (princ)
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-28 14:15 , Processed in 0.276929 second(s), 55 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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