明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1353|回复: 5

[求助]求一比较大小的LISP

[复制链接]
发表于 2008-7-13 22:21:00 | 显示全部楼层 |阅读模式

图形中有文字“100”和“200”
现在想对图形中文字进行判断

选取文字,如果文字大于50小于150,则此文字内容变成“A”
如果文字大于150,则此文字内容变成“B”

请问如何把字符串“A”和“B”赋值到文字“100”和“200”中去?

发表于 2008-7-13 22:27:00 | 显示全部楼层
(read "100")或(atoi "100"),即可与50或者150比较大小了。
 楼主| 发表于 2008-7-14 00:25:00 | 显示全部楼层

能否按我的要求写个完整的LISP?
XIEXIE

发表于 2008-7-14 09:29:00 | 显示全部楼层

(read "100")或(atoi "100"),即可与50或者150比较大小了

read 和 atoi 是不行的,假如数字为 50.2

用 atof 比较好

(defun c:tt (/ e a b)
  (while (setq e (car (entsel "\n选择文字: ")))
    (setq e (entget e)
          a (atof (cdr (assoc 1 e)))
    )
    (cond ((> 150 a 50)
           (setq b "A")
          )
          ((> a 150)
           (setq b "B")
          )
    )
    (entmod (subst (cons 1 b) (assoc 1 e) e))
  )
)

发表于 2008-7-14 09:56:00 | 显示全部楼层
少个判断a<50,怎么处理,否则接着上次的b值更新
发表于 2008-7-14 11:10:00 | 显示全部楼层

少个判断a<50,怎么处理,否则接着上次的b值更新

此言极是

(defun c:tt (/ e a b)
  (while (setq e (car (entsel "\n选择文字: ")))
    (setq e (entget e)
          a (atof (cdr (assoc 1 e)))
    )
    (cond ((> 150 a 50)
           (setq b "A")
          )
          ((> a 150)
           (setq b "B")
          )

          (T (setq b nil))
    )
    (if b (entmod (subst (cons 1 b) (assoc 1 e) e)))
  )
)

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-9-21 04:09 , Processed in 0.124015 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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