torcky 发表于 2004-2-18 23:06:00

欲修改属性块文字的颜色

我想从选择到的众多图元中将块中带属性的文字的颜色进行修改;


请各位大虾给个思路或lisp源码,先谢了!!!

torcky 发表于 2004-2-20 20:32:00

感谢无痕和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 无法控制循环只在所选择的块中运行

yankeeliu 发表于 2023-2-3 15:22:36

花溪四如 发表于 2005-7-23 12:52
根本不用这么烦琐,菜单:修改--对象--属性--块属性管理器   即可

修改后,文字颜色是改了,文字位置偏了,这个调整量更大,更不好改

菜鸟初来乍到 发表于 2023-9-1 23:34:23

龙龙仔 发表于 2004-2-23 13:52
;;將塊中帶屬性的文字的顏色進行修改




太好用了,非常感谢楼主分享

无痕 发表于 2004-2-18 23:36:00

lsp:


找到insert,entnext取属性


vla:


<P class=Bullet2-end>Block.GetAttributes

torcky 发表于 2004-2-19 21:15:00

附上我的源代码,请各位大虾在指点一二:


(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 没有完成预期目标

meflying 发表于 2004-2-20 08:39:00

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>)

龙龙仔 发表于 2004-2-23 13:52:00

<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-&gt;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-&gt;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>

torcky 发表于 2004-2-25 19:34:00

问题解决了。


谢谢各位大虾!

yfywk 发表于 2004-12-4 23:14:00

为什么只能改为5号色蓝色呢??


不能改为其他的吗?

龙龙仔 发表于 2004-12-6 12:59:00

<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>

花溪四如 发表于 2005-7-23 12:52:00

根本不用这么烦琐,菜单:修改--对象--属性--块属性管理器   即可
页: [1] 2
查看完整版本: 欲修改属性块文字的颜色