求点选一图元,在该图元上的图层被选择,然后颜色变为红色
求点选一图元,在该图元上的图层被选择,然后颜色变为红色 改用 entmod 函数即可Ref:
http://bbs.mjtd.com/thread-43550-1-1.html 颜色变为红色...
是指Layer颜色变为红色 or 已在该 层 图元颜色 变为红色 这个应该很简单吧,先试试这个是不是你要的!命令为lay2red Andyhon 发表于 2012-12-24 08:48 static/image/common/back.gif
颜色变为红色...
是指Layer颜色变为红色 or 已在该 层 图元颜色 变为红色
是被选图层上的图元变红色 Andyhon 发表于 2012-12-24 08:48 static/image/common/back.gif
颜色变为红色...
是指Layer颜色变为红色 or 已在该 层 图元颜色 变为红色
不是图层颜色变为红色,是该图层上的图元颜色变成红色,其它不变 (Defun C:Try ()
(cond
((null (setq ee (entsel "选择要改变颜色变为红色的代表图元: "))))
(T
(command "Chprop"
(ssget "X" (list (cons 8 (cdr (assoc 8 (entget (car ee)))))))
""
"C"
1 ; Red
""
)))
) 来晚了一步!
另类的(随层的对象也改为红色)(DEFUN C:XX( / laname s1)
(SETQ S1 (car(entsel "\n选择实体: ")))
(setq laname (KX-dxf 8 (entget s1)))
(KX-Put-Lay-Col laname 1)
) 这个功能实际上不难,希望楼主能多自己研究下。
提供纯lisp的方法如下:
(defun c:test(/ en ent lay layent a)
(command "_.undo" "_begin")
(setq en (car (entsel "\n选择图层颜色改为红色的代表对象:")));_选择对象
(setq ent (entget en));_对象图元表
(setq lay (cdr (assoc 8 ent)));_获取对象图层名
(setq layent (entget (tblobjname "LAYER" lay)));_获取图层图元表
(if (setq a (assoc 340 layent)) ;_如果存在真彩色
(setq layent (vl-remove a layent)) ;_删除真彩色表
)
(setq layent (subst (cons 62 1) (assoc 62 layent) layent));_图层颜色改为红色
(entmod layent);_更新图层
(entupd (cdr (assoc -1 layent)))
(command "_.undo" "_end")
(princ)
)
不知道为什么要写这个,用好图层管理很容易的事情,建议学习chlh_jd
页:
[1]
2