明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 4578|回复: 13

[提问] 求快速修改所有图元颜色的源码

[复制链接]
发表于 2017-9-25 09:03 | 显示全部楼层 |阅读模式
10明经币
求快速修改所有可见图元颜色为 8 的源码,图元包括所有可见未炸开块等

最佳答案

查看完整内容

增加了对属性的支持 不需要选择颜色时可将(setq c (acad_colordlg 8))这行修改为(setq c 8)
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2017-9-25 09:03 | 显示全部楼层
本帖最后由 vectra 于 2017-9-26 11:44 编辑

增加了对属性的支持
不需要选择颜色时可将(setq c (acad_colordlg 8))这行修改为(setq c 8)
  1. (defun c:resetcolor (/ c)
  2.   (setq c (acad_colordlg 8))

  3.   (if c
  4.     (vlax-for block (vla-get-blocks
  5.                       (vla-get-activedocument (vlax-get-acad-object))
  6.                     )
  7.       (vlax-for        ent block
  8.         (vl-catch-all-apply 'vla-put-color (list ent c))

  9.         ;; 增加对参照中属性的处理
  10.         (if (and (= "AcDbBlockReference" (vla-get-objectname ent))
  11.                  (= :vlax-true (vla-get-hasattributes ent))
  12.             )
  13.           (foreach att (vlax-safearray->list
  14.                          (vlax-variant-value (vla-getattributes ent))
  15.                        )
  16.             (vla-put-color att c)
  17.           )
  18.         )
  19.       )
  20.     )
  21.   )
  22.   (princ)
  23. )
回复

使用道具 举报

发表于 2017-9-25 09:05 | 显示全部楼层
  1. (defun c:resetcolor (/ c)
  2.   (setq c (acad_colordlg 8))

  3.   (if c
  4.     ;; 嵌套块的情况,是块表记录里有一个Ref对象,不存在Block对象中有Block存在的情况
  5.     (vlax-for block (vla-get-blocks
  6.                       (vla-get-activedocument (vlax-get-acad-object))
  7.                     )
  8.       (vlax-for        e block
  9.         (vl-catch-all-apply 'vla-put-color (list e c))
  10.       )
  11.     )
  12.   )
  13.   (princ)
  14. )
回复

使用道具 举报

 楼主| 发表于 2017-9-25 11:32 | 显示全部楼层
请问部分属性块好修修改不成功,这个有办法么

能不能默认修改颜色8,不弹出颜色选择框

谢谢
回复

使用道具 举报

发表于 2017-9-26 08:35 | 显示全部楼层
感谢 vectra 分享学习!!!!!
回复

使用道具 举报

发表于 2017-9-26 09:54 | 显示全部楼层
测试中发现的问题还有:不能处理锁定图层上的对象。考虑到保持代码简单,处理之前先手动解锁全部图层吧。
回复

使用道具 举报

 楼主| 发表于 2017-9-26 10:46 | 显示全部楼层
非常感谢
回复

使用道具 举报

发表于 2018-12-22 13:37 | 显示全部楼层
vectra 发表于 2017-9-26 09:54
测试中发现的问题还有:不能处理锁定图层上的对象。考虑到保持代码简单,处理之前先手动解锁全部图层吧。

非常好用,谢谢长老分享。
如果我只想更改选定的图元(包括块、属性等),应该怎么修改代码呢?
回复

使用道具 举报

发表于 2020-3-28 21:29 | 显示全部楼层

大神代码非常好用,谢谢。
回复

使用道具 举报

发表于 2020-4-1 23:03 | 显示全部楼层
现在是所有的图都改颜色了。
如果改变颜色的对象要自己选择,要修改哪里呢?
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-6-26 12:07 , Processed in 0.142793 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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