找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1275|回复: 5

[求助] [求助]:帮改一个lisp程序

[复制链接]
发表于 2008-5-5 16:46:25 | 显示全部楼层 |阅读模式

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

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

×
(defun C:TTA(/ oldos sel len dataarea count e1 dat sumarea allarea pt)
(setq olderr *error*)
(setq *error* myerr)
(setvar "cmdecho" 0)
(setq oldos (getvar "osmode"))
(setvar "osmode" 0)
(setq sel (ssget))
(setq floor (GETINT "\n输入层数(整数):"))
(setq len (sslength sel))
(setq dataarea nil)
(setq count 0)
(while (< count len)
  (setq e1 (entget (ssname sel count)))
  (if (=  "TEXT" (cdr (assoc 0 e1)))
   (progn
    (setq dat (cdr (assoc 1 e1)))
    (setq dataarea (append (list (atof dat)) dataarea))
   )
  )
  (setq count (+ 1 count))
)
;;;;
(setq sumarea 0)
(setq len (length dataarea))
(setq count 0)
(while (< count len)
  (setq dat (car dataarea))
  (setq dataarea (cdr  dataarea))
  (setq sumarea (+ sumarea dat))
  (setq count (+ 1 count))
)
(setq allarea (* floor sumarea))
(setq allarea (rtos allarea 2 2))
(setq sumarea (rtos sumarea 2 2))
;;;;
(setq pt (getpoint "\nPick point:"))
(command "text" pt "" "" (strcat "基底面积(" (rtos floor 2 0) "层):"))
(setq mm (entget (entlast)))
(setq old (assoc 8 mm))
(setq mm (subst (cons 8 "00") old mm))
(entmod mm)  
(command "text" (list (+ (* 9 (getvar "textsize"))(car pt)) (cadr pt)) "" "" sumarea)
(setq pt1 (list (car pt) (- (cadr pt) (* 1.2 (getvar "textsize")))))
(setq mm (entget (entlast)))
(setq old (assoc 8 mm))
(setq mm (subst (cons 8 "00") old mm))
(entmod mm)
(command "text" pt1 "" "" (strcat "建筑面积(" (rtos floor 2 0) "层):"))
(setq mm (entget (entlast)))
(setq old (assoc 8 mm))
(setq mm (subst (cons 8 "00") old mm))
(entmod mm)  
(command "text" (list (+ (* 9(getvar "textsize"))(car pt1)) (cadr pt1)) "" "" allarea)
(setq mm (entget (entlast)))
(setq old (assoc 8 mm))
(setq mm (subst (cons 8 "00") old mm))
(entmod mm)
(setvar "osmode" oldos)
(setvar "cmdecho" 1)
(setq *error* olderr)
(princ)
)

里面要求输入的层数为"整数"能不能改成不一定是整数
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 7229个

财富等级: 富甲天下

发表于 2008-5-5 17:51:49 | 显示全部楼层
(setq floor (GETINT "\n输入层数(整数):"))
....
(setq allarea (* floor sumarea))       ; 此处相乘 floor 必需是数值
....
(command "text" pt "" "" (strcat "基底面积(" (rtos floor 2 0) "层):"))
....
(command "text" pt1 "" "" (strcat "建筑面积(" (rtos floor 2 0) "层):"))


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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

 楼主| 发表于 2008-5-11 11:58:16 | 显示全部楼层
这是个算面积的程序,它每次都要输入一个整数才能相乘,能不能不输入整数
如:基底1000m2,7层,输入7,它就会把1000X7
但如果是7.5层,就没办法输入7.5,只能输入75,算出后,自己再去掉一位数
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 2个

财富等级: 恭喜发财

发表于 2008-5-12 23:27:27 | 显示全部楼层
3 楼已经给出答案。  getint->getreal
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-16 19:42 , Processed in 0.238871 second(s), 42 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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