明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2864|回复: 11

新编的一个数字替换小程序,请大家指教

  [复制链接]
发表于 2003-6-7 21:44:00 | 显示全部楼层 |阅读模式
本帖最后由 作者 于 2003-6-7 21:44:36 编辑

;经调试可用,欢迎大家指教。
;数字替换程序,可以对选中数字进行加、减、乘、除,然后用计算后的数字替换掉原来的数字,同时可以自动去除选择集中的非数字文字
(defun invar ()
  (setvar "cmdecho" 0)                        ;屏蔽命令行显示
  (setq os (getvar "osmode"))                ;提取物体捕捉变量
  (setvar "osmode" 0)                        ;设置物体捕捉变量为空
  (setq dimzin_v (getvar "dimzin"))     ;提取dimzin 变值
  (setvar "dimzin" 0)                   ;设置dimzin值为零,以防小数位数对rtos无效
  (command "undo" "g")                        ;设置“U”回的值
)
(defun revar ()
  (setvar "osmode" os)                        ;恢复物体捕捉设置
  (setvar "dimzin" dimzin_v)                         ;恢复dimzin的值
  (command "undo" "e")                        ;设置“U”的最点
  (setvar "cmdecho" 1)                        ;恢复命令行显示
)
(defun process_txt (txt_ss    kword        value_bp  weishu    begin_v
                    /              i                ii          n            txt_name
                    txt_data  o_txt_d        o_txt_c          o_txt_v   n_txt_v
                    n_txt_c   n_txt_d
                   )
  (setq        n  0
        ii 0
  )
  (repeat (sslength txt_ss)
    (setq txt_name (ssname txt_ss ii))
    (setq txtdata (entget txt_name))
    (setq o_txt_d (assoc 1 txtdata))
    (setq o_txt_c (cdr o_txt_d))
    (setq o_txt_v (distof o_txt_c))
    (if        (and
          (/= o_txt_v nil)
          (>= o_txt_v begin_v)
        )
      (progn
        (cond
          ((= kword "+") (setq n_txt_v (+ o_txt_v value_bp)))
          ((= kword "-") (setq n_txt_v (- o_txt_v value_bp)))
          ((= kword "*") (setq n_txt_v (* o_txt_v value_bp)))
          ((= kword "/") (setq n_txt_v (/ o_txt_v value_bp)))
        )                                ;End of cond
        (setq n_txt_c (rtos n_txt_v 2 weishu))
        (setq n_txt_d (cons 1 n_txt_c))
        (setq txtdata (subst n_txt_d o_txt_d txtdata))
        (entmod txtdata)
        (setq n (1+ n))
      )                                        ;end of progn
    )                                        ;end of if
    (setq ii (1+ ii))
  )                                        ;end of repeat
  (prin1 "成功对")
  (prin1 n)
  (prin1 "个数字进行了操作!")
)                                        ;end of subprogram
(defun c:shuzth        ()
  (invar)
  (prompt "\n请选取数字:")
  (terpri)
  (setq ss_txt (ssget '((0 . "text"))))        ;选取并过滤为文字
  (initget "+ - * /")
  (setq        p_kword
         (getkword "\n 请输入操作码: 加(+)、减(-)、乘(*)、除(/)<+>")
  )
  (if (null p_kword)
    (setq P_kword "+")
  )
  (initget (+ 1 2))
  (setq bp_value (getreal "\n 请输入加、减、乘、除数:"))
  (setq wei_shu (getint "\n 请输入小数位数<2>:"))
  (if (null wei_shu)
    (setq wei_shu 2)
  )
  (setq begin_v (getreal "\n 给定开始数<不给定>:"))
  (process_txt ss_txt p_kword bp_value wei_shu begin_v)
  (prompt "\n山东省水利勘测设计院 杨克坤 2003.6.6编")
  (revar)
)                                        ;end of main program


[此贴子已经被作者于2003-6-7 21:33:44编辑过]
 楼主| 发表于 2003-6-7 01:20:00 | 显示全部楼层

原程序

本帖子中包含更多资源

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

x
 楼主| 发表于 2003-6-7 21:36:00 | 显示全部楼层

原程序有一个小BUG

原程序有一个小BUG,修改并重新上传。
 楼主| 发表于 2003-6-7 21:42:00 | 显示全部楼层

为何传不上?

不知道为何传不上?帖子的编辑中没有附件重新上传的功能?

本帖子中包含更多资源

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

x
发表于 2003-6-8 10:14:00 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2003-6-8 12:37:00 | 显示全部楼层

我也碰到过类似问题“帖子的编辑中没有附件重新上传的功能“希望斑竹增加这项功能

发表于 2003-6-8 17:31:00 | 显示全部楼层

OK,我改改网站的程序

 楼主| 发表于 2003-6-12 02:06:00 | 显示全部楼层

"给定开始数"的意思

“给定开始数”,的意思是小于这个数的数值不做改动。
发表于 2004-4-29 20:08:00 | 显示全部楼层
怎么不行?为什么       


        错误: 参数类型错误: lselsetp nil
发表于 2004-5-17 10:41:00 | 显示全部楼层
楼上我们是同行啊~~搞水利的


你的程序我还是没怎么吃透,说白了还是不知道怎么使用哈
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-9-26 03:50 , Processed in 0.237272 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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