明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 4273|回复: 40

减数程序(源码)(参考学习用)

  [复制链接]
发表于 2011-12-11 10:51 | 显示全部楼层 |阅读模式
本帖最后由 【KAIXIN】 于 2012-4-18 18:24 编辑



  1. ;功能: 在屏幕上点取两个数, 用第一个数减去第二个数,并放回第二个数的地方, 保留两位小数
  2. (defun C:KK( / ent1 el1 ent2 el2 txt1 txt2 txt ent)
  3.   (setvar "CMDECHO" 0)
  4.   (setq ent1 (car (entsel "\n请选取第一个数:<Exit>")))
  5.   (if (/= ent1 nil)
  6.     (progn
  7.       (setq el1 (entget ent1))
  8.       (if (= "TEXT" (cdr (assoc 0 el1)))
  9.         (progn
  10.           (setq txt1 (cdr (assoc 1 el1)))
  11.           (setq n 1)
  12.         (while (/= n nil)
  13.           (setq ent2 (car (entsel "\n请选取第二个数:<Exit>")))

  14.           (if (/= ent2 nil)
  15.             (progn
  16.               (setq el2 (entget ent2))
  17.               (if (= "TEXT" (cdr (assoc 0 el2)))
  18.                 (progn
  19.                   (setq txt2 (cdr (assoc 1 el2)))
  20.                   (setq txt (rtos (- (atof txt1) (atof txt2)) 2 2))
  21.                   (setq ent (subst (cons 1 txt) (assoc 1 el2) el2))
  22.                   (entmod ent)
  23.                 )
  24.                 (princ "\n第二个数不是文字,请重选:")  
  25.               )
  26.             )
  27.           )

  28.           (if (= ent2 nil) (setq n nil))
  29.         )
  30.         )
  31.         (princ "\n第一个数不是文字,请重选:")  
  32.       )
  33.     )
  34.   )
  35.   (redraw)(princ)
  36. )




该贴已经同步到 【KAIXIN】的微博

本帖子中包含更多资源

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

x
"觉得好,就打赏"
还没有人打赏,支持一下

本帖被以下淘专辑推荐:

发表于 2017-10-31 01:12 | 显示全部楼层
正好需要,谢谢
发表于 2011-12-11 11:34 | 显示全部楼层
呵呵,很好很强大。
发表于 2011-12-12 10:18 | 显示全部楼层
真好 真好啊
发表于 2012-1-19 23:03 | 显示全部楼层
极品好源码可惜我水平低[em0]

点评

水平在于慢慢的提高,相信你做的到  发表于 2012-1-30 08:43
发表于 2012-6-27 21:59 | 显示全部楼层
谢谢分享了!
发表于 2012-6-27 22:42 | 显示全部楼层
下来学习一下
发表于 2012-6-28 07:40 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2012-6-28 07:42 | 显示全部楼层
感谢分享学习!
发表于 2012-6-28 08:06 | 显示全部楼层
感谢分享学习!
发表于 2012-6-28 08:39 | 显示全部楼层
本帖最后由 叮咚 于 2012-6-28 09:32 编辑

看看。学习一下

改了一下,整了个循环

;功能: 在屏幕上点取两个数, 用第一个数减去第二个数,并放回第二个数的地方, 保留两位小数
(defun C:KK (/ ent1 el1 ent2 el2 txt1 txt2 txt ent)
  (setvar "CMDECHO" 0)
  (setq ent1 (car (entsel "\n请选取第一个数:<Exit>")))
  (if (/= ent1 nil)
    (progn
      (setq el1 (entget ent1))
      (if (= "TEXT" (cdr (assoc 0 el1)))
        (progn
          (setq txt1 (cdr (assoc 1 el1)))
          (setq n 1)
          (while (/= n nil)
            (setq ent2 (car (entsel "\n请选取第二个数:<Exit>")))

            (if        (/= ent2 nil)
              (progn
                (setq el2 (entget ent2))
                (if (= "TEXT" (cdr (assoc 0 el2)))
                  (progn
                    (setq txt2 (cdr (assoc 1 el2)))
                    (setq txt (rtos (- (atof txt1) (atof txt2)) 2 2))
                    (setq ent (subst (cons 1 txt) (assoc 1 el2) el2))
                    (entmod ent)
                  )
                  (princ "\n第二个数不是文字,请重选:")
                )
              )
              (setq n nil)
            )

                                        ; (if (= ent2 nil) (setq n nil))
          )
        )
        (progn
          (princ "\n第一个数不是文字,请重选:")
          (c:kk)
        )
      )
    )
  )
  (redraw)
  (princ)
)

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

本版积分规则

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

GMT+8, 2024-5-13 21:44 , Processed in 0.395072 second(s), 39 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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