找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1139|回复: 12

[求助] [求助]:这是我刚从论坛上下载的累加求和程序

[复制链接]
发表于 2003-2-16 21:59:28 | 显示全部楼层 |阅读模式

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

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

×
这是我刚从论坛上下载的累加求和程序,我希望求和的同时能把结果放到剪贴板,方便更改数值。哪位高手帮帮忙谢谢啦!

数据求和汇总

  1. (defun C:QH ( )
  2.    (setq chm 0)
  3.    (setq l 0)
  4.    (setq Nn 6)
  5.    (setq he 0.0)
  6.    (prompt"\n\n 选 相 加 数:")
  7.    (setq p ( ssget))
  8.    (setq l 0   n  (sslength p))
  9.       (repeat n
  10.          (if (= "TEXT"
  11.                 (cdr (assoc 0 (setq e (entget (ssname p l))))))
  12.              (progn
  13.                (setq s (cdr (setq as (assoc 1 e)))
  14.                      sy (atof s)
  15.                      he (+ sy he))
  16.                      (setq chm (1+ chm))))
  17.                      (setq l (+ 1 l))
  18.       )
  19.       (Princ "\n\n ")
  20.       (Princ chm)
  21.       (Princ " 个数相加等于: ")
  22.       (Princ he)
  23.       (setq m (getpoint "\n 将结果放哪里? <回车取消>\n"))
  24.       (if (/= m nill)
  25.           (progn
  26.            (setq Nn (getINT  "\n 保留 小数 位数:")
  27.                  sty (cdr (assoc 7 e))
  28.                    h (cdr (assoc 40 e))
  29.                  afa (cdr (assoc 50 e))
  30.                   he (rtos he 2 Nn))
  31.           (command "text" "s" sty m h afa he)
  32.           )
  33.       )
  34.    (terpri)
  35.    (setq *error* olderr)
  36.    (princ "\n")
  37.    (princ)
  38. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 593个

财富等级: 财运亨通

发表于 2003-2-17 18:47:32 | 显示全部楼层

Re: [求助]:这是我刚从论坛上下载的累加求和程序

最初由 dgh 发布
[B]这是我刚从论坛上下载的累加求和程序,我希望求和的同时能把结果放到剪贴板,方便更改数值。哪位.... [/B]

CAD中文字写剪贴板,目前只有用XDAPI。
在Command后面加 (xdrx_setclipboard he) 即可


  1. xdrx_setclipboard

  2. 功    能:把指定的字符串拷贝到windows的剪切板上

  3. 调用格式:(xdrx_setclipboard <字符串>)

  4. 返 回 值:若拷贝成功,返回t

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

发表于 2003-2-20 20:21:08 | 显示全部楼层
最初由 dgh 发布
[B]我试了几次都没有成功。 [/B]

讲详细些才好分析原因,比如操作系统、CAD版本、使用的过程。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-2-20 22:03:18 | 显示全部楼层
操作系统windos98、CAD版本14、程序运行正常只是计算数值没有放到剪贴板。我不熟悉LISP编程,请看是不是下面这样

  1. (defun c:total( / cmdmode sset ssl nsset temp ssl1 total)
  2.       (if *error* quit)
  3.       (setq cmdmode (getvar "cmdecho"))
  4.       (setvar "cmdecho" 0)
  5.       (prompt "\nSelect numbers to add: ")
  6.       (setq sset (ssget))
  7.       (if (null sset)
  8.       (princ "\nError: Nothing selected!\n")
  9.       ;过滤出选中的“text”实体,并报告有多少“text”实体被选中。
  10.       (progn
  11.       (setq ssl (sslength sset))
  12.       (setq nsset (ssadd))
  13.       (while (> ssl 0)
  14.       (setq temp (ssname sset (setq ssl(1- ssl))))
  15.       (if (= (cdr (assoc 0 (entget temp))) "TEXT")
  16.       (ssadd temp nsset)
  17.       )
  18.       )
  19.       (setq ssl (sslength nsset))
  20.       (print ssl)
  21.       (princ "text entities are found.")
  22.       ;选出所有可转化为数的“TEXT”,并求和。
  23.       (setq total 0)
  24.       (setq ssl1 ssl)
  25.       (while (> ssl 0)
  26.       (setq temp (ssname nsset (setq ssl (1- ssl))))
  27.       (setq number (atof(cdr(assoc 1 (entget temp)))))
  28.       (if (= 0 number)
  29.       (setq ssl1 (1- ssl1))
  30.       (setq total (+ total number))
  31.       )
  32.       )
  33.   [color=blue]    (xdrx_setclipboard total)[/color];;by eachy
  34.       ;显示和及加数的个数,便于用户检查是否多选或漏选。
  35.       (princ "\nThe total is ")
  36.       (princ total)
  37.       (princ "of the ")
  38.       (princ ssl1)
  39.       (princ "numbers\n")
  40.       )
  41.       )

  42.       (setvar "CMDECHO" cmdmode)
  43.       ) [color=red];(Command (xdrx_setclipboard total))[/color]
  44.       (princ "\n\tc:total loaded. Start command with total.")
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2003-2-20 22:43:39 | 显示全部楼层
最初由 dgh 发布
[B]操作系统windos98、CAD版本14、程序运行正常只是计算数值没有放到剪贴板。我不熟悉LISP编程,请看是不是下面这样
(defun c:total( / cmdmode sset ssl nsset temp ssl1 total)
      (if *error* quit)
      (set... [/B]


函数不能用COMMAND执行,只有ACAD的内部命令才可以用COMMAND执行。

函数用(函数名 参数1....参数n) 来执行。

你如雷锋说的那样,把(xdrx_setclipboard total) 放到 total 变量得到结果后的任意位置就可以了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-2-23 14:28:59 | 显示全部楼层
这个函数能否把变量放到剪贴板,我试了一下total加上双引号,(xdrx_setclipboard "total") 则把total这几个字符放到剪贴板,否则什么反应都没有。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

发表于 2003-2-23 15:13:28 | 显示全部楼层
最初由 dgh 发布
[B]这个函数能否把变量放到剪贴板,我试了一下total加上双引号,(xdrx_setclipboard "total") 则把total这几个字符放到剪贴板,否则什么反应都没有。 [/B]

应该是(xdrx_setclipboard (rtos total 2 3)。要将total转换为字符串才可以。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2003-2-23 15:29:11 | 显示全部楼层
最初由 duye_chri 发布
[B]但好像还是不行 [/B]


来,你在命令行依次敲入:

command:(setq abc 123.456)
command:(setq ef (rtos abc 2 2))
command:(xdrx_setclipboard ef)

然后你到任何字处理编辑器里面,CTRL+V,粘贴,看看是什么结果?

这个函数要求的参数是字符串
  1. <normalfont>
  2. 94. xdrx_setclipboard

  3. 功能:把指定的字符串拷贝到windows的剪切板上

  4. 调用格式:(xdrx_setclipboard <字符串>)

  5. 返回值:若拷贝成功,返回t
  6. </normalfont>
复制代码
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-2-24 20:16:16 | 显示全部楼层
谢谢!这下行了,对这个程序我还有个问题,
程序运行结果第三行总有一个0,是什么意思,在程序中是怎样实现的。
“8 text entities are found.
The total is 40.0of the 8numbers
0”
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-26 09:51 , Processed in 0.199085 second(s), 53 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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