明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2798|回复: 9

怎么用lisp改变直线的或者文字的颜色呢?

[复制链接]
发表于 2005-5-10 20:57:00 | 显示全部楼层 |阅读模式
(setq a (entget ename))
(setq old (assoc '62 a))
(setq new '(62 . 2))
(subst new a (entget ename)) ;ename是图元的名称,但是lisp下面得到的a没有(62 . 1)的项,如果直接在cad下面 输入这个指令,就可以得到我要的效果,但是写道lisp里面,就返回nil
发表于 2005-5-10 21:10:00 | 显示全部楼层
(subst new old a)
(entmod a)
 楼主| 发表于 2005-5-10 21:19:00 | 显示全部楼层
还是一个结果啊,我单步运行发现old始终没有得到数值


同样的情况,再cad交互界面下就不存在,好奇怪阿,
发表于 2005-5-10 21:21:00 | 显示全部楼层
因为ename图元的颜色是随层的关系,可以这样写: (setq a (entget ename))
(setq old (assoc 62 a))
(setq new '(62 . 2))
(if (= old nil)
(setq a (cons new a))
(setq a (subst new old a))
)
(entmod a)
 楼主| 发表于 2005-5-10 21:39:00 | 显示全部楼层
真得可以了呢,我好好研究一下。激动中~~~谢谢阿
 楼主| 发表于 2005-5-10 21:45:00 | 显示全部楼层
嗯嗯,也就是说,直接把新数据加进去就可以了吧,那我用append也是一样的么,那对于修改过的,我是不是还要注意以下,真是感谢了
发表于 2005-5-10 21:55:00 | 显示全部楼层
何不直接用Command


(command "_.chprop" ename "" "color" 2 "")
发表于 2005-5-10 22:26:00 | 显示全部楼层
实现的方法是很多,比如: (setq ent0 (vlax-Ename->Vla-Object (car (entsel))))
(vla-put-color ent0 2) 也可实现目的
发表于 2005-5-11 00:30:00 | 显示全部楼层
vla-put-color 最方便
发表于 2005-5-11 08:37:00 | 显示全部楼层
秋風和ljpnb的方法都是等效, 說明LISP編程中同樣的目的有幾种不同的寫法, 所以在寫程序時要用腦筋多想花樣, 呵呵. 比如還有修改這個還可以用EMTMOD來. 呵呵. 不過有點長.


在這三種方式中好象束度是差不多吧. 不過有時候調用命令比用VL快. 有時反而慢點,
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-17 06:37 , Processed in 0.185578 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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