质量更改图案填充颜色
我有一个愚蠢的问题,有没有办法用lisp将某个图案填充RGB颜色更改为另一个RGB颜色??
因为我不是只改变1或2种颜色,我需要改变很多RGB的。但幸运的是,对我来说,所有的都是一样的,所以我现在做的只是过滤我需要改变的颜色,并改变它们。。。
问题是,它占用了我很多时间,这就是为什么我要求Lisp程序,
假设我需要将所有红色(255,0,0)图案填充改为灰色(192192),以此类推。。
有人能帮忙吗? 是的,使用lisp很容易,但需要更具体一些。
您是否总是需要从“红色”更改为“灰色”,还是需要选择这两种颜色?
您需要更改所有“红色”图案填充还是只更改一个选择? 是的,我总是需要从红色变为灰色
我只需要从选择中进行更改,以控制需要更改的内容,因为有些内容已经更改,我不希望再次更改
哇,我不知道有那么容易。我认为这是一个很长的机会!但是谢谢你帮助我!
试试这个:
(defun c:Test (/ ss)
(setq ss (ssget '((62 . 1))))
(command "_.Chprop" ss"" "_Color" "_Truecolor" "192,192,192" "")
(princ)
)未测试。 好啊这是代码。这将不断要求更改“红色”图案填充。要退出,请进行空选择(单击屏幕的空白区域。
该代码包括一个局部错误函数,并添加了在一次撤消中撤消所有更改的功能。
它只会将“红色”图案填充的颜色更改为“灰色”。如果舱口不是红色,它将忽略它。
(vl-load-com)
(defun c:r2g ( / *error* c_doc obj)
(defun *error* ( msg )
(if (and c_doc (= 8 (logand 8 (getvar 'UNDOCTL)))) (vla-endundomark c_doc))
(if (not (wcmatch (strcase msg) "*BREAK*,*CANCEL*,*EXIT*")) (princ (strcat "\nOops an Error occurred : " msg)))
(princ)
);end_defun *error*
(setq c_doc (vla-get-activedocument (vlax-get-acad-object)))
(if (and c_doc (= 8 (logand 8 (getvar 'UNDOCTL)))) (vla-endundomark c_doc))
(vla-startundomark c_doc)
(while (setq obj (vlax-ename->vla-object (car (entsel "\nSelect Red Hatch : "))))
(if (and (wcmatch (vlax-get-property obj 'objectname) "*Hatch")
(= (vlax-get-property obj 'color) 1)
);end_and
(vlax-put-property obj 'color 9)
);end_if
);end_while
(if (and c_doc (= 8 (logand 8 (getvar 'UNDOCTL)))) (vla-endundomark c_doc))
(princ)
);end_defun
(princ)
这已经过最低限度的测试
忽略上面的代码,这有点整洁:
(vl-load-com)
(defun c:r2g ( / *error* c_doc ent obj)
(defun *error* ( msg )
(if (and c_doc (= 8 (logand 8 (getvar 'UNDOCTL)))) (vla-endundomark c_doc))
(if (not (wcmatch (strcase msg) "*BREAK*,*CANCEL*,*EXIT*")) (princ (strcat "\nOops an Error occurred : " msg)))
(princ)
);end_defun *error*
(setq c_doc (vla-get-activedocument (vlax-get-acad-object)))
(if (and c_doc (= 8 (logand 8 (getvar 'UNDOCTL)))) (vla-endundomark c_doc))
(vla-startundomark c_doc)
(while (setq ent (car (entsel "\nSelect Red Hatch : ")))
(cond (ent
(setq obj (vlax-ename->vla-object ent))
(if (and (wcmatch (vlax-get-property obj 'objectname) "*Hatch")
(= (vlax-get-property obj 'color) 1)
);end_and
(vlax-put-property obj 'color 9)
);end_if
)
);end_cond
);end_while
(if (and c_doc (= 8 (logand 8 (getvar 'UNDOCTL)))) (vla-endundomark c_doc))
(princ)
);end_defun
(princ) 对就是这个!!!!
哦,先生,如果我想把任何舱口换成绿色,它的RGB像0147,0怎么办
你做的这个Autolisp非常有用!
但我意识到,如果我想将选定的图案填充(无论颜色)更改为RGB(而不是索引颜色),就像我所说的绿色一样,该怎么办?
还是橙色?我的意思是,指数应该是30,对吗?但我需要的是255128,0
嘿我把;上
现在我可以更改所有图案填充!是的!我今天学到了一件新东西!
现在,我如何使用RGB索引颜色?
索引30为255127,0。255127,0和255128,0之间的差异无法区分(见附图),这就是使用索引的原因。基本索引从1到255。如果这还不够好,那么您需要转移到truecolor,并将RGB转换为真彩色索引。Autocad(至少是我的版本)可以使用颜色索引、truecolor索引或配色系统索引,而不是RGB值。取以下代码:
调用“truecolordlg”可能有助于选择颜色?
页:
[1]