Change Block Color---改变块的颜色

2008-11-08 10:37:49 AM

Change Block Color---改变块的颜色



我把我的"改随层"改了几个字


要是改块中部分实体的颜色呢?


aeo斑竹: 这正是我要写的, 不过只是基本功能:

(defun c:test ()
(l-load-com)
(setq ent (car (entsel)))
(setq obj (lax-ename->la-object ent))
(setq col (acad_colordlg 7))
(lax-for
item
(la-item
(la-get-blocks
(la-get-actiedocument
(lax-get-acad-object)))
(la-get-name obj)
)
(la-put-color item col)
)
)




那就用nentsel 函数:

(defun c:test ()
(l-load-com)
(setq ent (car (nentsel)))
(setq obj (lax-ename->la-object ent))
(setq col (getstring "\nNew Color Number: "))
(la-put-color obj col)
(l-cmdf "regen" "")
)


看不明白





寫個一次點選圖塊多個物件的好嗎?


好像已经有人写了一个该层的程序,可惜没有源代码。




"点选"只能一次点一个呀。 这样行不行? :
(defun c:test ( / ss)
(l-load-com)
(setq col (getstring "\nNew Color Number: "))
(while (setq ent (car (nentsel)))
(setq obj (lax-ename->la-object ent))
(la-put-color obj col)
(l-cmdf "regen" "")
)
)



不错, 增加了"框选". 可你问的是点选呀!------"寫個一次點選圖塊多個物件的好嗎?"
其实, 去除repeat还会更简单:
(defun c:test ( / ss n)
(setq HOLDPICKADD (getar "PICKADD"))
(setar "pickadd" 1)
(prompt "\n点选要改颜色对象...(可多次点选图块内对象)")
(setq LIS (ssnamex (ssget ":N")))
(setq col (getstring "\nNew Color Number: "))
(setar "pickadd" HOLDPICKADD)
(foreach i lis
(if (= (type (cadr i)) 'ENAME)
(la-put-color (lax-ename->la-object (cadr i)) col)
)
)
(l-cmdf "regen")
(princ)
)


能提供文件吗?


看不懂,能提供文件吗?


高手。


应该是好东西(版主奖励了好多爱心币!),厉害,高手!可这些代码要放在哪里呢?又怎么用呢?望指点。


lsjjm,你好,工作中用到了你的不少好东东,
编程偶看不懂,但里面的两个中文字偶还好认识,看了一下好像没有我想要的情况,偶想选中块中的一种颜色如兰色,窗选我想改变颜色的块,将其中的全部兰色变成我想要的颜色。

0 条评论:

发表评论

订阅 帖子评论 [Atom]

<< 主页

0.022115230560303