欲修改属性块文字的颜色
我想从选择到的众多图元中将块中带属性的文字的颜色进行修改;请各位大虾给个思路或lisp源码,先谢了!!! 感谢无痕和meflying;我运行了meflying给的程序,不能执行下去.之后我略做了修改
如下(带*号的语句为我的修改处)
(defun c:tt2 ()<BR> (setq ma (car (entsel)))<BR> (setq bname (cdr (assoc 0 (entget ma))))<BR> (if (= bname "INSERT")<BR> (setq ma (entnext ma)) ;;;******<BR> (while ma ;;;******<BR> (setq mas (entget ma))<BR> (if (assoc 62 mas)<BR> (setq mas (subst (cons 62 5) (assoc 62 mas) mas))<BR> (setq mas (append mas (list (cons 62 5))))<BR> )<BR> (entmod mas)<BR> (setq ma (entnext ma)) ;;;******<BR> )<BR> )<BR> (command "_.regen")<BR> (princ)<BR>)
运行后我发现: 1 程序运行不稳定,只成功了一次;而且还删除了一些无关的图元,
2 无法控制循环只在所选择的块中运行 花溪四如 发表于 2005-7-23 12:52
根本不用这么烦琐,菜单:修改--对象--属性--块属性管理器 即可
修改后,文字颜色是改了,文字位置偏了,这个调整量更大,更不好改 龙龙仔 发表于 2004-2-23 13:52
;;將塊中帶屬性的文字的顏色進行修改
太好用了,非常感谢楼主分享 lsp:
找到insert,entnext取属性
vla:
<P class=Bullet2-end>Block.GetAttributes 附上我的源代码,请各位大虾在指点一二:
(defun c:t2 ()<BR> (setq me (nentsel))<BR> (setq ma (car me ))<BR> (setq bname (cdr(assoc 0 (entget(car(nth 3 me ))))))<BR> (if (= bname "INSERT")<BR> (while ma<BR> (if (= (assoc 0(entget ma)) "ATTDEF")<BR> (command "change" ma "" "p" "c" 5 "")<BR> )<BR> (setq ma (entnext ma))<BR> )<BR> )<BR> )
问题: 1 无法控制循环从块的第一个图元开始
2 没有完成预期目标 while之前也用一次(setq ma (entnext ma))就可以了
仔细比较一下你的程序,看看有那些问题
(defun c:t2 ()<BR> (setq ma (car (entsel)))<BR> (setq bname (cdr (assoc 0 (entget ma))))<BR> (if (= bname "INSERT")<BR> (while (setq ma (entnext ma))<BR> (setq mas (entget ma))<BR> (if (assoc 62 mas)<BR> (setq mas (subst (cons 62 5) (assoc 62 mas) mas))<BR> (setq mas (append mas (list (cons 62 5))))<BR> )<BR> (entmod mas)<BR> )<BR> )<BR> (command "_.regen")<BR> (princ)<BR>) <SPAN style="mso-spacerun: yes">
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; WORD-BREAK: break-all; LINE-HEIGHT: 12pt; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"><FONT size=3><SPAN lang=EN-US style="COLOR: black; FONT-FAMILY: SimSun; mso-fareast-font-family: 新細明體; mso-font-kerning: 0pt; mso-bidi-font-family: 新細明體"><SPAN style="mso-spacerun: yes">;;</SPAN>將塊中帶屬性的文字的顏色進行修改<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p></o:p></FONT>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><FONT face="Times New Roman"><FONT size=3><SPAN style="mso-spacerun: yes"> (defun C:TTT (/ SS N)<o:p></o:p></FONT></FONT></SPAN>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><FONT face="Times New Roman"><FONT size=3><SPAN style="mso-spacerun: yes"> (setq SS (ssget '((0 . "INSERT") (66 . 1)))<o:p></o:p></FONT></FONT></SPAN>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><FONT face="Times New Roman"><FONT size=3><SPAN style="mso-tab-count: 1"> N 0<o:p></o:p></FONT></FONT></SPAN>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><FONT face="Times New Roman"><FONT size=3><SPAN style="mso-spacerun: yes"> )<o:p></o:p></FONT></FONT></SPAN>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><FONT face="Times New Roman"><FONT size=3><SPAN style="mso-spacerun: yes"> (if SS<o:p></o:p></FONT></FONT></SPAN>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><FONT face="Times New Roman"><FONT size=3><SPAN style="mso-spacerun: yes"> (repeat (sslength SS)<o:p></o:p></FONT></FONT></SPAN>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><FONT face="Times New Roman"><FONT size=3><SPAN style="mso-spacerun: yes"> (RIB (ssname SS N) 5)<o:p></o:p></FONT></FONT></SPAN>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><FONT face="Times New Roman"><FONT size=3><SPAN style="mso-spacerun: yes"> (setq N (1+ N))<o:p></o:p></FONT></FONT></SPAN>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><FONT face="Times New Roman"><FONT size=3><SPAN style="mso-spacerun: yes"> )<o:p></o:p></FONT></FONT></SPAN>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><FONT face="Times New Roman"><FONT size=3><SPAN style="mso-spacerun: yes"> )<o:p></o:p></FONT></FONT></SPAN>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><FONT face="Times New Roman"><FONT size=3><SPAN style="mso-spacerun: yes"> (command "_.regen")<o:p></o:p></FONT></FONT></SPAN>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><FONT face="Times New Roman"><FONT size=3><SPAN style="mso-spacerun: yes"> (princ)<o:p></o:p></FONT></FONT></SPAN>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><FONT face="Times New Roman"><FONT size=3>)<o:p></o:p></FONT></FONT>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><o:p><FONT face="Times New Roman" size=3> </FONT></o:p>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><o:p><FONT face="Times New Roman" size=3>;;;我在菜鳥時期</FONT></o:p><FONT size=3><FONT face="Times New Roman">e2002</FONT>版主提供給我的<FONT face="Times New Roman">(</FONT>有關讀取塊中<FONT face="Times New Roman">"attrib"</FONT>物件<FONT face="Times New Roman">)<o:p></o:p></FONT></FONT>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><FONT size=3><FONT face="Times New Roman">;;;----------------------------------------------------------------<o:p></o:p></FONT></FONT>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><FONT size=3><FONT face="Times New Roman">(defun RIB (<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" /><st1:place><st1:City>EN</st1:City> <st1:State>COL</st1:State></st1:place> / ATTRIB-OBJECT-ARRAY ATTRIB-OHJECT-LIST N OB)<o:p></o:p></FONT></FONT>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><FONT size=3><FONT face="Times New Roman"><SPAN style="mso-spacerun: yes"> (setq </SPAN><st1:place>OB</st1:place> (vlax-ename->vla-object EN))<o:p></o:p></FONT></FONT>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><FONT size=3><FONT face="Times New Roman"><SPAN style="mso-spacerun: yes"> (if (and (= (vla-get-objectname </SPAN><st1:place>OB</st1:place>) "AcDbBlockReference")<o:p></o:p></FONT></FONT>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><FONT size=3><FONT face="Times New Roman"><SPAN style="mso-tab-count: 1"> (= (vla-get-hasattributes </SPAN><st1:place>OB</st1:place>) :vlax-true)<o:p></o:p></FONT></FONT>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><FONT size=3><FONT face="Times New Roman"><SPAN style="mso-spacerun: yes"> )<o:p></o:p></FONT></FONT></SPAN>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><FONT size=3><FONT face="Times New Roman"><SPAN style="mso-spacerun: yes"> (progn<o:p></o:p></FONT></FONT></SPAN>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><FONT size=3><FONT face="Times New Roman"><SPAN style="mso-spacerun: yes"> (setq ATTRIB-OBJECT-ARRAY<o:p></o:p></FONT></FONT></SPAN>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><FONT size=3><FONT face="Times New Roman"><SPAN style="mso-tab-count: 1"> (vlax-variant-value<o:p></o:p></FONT></FONT></SPAN>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><FONT size=3><FONT face="Times New Roman"><SPAN style="mso-tab-count: 1"> (vla-getattributes </SPAN><st1:place>OB</st1:place>)<o:p></o:p></FONT></FONT>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><FONT size=3><FONT face="Times New Roman"><SPAN style="mso-tab-count: 1"> )<o:p></o:p></FONT></FONT></SPAN>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><FONT size=3><FONT face="Times New Roman"><SPAN style="mso-tab-count: 1"> ATTRIB-OBJECT-LIST<o:p></o:p></FONT></FONT></SPAN>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><FONT size=3><FONT face="Times New Roman"><SPAN style="mso-tab-count: 1"> (vlax-safearray->list<o:p></o:p></FONT></FONT></SPAN>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><FONT size=3><FONT face="Times New Roman"><SPAN style="mso-tab-count: 1"> ATTRIB-OBJECT-ARRAY<o:p></o:p></FONT></FONT></SPAN>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><FONT size=3><FONT face="Times New Roman"><SPAN style="mso-tab-count: 1"> )<o:p></o:p></FONT></FONT></SPAN>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><FONT size=3><FONT face="Times New Roman"><SPAN style="mso-spacerun: yes"> )<o:p></o:p></FONT></FONT></SPAN>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><FONT size=3><FONT face="Times New Roman"><SPAN style="mso-spacerun: yes"> (setq N 0)<o:p></o:p></FONT></FONT></SPAN>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><FONT size=3><FONT face="Times New Roman"><SPAN style="mso-spacerun: yes"> (repeat (length ATTRIB-OBJECT-LIST)<o:p></o:p></FONT></FONT></SPAN>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><FONT size=3><FONT face="Times New Roman"><SPAN style="mso-tab-count: 1"> (vla-put-color (nth N ATTRIB-OBJECT-LIST) </SPAN><st1:State><st1:place>COL</st1:place></st1:State>)<o:p></o:p></FONT></FONT>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><FONT size=3><FONT face="Times New Roman"><SPAN style="mso-tab-count: 1"> (setq N (1+ N))<o:p></o:p></FONT></FONT></SPAN>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><FONT size=3><FONT face="Times New Roman"><SPAN style="mso-spacerun: yes"> )<o:p></o:p></FONT></FONT></SPAN>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><FONT size=3><FONT face="Times New Roman"><SPAN style="mso-spacerun: yes"> )<o:p></o:p></FONT></FONT></SPAN>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><FONT size=3><FONT face="Times New Roman"><SPAN style="mso-spacerun: yes"> )<o:p></o:p></FONT></FONT></SPAN>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><FONT size=3><FONT face="Times New Roman">)<o:p></o:p></FONT></FONT>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><FONT size=3><FONT face="Times New Roman">;;;----------------------------------------------------------------|;<o:p></o:p></FONT></FONT>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; WORD-BREAK: break-all; LINE-HEIGHT: 12pt; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"></SPAN></SPAN> 问题解决了。
谢谢各位大虾! 为什么只能改为5号色蓝色呢??
不能改为其他的吗? <FONT size=3><FONT face="Times New Roman">(rib ename color)---(RIB (ssname SS N) 5)</FONT></FONT>
<FONT size=3><FONT face="Times New Roman"></FONT></FONT> 根本不用这么烦琐,菜单:修改--对象--属性--块属性管理器 即可
页:
[1]
2