明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 4872|回复: 16

欲修改属性块文字的颜色

  [复制链接]
发表于 2004-2-18 23:06 | 显示全部楼层 |阅读模式
我想从选择到的众多图元中将块中带属性的文字的颜色进行修改;


请各位大虾给个思路或lisp源码,先谢了!!!
 楼主| 发表于 2004-2-20 20:32 | 显示全部楼层
感谢无痕和meflying;我运行了meflying给的程序,不能执行下去.之后我略做了修改 如下(带*号的语句为我的修改处) (defun c:tt2 ()
(setq ma (car (entsel)))
(setq bname (cdr (assoc 0 (entget ma))))
(if (= bname "INSERT")
(setq ma (entnext ma)) ;;;******
(while ma ;;;******
(setq mas (entget ma))
(if (assoc 62 mas)
(setq mas (subst (cons 62 5) (assoc 62 mas) mas))
(setq mas (append mas (list (cons 62 5))))
)
(entmod mas)
(setq ma (entnext ma)) ;;;******
)
)
(command "_.regen")
(princ)
) 运行后我发现: 1 程序运行不稳定,只成功了一次;而且还删除了一些无关的图元, 2 无法控制循环只在所选择的块中运行
发表于 2023-2-3 15:22 | 显示全部楼层
花溪四如 发表于 2005-7-23 12:52
根本不用这么烦琐,菜单:修改--对象--属性--块属性管理器   即可

修改后,文字颜色是改了,文字位置偏了,这个调整量更大,更不好改
发表于 2023-9-1 23:34 | 显示全部楼层
龙龙仔 发表于 2004-2-23 13:52
;;將塊中帶屬性的文字的顏色進行修改

太好用了,非常感谢楼主分享
发表于 2004-2-18 23:36 | 显示全部楼层
lsp:


找到insert,entnext取属性


vla:


< class=Bullet2-end>Block.GetAttributes
 楼主| 发表于 2004-2-19 21:15 | 显示全部楼层
附上我的源代码,请各位大虾在指点一二: (defun c:t2 ()
(setq me (nentsel))
(setq ma (car me ))
(setq bname (cdr(assoc 0 (entget(car(nth 3 me ))))))
(if (= bname "INSERT")
(while ma
(if (= (assoc 0(entget ma)) "ATTDEF")
(command "change" ma "" "p" "c" 5 "")
)
(setq ma (entnext ma))
)
)
) 问题: 1 无法控制循环从块的第一个图元开始 2 没有完成预期目标
发表于 2004-2-20 08:39 | 显示全部楼层
while之前也用一次(setq ma (entnext ma))就可以了 仔细比较一下你的程序,看看有那些问题 (defun c:t2 ()
(setq ma (car (entsel)))
(setq bname (cdr (assoc 0 (entget ma))))
(if (= bname "INSERT")
(while (setq ma (entnext ma))
(setq mas (entget ma))
(if (assoc 62 mas)
(setq mas (subst (cons 62 5) (assoc 62 mas) mas))
(setq mas (append mas (list (cons 62 5))))
)
(entmod mas)
)
)
(command "_.regen")
(princ)
)
发表于 2004-2-23 13:52 | 显示全部楼层

;;將塊中帶屬性的文字的顏色進行修改

(defun C:TTT (/ SS N)

(setq SS (ssget '((0 . "INSERT") (66 . 1)))

N 0

)

(if SS

(repeat (sslength SS)

(RIB (ssname SS N) 5)

(setq N (1+ N))

)

)

(command "_.regen")

(princ)

)

;;;我在菜鳥時期e2002版主提供給我的(有關讀取塊中"attrib"物件)

;;;----------------------------------------------------------------

(defun RIB (EN COL / ATTRIB-OBJECT-ARRAY ATTRIB-OHJECT-LIST N OB)

(setq OB (vlax-ename->vla-object EN))

(if (and (= (vla-get-objectname OB) "AcDbBlockReference")

(= (vla-get-hasattributes OB) :vlax-true)

)

(progn

(setq ATTRIB-OBJECT-ARRAY

(vlax-variant-value

(vla-getattributes OB)

)

ATTRIB-OBJECT-LIST

(vlax-safearray->list

ATTRIB-OBJECT-ARRAY

)

)

(setq N 0)

(repeat (length ATTRIB-OBJECT-LIST)

(vla-put-color (nth N ATTRIB-OBJECT-LIST) COL)

(setq N (1+ N))

)

)

)

)

;;;----------------------------------------------------------------|;

 楼主| 发表于 2004-2-25 19:34 | 显示全部楼层
问题解决了。


谢谢各位大虾!
发表于 2004-12-4 23:14 | 显示全部楼层
为什么只能改为5号色蓝色呢??


不能改为其他的吗?
发表于 2004-12-6 12:59 | 显示全部楼层
(rib ename color)---(RIB (ssname SS N) 5)
发表于 2005-7-23 12:52 | 显示全部楼层
根本不用这么烦琐,菜单:修改--对象--属性--块属性管理器   即可
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-2 02:31 , Processed in 0.222050 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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