按线长区分颜色
《直接点。求大神我写一段LISP代码》选择集:(线,全封闭多线段,圆)
steq H (用户输入)
steq A (用户输入)
IF当 实体线长*H乘积大于A
则 将该实体改为 红色
否则: 将该实体改为 黄色
总结:将选择集中的全部实体,按线长*H
大于某一数值的改为红色
小于某一数值的改为黄色
PS:这是黄金会员求助的问题?(手动捂脸)
(defun c:tt(/ s e h a)
(and(setq s(ssget'((-4 . "<or")(0 . "circle")(-4 . "<and")(0 . "*polyline")(-4 . "&")(70 . 1)(-4 . "and>")(-4 . "or>"))))
(setq h(getreal"倍数"))
(setq a(getreal"乘积"))
(while(setq e(ssname s 0))
(ssdel e s)
(entmod(append(entget e)
(List(cons 62(if(>(*(-(vlax-curve-getdistatparam e(vlax-curve-getendparam e))
(vlax-curve-getdistatparam e(vlax-curve-getstartparam e)))h)a)
1 2)))))))) 本帖最后由 llsheng_73 于 2024-12-25 10:33 编辑
aws 发表于 2024-12-25 09:17
这个(-4 . "&")起到什么作用呢,如果去掉影响吗
"&"相当于logand,(-4 . "&")(70 .1)一起等同于(-4 . "<or")(70 . 1)(70 . 129)(-4 . "or>")
显然,去掉(-4 . "&")后,将只能选择(70 . 1)无法选择(70 . 129)
菜卷鱼 发表于 2024-12-24 16:35
哥哥你通道年龄都11年了,这个平时看看拼拼凑凑都可以出来啊
哈哈。。 你没说错。我以前也非常爱学习,但LISP都放下67年了。。差不多忘记完啦 哥哥你通道年龄都11年了,这个平时看看拼拼凑凑都可以出来啊 菜卷鱼 发表于 2024-12-24 16:35
哥哥你通道年龄都11年了,这个平时看看拼拼凑凑都可以出来啊
纯白嫖怪;P 恭喜你发完这贴成钻石会员了。离星耀越来越近了。 帝都划水王 发表于 2024-12-24 16:44
纯白嫖怪
也不是很纯的哈哈。。。
至少我用中文写了一小部分的嘛
哈哈 llsheng_73 发表于 2024-12-24 18:30
虽然没能达到要求,但谢谢龙大出手相助 ysq101 发表于 2024-12-24 18:38
虽然没能达到要求,但谢谢龙大出手相助
不是"线长乘以倍数大于指定数值改成红色,否则改成黄色"么? 用选择易先选择,然后定义颜色,并不需要小程序啊
页:
[1]
2