找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 979|回复: 4

[求助] [求助]:会者不难,帮忙看看吧。

[复制链接]
发表于 2007-3-11 22:04:26 | 显示全部楼层 |阅读模式

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

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

×
如靠左的图 左边一列是已知数字,第二列是空白,只知道第一个数A,要算出以下数字,A+B=C,C+D=E,下面是一直累记的。
可否编个LISP,先选数字A,然后在选B、D、0.48等,让它自动计算出累计的结果写在第二列里面如右边的图。
注:第一列到第二列是2.7个单位,行距是变化的。
我只会一点点LISP,所以请大虾们帮忙写个,小弟先谢过各位了。
图片显示不出来.....。。。我打点字母表示下。
_________A______
B________C______     (A+B=C)
D________E______     (C+D=E)
0.48
1.24
1.00

3.00
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2007-3-11 22:44:27 | 显示全部楼层
没搞清楚。嗯。
思路应该是:
0。选择所要的文本........格式化成数字。
1。数字相加得到结果。
2。数字相加的结果的位置确定。......
应该不难。呵。帮你顶上。。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2007-3-11 22:44:27 | 显示全部楼层
没搞清楚。嗯。
思路应该是:
0。选择所要的文本........格式化成数字。
1。数字相加得到结果。
2。数字相加的结果的位置确定。......
应该不难。确定。呵。帮你顶上。。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 2个

财富等级: 恭喜发财

发表于 2007-3-13 16:33:08 | 显示全部楼层
请看下面这个是否满足楼主的要求。
[PHP]
;;;按列累加并输出结果
;;;主程序  zml84 于 07-03-13
;;;=================================
(defun c:test (/ odim ortho ent0 sum ss1 ss1n temp-lst i enti)
    (setvar "cmdecho" 0)
    (setq odim (getvar "dimzin"))
    (setvar "dimzin" 1)
    (setq ortho (getvar "orthomode"))
    (setvar "orthomode" 1)
    (if        (setq ent0 (entsel "\n请点选起始文本<或者回车表示无>:"))
        (princ (setq sum (atof (cdr (assoc 1 (entget (car ent0))))))
        )
        (princ (setq sum 0.0))
    )
    (if        (setq ss1 (my-ssget "\n请选择要操作的列:"
                            '((0 . "*TEXT"))
                  )
        )
        (progn
            ;;选择的个数
            (setq ss1n (sslength ss1))
            (princ
                (strcat        "\n>>>>>>选择了 "
                        (itoa ss1n)
                        " 个数据。"
                )
            )
            ;;根据Y坐标自上向下排序
            (setq temp-lst '()
                  i 0
            )
            (repeat ss1n
                (setq temp-lst
                         (cons
                             (list
                                 (nth 2
                                      (assoc
                                          10
                                          (entget
                                              (ssname ss1 i)
                                          )
                                      )
                                 )
                                 (cdr
                                     (assoc
                                         5
                                         (entget
                                             (ssname ss1 i)
                                         )
                                     )
                                 )
                             )
                             temp-lst
                         )
                )
                (setq i        (1+ i)
                )
            )
            (setq temp-lst
                     (vl-sort temp-lst
                              (function        (lambda        (e1 e2)
                                            (> (car e1) (car e2))
                                        )
                              )
                     )
            )
            ;;设定列之间的距离
            (if        (= jl nil)
                (setq jl 2.7)
            )
            (princ "\n输入到输出列的距离<")
            (princ jl)
            (if        (setq temp (getdist ">:"))
                (setq jl temp)
            )
            ;;设定精度
            (if        (= jd nil)
                (setq jd 2)
            )
            (princ "\n输入小数点位数<")
            (princ jd)            
            (if        (setq temp (getint ">:"))
                (setq jd temp)
            )
            ;;计算
            (setq i 0)
            (repeat ss1n
                (setq enti (handent (cadr (nth i temp-lst))))
                (command "_copy" enti "" '(0 0) (list jl 0))
                (setq enti (entget (entlast))
                      sum  (+ sum
                              (atof (cdr (assoc 1 enti))
                              )
                           )
                      enti (subst (cons 1 (rtos sum 2 (fix jd)))
                                  (assoc 1 enti)
                                  enti
                           )

                )
                (entmod enti)
                (setq i (1+ i))
            )
            (princ "\n操作成功完成!!")
        )
    )

    (setvar "dimzin" odim)
    (setvar "orthomode" ortho)
    (princ)
)
;;;================================================
;;;自定义ssget提示内容
;;;================================
;;;参数说明:str----提示内容
;;;          lst----过滤表
;;;
;;;返回值类型:选择集对象 或 nil
;;;================================
(DEFUN my-ssget        (str lst / old-nomutt ss1)
    (IF        (OR (= str nil) (= str ""))
        (PRINC "\n选择对象:")
        (PRINC (STRCAT "\n" str))
    )
    (SETQ old-nomutt (GETVAR "nomutt"))
    (SETVAR "nomutt" 1)
    (SETQ ss1 (VL-CATCH-ALL-APPLY 'SSGET (list lst)))
    (SETVAR "nomutt" old-nomutt)
    (IF        (VL-CATCH-ALL-ERROR-P ss1)
        nil
        ss1
    )
)
;;;=================================
[/PHP]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-3-14 21:07:00 | 显示全部楼层
哇,太强了,眼泪哇哇的,十分感谢zm184,和我想要的结果一样,而且还加入了小数点的选择,真是想的周到呀。原来我都是自己在Excel里算完结果在一个一个打到CAD里,工作量很大,一般都是打到手酸,现在爽了。还是感谢吧。
还有,您真有才呀!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-29 23:13 , Processed in 0.304024 second(s), 38 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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