ysq101 发表于 前天 15:43

按线长区分颜色

《直接点。求大神我写一段LISP代码》
选择集:(线,全封闭多线段,圆)

steq H (用户输入)
steq A (用户输入)

IF当 实体线长*H乘积大于A

则   将该实体改为 红色
否则: 将该实体改为 黄色


总结:将选择集中的全部实体,按线长*H
大于某一数值的改为红色
小于某一数值的改为黄色

PS:这是黄金会员求助的问题?(手动捂脸)

llsheng_73 发表于 前天 18:30

(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 发表于 昨天 10:23

本帖最后由 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)

ysq101 发表于 前天 18:33

菜卷鱼 发表于 2024-12-24 16:35
哥哥你通道年龄都11年了,这个平时看看拼拼凑凑都可以出来啊

哈哈。。 你没说错。我以前也非常爱学习,但LISP都放下67年了。。差不多忘记完啦

菜卷鱼 发表于 前天 16:35

哥哥你通道年龄都11年了,这个平时看看拼拼凑凑都可以出来啊

帝都划水王 发表于 前天 16:44

菜卷鱼 发表于 2024-12-24 16:35
哥哥你通道年龄都11年了,这个平时看看拼拼凑凑都可以出来啊

纯白嫖怪;P

yanshengjiang 发表于 前天 17:19

恭喜你发完这贴成钻石会员了。离星耀越来越近了。

ysq101 发表于 前天 18:34

帝都划水王 发表于 2024-12-24 16:44
纯白嫖怪

也不是很纯的哈哈。。。

至少我用中文写了一小部分的嘛

哈哈

ysq101 发表于 前天 18:38

llsheng_73 发表于 2024-12-24 18:30


虽然没能达到要求,但谢谢龙大出手相助

llsheng_73 发表于 前天 18:50

ysq101 发表于 2024-12-24 18:38
虽然没能达到要求,但谢谢龙大出手相助

不是"线长乘以倍数大于指定数值改成红色,否则改成黄色"么?

puzb2023 发表于 昨天 09:09

用选择易先选择,然后定义颜色,并不需要小程序啊
页: [1] 2
查看完整版本: 按线长区分颜色