明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 6481|回复: 34

一键让我框选到的块颜色全部变成当前颜色(打图需要)

  [复制链接]
发表于 2008-6-5 16:02:00 | 显示全部楼层 |阅读模式
提示: 作者被禁止或删除 内容自动屏蔽
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2008-6-21 16:25:00 | 显示全部楼层

这个程序很有意思,在龙版主的提示下,终于可以完成 12 楼的测试:

本帖子中包含更多资源

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

x
回复 支持 1 反对 0

使用道具 举报

发表于 2008-6-5 16:40:00 | 显示全部楼层
这样就必须改变块定义,改变块定义后,未框选的同名块也会改变,建议楼主定义块的时候将对象的颜色改为ByBlock,这样定义好的块颜色可以随意改变!
 楼主| 发表于 2008-6-5 16:43:00 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2008-6-5 17:08:00 | 显示全部楼层
;;
(defun c:tt (/ ss co i obj bn blks bnlst)
  (if (and (setq ss (ssget '((0 . "insert"))))
           (setq co (acad_colordlg (cond (co) (7))))
      )
    (progn
      ;;取得块名列表
      (repeat (setq i (sslength ss))
        (setq obj (vlax-ename->vla-object (ssname ss (setq i (1- i)))))
        (vla-put-color obj co)
        (setq bn (vla-get-name obj))
        (if (not (member bn bnlst))
          (setq bnlst (cons bn bnlst))
        )
      )
      (setq blks (vla-get-Blocks (vla-get-activedocument (vlax-get-acad-object))))
      (foreach x bnlst
        (vlax-for obj (vla-item blks x) (vla-put-color obj 0))
      )
    )
  )
  (princ)
)
 楼主| 发表于 2008-6-5 17:27:00 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2008-6-6 08:13:00 | 显示全部楼层
caoyin发表于2008-6-5 17:08:00;;(defun c:tt (/ ss co i obj bn blks bnlst)  (if (and (setq ss (ssget '((0 . \"insert\"))))           (setq co (acad_colordl

對各別顏色的屬性,公差,引線應不行吧!

我u盤中有ch_color程序

发表于 2008-6-6 09:01:00 | 显示全部楼层
本帖最后由 作者 于 2008-6-6 10:32:00 编辑

谢龙版主提示,学习了

我搞了半天没搞出来,能否指教一下,谢谢

 楼主| 发表于 2008-6-6 11:12:00 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2008-6-6 16:50:00 | 显示全部楼层
先選顏色,再選物件
发表于 2008-6-7 08:52:00 | 显示全部楼层
;;终于明白了(以前从来都不知道),得到的结论是:
;;块中的引线和公差颜色为 ByBlock ,不随块本身的颜色的变化而变化。
(defun c:ChBlkColor (/ ss co i obj bn bnlst)
  (if (and (setq ss (ssget '((0 . "insert"))))
           (setq co (acad_colordlg 7))
      )
    (progn
      (repeat (setq i (sslength ss))
        (setq obj (vlax-ename->vla-object (ssname ss (setq i (1- i))))
              bn  (vla-get-name obj)
        )
        (vla-put-color obj co)
        (if (and (= (vla-get-ObjectName obj) "AcDbBlockReference")
                 (= (vla-get-HasAttributes obj) :vlax-true)
            )
          (foreach x (vlax-invoke obj 'getattributes)
            (vla-put-color x 0)
          )
        )
        (if (not (member bn bnlst))
          (setq bnlst (cons bn bnlst))
        )
      )
      (setq blks (vla-get-blocks (vla-get-activedocument (vlax-get-acad-object))))
      (foreach x bnlst
        (vlax-for obj (vla-item blks x)
          (if (member (vla-get-ObjectName obj) '("AcDbFcf" "AcDbLeader"))
            (vla-put-color obj co)
            (vla-put-color obj 0)
          )
        )
      )
    )
  )
  (princ)
)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-12-24 07:03 , Processed in 0.212963 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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