乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 55|回复: 7

[编程交流] 质量更改图案填充颜色

[复制链接]

66

主题

180

帖子

119

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
341
发表于 2022-7-5 13:17:14 | 显示全部楼层 |阅读模式
我有一个愚蠢的问题,
有没有办法用lisp将某个图案填充RGB颜色更改为另一个RGB颜色??
因为我不是只改变1或2种颜色,我需要改变很多RGB的。但幸运的是,对我来说,所有的都是一样的,所以我现在做的只是过滤我需要改变的颜色,并改变它们。。。
问题是,它占用了我很多时间,这就是为什么我要求Lisp程序,
假设我需要将所有红色(255,0,0)图案填充改为灰色(192192),以此类推。。
有人能帮忙吗?
回复

使用道具 举报

0

主题

946

帖子

978

银币

限制会员

铜币
-3
发表于 2022-7-5 13:28:33 | 显示全部楼层
是的,使用lisp很容易,但需要更具体一些。
 
您是否总是需要从“红色”更改为“灰色”,还是需要选择这两种颜色?
 
您需要更改所有“红色”图案填充还是只更改一个选择?
回复

使用道具 举报

66

主题

180

帖子

119

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
341
发表于 2022-7-5 13:41:11 | 显示全部楼层
是的,我总是需要从红色变为灰色
 
我只需要从选择中进行更改,以控制需要更改的内容,因为有些内容已经更改,我不希望再次更改
 
哇,我不知道有那么容易。我认为这是一个很长的机会!但是谢谢你帮助我!
 
 
回复

使用道具 举报

20

主题

81

帖子

61

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
100
发表于 2022-7-5 13:47:27 | 显示全部楼层
试试这个:
  1. (defun c:Test (/ ss)
  2.   (setq ss (ssget '((62 . 1))))
  3.   (command "_.Chprop" ss"" "_Color" "_Truecolor" "192,192,192" "")
  4.   (princ)
  5.   )
未测试。
回复

使用道具 举报

0

主题

946

帖子

978

银币

限制会员

铜币
-3
发表于 2022-7-5 13:59:18 | 显示全部楼层
好啊这是代码。这将不断要求更改“红色”图案填充。要退出,请进行空选择(单击屏幕的空白区域。
 
该代码包括一个局部错误函数,并添加了在一次撤消中撤消所有更改的功能。
 
它只会将“红色”图案填充的颜色更改为“灰色”。如果舱口不是红色,它将忽略它。
 
  1. (vl-load-com)
  2. (defun c:r2g ( / *error* c_doc obj)
  3.         (defun *error* ( msg )
  4.                 (if (and c_doc (= 8 (logand 8 (getvar 'UNDOCTL)))) (vla-endundomark c_doc))
  5.     (if (not (wcmatch (strcase msg) "*BREAK*,*CANCEL*,*EXIT*")) (princ (strcat "\nOops an Error occurred : " msg)))
  6.                 (princ)
  7.   );end_defun *error*
  8.         (setq c_doc (vla-get-activedocument (vlax-get-acad-object)))
  9.         (if (and c_doc (= 8 (logand 8 (getvar 'UNDOCTL)))) (vla-endundomark c_doc))
  10.   (vla-startundomark c_doc)
  11.   (while (setq obj (vlax-ename->vla-object (car (entsel "\nSelect Red Hatch : "))))
  12.     (if (and (wcmatch (vlax-get-property obj 'objectname) "*Hatch")
  13.              (= (vlax-get-property obj 'color) 1)
  14.         );end_and
  15.         (vlax-put-property obj 'color 9)
  16.     );end_if
  17.   );end_while
  18.         (if (and c_doc (= 8 (logand 8 (getvar 'UNDOCTL)))) (vla-endundomark c_doc))
  19.   (princ)
  20. );end_defun
  21. (princ)

这已经过最低限度的测试
回复

使用道具 举报

0

主题

946

帖子

978

银币

限制会员

铜币
-3
发表于 2022-7-5 14:00:44 | 显示全部楼层
 
忽略上面的代码,这有点整洁:
 
  1. (vl-load-com)
  2. (defun c:r2g ( / *error* c_doc ent obj)
  3.         (defun *error* ( msg )
  4.                 (if (and c_doc (= 8 (logand 8 (getvar 'UNDOCTL)))) (vla-endundomark c_doc))
  5.     (if (not (wcmatch (strcase msg) "*BREAK*,*CANCEL*,*EXIT*")) (princ (strcat "\nOops an Error occurred : " msg)))
  6.                 (princ)
  7.   );end_defun *error*
  8.         (setq c_doc (vla-get-activedocument (vlax-get-acad-object)))
  9.         (if (and c_doc (= 8 (logand 8 (getvar 'UNDOCTL)))) (vla-endundomark c_doc))
  10.   (vla-startundomark c_doc)
  11.   (while (setq ent (car (entsel "\nSelect Red Hatch : ")))
  12.     (cond (ent  
  13.             (setq obj (vlax-ename->vla-object ent))
  14.             (if (and (wcmatch (vlax-get-property obj 'objectname) "*Hatch")
  15.                      (= (vlax-get-property obj 'color) 1)
  16.                 );end_and
  17.                 (vlax-put-property obj 'color 9)
  18.             );end_if
  19.           )
  20.     );end_cond      
  21.   );end_while
  22.         (if (and c_doc (= 8 (logand 8 (getvar 'UNDOCTL)))) (vla-endundomark c_doc))
  23.   (princ)
  24. );end_defun
  25. (princ)
回复

使用道具 举报

66

主题

180

帖子

119

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
341
发表于 2022-7-5 14:10:43 | 显示全部楼层
对就是这个!!!!
哦,先生,如果我想把任何舱口换成绿色,它的RGB像0147,0怎么办
你做的这个Autolisp非常有用!
但我意识到,如果我想将选定的图案填充(无论颜色)更改为RGB(而不是索引颜色),就像我所说的绿色一样,该怎么办?
还是橙色?我的意思是,指数应该是30,对吗?但我需要的是255128,0
 
嘿我把;上
现在我可以更改所有图案填充!是的!我今天学到了一件新东西!
现在,我如何使用RGB索引颜色?
回复

使用道具 举报

0

主题

946

帖子

978

银币

限制会员

铜币
-3
发表于 2022-7-5 14:18:41 | 显示全部楼层
 
 
索引30为255127,0。255127,0和255128,0之间的差异无法区分(见附图),这就是使用索引的原因。基本索引从1到255。如果这还不够好,那么您需要转移到truecolor,并将RGB转换为真彩色索引。Autocad(至少是我的版本)可以使用颜色索引、truecolor索引或配色系统索引,而不是RGB值。取以下代码:
 
调用“truecolordlg”可能有助于选择颜色?
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-15 00:44 , Processed in 1.827275 second(s), 68 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表