找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 830|回复: 10

[求助] [求助]:如何用LISP实现数值加一定值

[复制链接]
发表于 2007-7-11 21:08:49 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
如何用LISP实现数值加一定值,比如CAD图中有一数值是3.000,点取后,3.000自动变成5.230.我的想法是把增量2.230写在LISP程序中
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 2个

财富等级: 恭喜发财

发表于 2007-7-12 09:37:02 | 显示全部楼层

  1. ;;;群组码专题
  2. ;;;========================================================
  3. (defun C:TT (/ ADDNUM S1 ENT STR NUM)
  4.     ;;设置常量
  5.     (setq ADDNUM 2.230)
  6.     ;;循环操作
  7.     (while (setq S1 (entsel "\n请点取文本对象: "))
  8.         (setq ENT (entget (car S1)))
  9.         ;;判断是否为文本
  10.         (if (= (cdr (assoc 0 ENT)) "TEXT")
  11.             (progn
  12.                 (setq STR (cdr (assoc 1 ENT)))
  13.                 ;;判断内容是否为数字
  14.                 (if (= (atof STR)
  15.                        (read STR)
  16.                     )
  17.                     (progn

  18.                         ;;计算
  19.                         (setq NUM    (+ (atof STR) ADDNUM)
  20.                               STRNEW (rtos NUM 2 2)
  21.                         )
  22.                         ;;显示
  23.                         (princ (strcat "    "
  24.                                        STR
  25.                                        "+"
  26.                                        (rtos ADDNUM 2 2)
  27.                                        "="
  28.                                        STRNEW
  29.                                )
  30.                         )
  31.                         ;;更新实体
  32.                         (setq ENT (subst (cons 1 STRNEW)
  33.                                          (assoc 1 ENT)
  34.                                          ENT
  35.                                   )
  36.                         )
  37.                         (entmod ENT)
  38.                     )
  39.                     (princ "\n选择的内容不是数字。")
  40.                 )
  41.             )
  42.             (princ "\n选择的对象不是文本。")
  43.         )
  44.     ) ;_结束 while
  45.     (princ)
  46. ) ;_结束 defun

代码完美着色显示见:http://acad.net.cn/viewthread.php?tid=176&extra=page%3D1
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-7-12 10:02:43 | 显示全部楼层
谢谢ZML84.
程序写的很好,
有两个小问题能否在完善一下:
1,    设置常量能否改为键盘输入,并且作为下次的默认值.
2,图中数值如小数点第三位是零,程序运行后小数点后的零消除了,我想保留小数点后三位,不论是否为零.
再次谢谢ZML84
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 2个

财富等级: 恭喜发财

发表于 2007-7-12 11:16:51 | 显示全部楼层
回楼上:
1、a、可以采用getreal函数来输入要运算的数值。
      b、采用全局变量即可实现对上次输入值的记忆。
2、关于小数位数。请注意这个位置

  1.                         ;;计算
  2.                         (setq NUM    (+ (atof STR) ADDNUM)
  3.                               STRNEW (rtos NUM 2 2)
  4.                         )

你可以直接将第二个2改成3,即表示保留三位小数。
另:保留位数也可以作为可输入的全局变量来考虑。
3、这里有几个例子:
http://acad.net.cn/viewthread.php?tid=156&extra=page%3D1
http://acad.net.cn/viewthread.php?tid=172&extra=page%3D1
你可以体会一下,然后修改本帖2楼的代码。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-7-12 11:42:10 | 显示全部楼层
;;计算
                        (setq NUM    (+ (atof STR) ADDNUM)
                              STRNEW (rtos NUM 2 3)
                        )
2改为3后小数位是三位,但当第三位树是零时,数值变成两位,有办法让小数位的零保留吗?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 2个

财富等级: 恭喜发财

发表于 2007-7-12 17:50:31 | 显示全部楼层
[PHP]
_$ (rtos 1.2 2 3)
"1.200"
_$ (rtos 1.230 2 3)
"1.230"
_$ (rtos 1.2300 2 3)
"1.230"
[/PHP]

刚看到这里也有一篇帖子,讨论的同一个问题,参见:http://www.mjtd.com/bbs/dispbbs. ... ID=61257&page=1
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-7-12 19:35:45 | 显示全部楼层
再次谢谢ZML84
我的图中DIMZIN设置在作怪
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2007-7-12 20:45:35 | 显示全部楼层
最初由 szx025 发布
[B]再次谢谢ZML84
[/B]


感觉ZML84是szx025的专业辅导老师
szx025很多的问题都是ZML84解决的
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-7-12 21:04:17 | 显示全部楼层
我也要谢谢TLHMQH,你发来的程序已帮我解决了切除墙线的问题
再次谢谢TLHMQH
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2007-7-12 21:43:54 | 显示全部楼层
谢我就不用了,那也是前些日子练的一小段。
对你的专业不懂,不敢公开回复。既然能有用,我也高兴。
感觉ZML84对你的帖子给了许多帮助。你好学,ZML84乐于助人,我出钱。
ZML84现在虽然是版主,也不能贪污,现在爱心币不多。
ZML84  基础扎实、乐于助人。我也给版主打个进步,替你送给ZML84   200爱心币。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 2个

财富等级: 恭喜发财

发表于 2007-7-13 08:33:00 | 显示全部楼层
能与众多爱好者互相交流,共同进步,实在是件快事!
大家专业各异,但在基本技术上是相通的,希望通过大家共同努力,使cad技术在每个专业都能有奇妙的应用。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-11-17 08:52 , Processed in 0.325826 second(s), 49 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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