找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 835|回复: 5

[编程申请]:[编程申请]:求lisp,实现修改数字文本

[复制链接]
发表于 2005-12-26 23:33:44 | 显示全部楼层 |阅读模式

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

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

×
要求选中要修改的数字文本,然后输入相应要在原基础上增加或减去的数值,实现全部选中数字文本的自动增减.如原数字为56 57 58,那么要求都减1,得到55,56,57
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 5188个

财富等级: 富甲天下

发表于 2005-12-27 23:29:08 | 显示全部楼层
这是我过去编的一个修改高程表的程序。全局变量YB:CHGALT_DIGIT表示小数位数,整数为0。

  1. ;;***************************** CHGALT.LSP *****************************
  2. ;;
  3. ;;  For AutoCAD R14
  4. ;;
  5. ;;  本程序修改高程表.
  6. ;;  若实体位于锁定层上, 该层将被自动解锁.
  7. ;;
  8. ;;----------------------------------------------------------------------
  9. ;;
  10. ;; Set default
  11. ;;
  12.   (if (null YB:CHGALT_DIGIT) (setq YB:CHGALT_DIGIT 2))
  13. ;;
  14. ;;========================= The Main Function ==========================
  15. ;;
  16. (defun c:chgalt (/ cde blp dzn olderr ss n num att lay dig add alt)
  17.   (setq cde (getvar "cmdecho")
  18.         blp (getvar "blipmode")
  19.         dzn (getvar "dimzin")
  20.   )
  21. ;;
  22. ;; Internal error handler
  23. ;;
  24. (defun ca_err (s)
  25.   (if (/= s "Function cancelled")
  26.     (princ (strcat "\nError: " s))
  27.   )
  28.   (setq ss nil)
  29.   (setvar "blipmode" blp)
  30.   (setvar "dimzin" dzn)
  31.   (command "_.UNDO" "_END")
  32.   (setvar "cmdecho" cde)
  33.   (setq *error* olderr)
  34.   (princ)
  35. )
  36. ;;
  37.   (setq olderr *error*  *error* ca_err)
  38.   (setvar "cmdecho" 0)
  39.   (command "_.UNDO" "_GROUP")
  40.   (setvar "blipmode" 0)
  41.   (setvar "dimzin" 0)
  42.   (setq ss (ssget '((0 . "TEXT")))
  43.         n 0
  44.         num 0
  45.   )
  46.   (if ss (progn
  47.     (initget 4)
  48.     (setq dig (getint (strcat "\nDecimal digits <" (itoa YB:CHGALT_DIGIT) ">: ")))
  49.     (if dig (setq YB:CHGALT_DIGIT dig))
  50.     (setq add (getreal "\nAdded altitude <0>: "))
  51.     (if (null add) (setq add 0))
  52.     (repeat (sslength ss)
  53.       (setq att (entget (ssname ss n))
  54.             lay (ai_val 8 att)
  55.             n (1+ n)
  56.       )
  57.       (if (ai_lck lay)
  58.         (progn
  59.           (command "_.-LAYER" "UNLOCK" lay "")
  60.           (ca_dmf)
  61.         )
  62.         (ca_dmf)
  63.       )
  64.     )
  65.   ))
  66.   (print num)
  67.   (princ "changed.")
  68.   (setq ss nil)
  69.   (setvar "blipmode" blp)
  70.   (setvar "dimzin" dzn)
  71.   (command "_.UNDO" "_END")
  72.   (setvar "cmdecho" cde)
  73.   (setq *error* olderr)
  74.   (princ)
  75. )
  76. ;;
  77. ;;======================= The Support Functions ========================
  78. ;;
  79. ;; ChgAlt_Do_Main_Function
  80. ;;
  81. (defun ca_dmf ()
  82.   (setq alt (distof (cdr (assoc 1 att))))
  83.   (if alt (progn
  84.     (setq alt (rtos (+ alt add) 2 YB:CHGALT_DIGIT)
  85.           num (1+ num)
  86.     )
  87.     (entmod (subst (cons 1 alt) (assoc 1 att) att))
  88.   ))
  89. )
  90. ;;
  91. (defun ai_val (v attr)
  92.   (cdr (assoc v attr))
  93. )
  94. ;;
  95. (defun ai_lck (lay)
  96.   (if (= (logand (ai_val 70 (tblsearch "LAYER" lay)) 4) 4)
  97.     T
  98.     nil
  99.   )
  100. )
  101. ;;======================================================================
  102. (princ)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

发表于 2005-12-31 13:31:30 | 显示全部楼层
  1. [FONT=courier new](load "xyp_lib.vlx")  ;版本 V.20051205 (1781)
  2. ;|下载和加载通用函数(可在签名栏直接下载后放到搜索路径下)
  3. 利用以下任何一种方式(首选第一种)即可加载和运行通用函数内的所有子程序:
  4. ★1·在acad.lsp中增加(load"xyp_lib.vlx")
  5. ■2·在每个程序内增加(load"xyp_lib.vlx")
  6. ■3·在command下,输入(load"xyp_lib.vlx")
  7. ■4·在菜单.mnl中增加(load"xyp_lib.vlx")
  8. ■5·将xyp_lib.vlx文件直接拽到cad屏幕
  9. [COLOR=red] ★通用函数下载地址:[/COLOR]
  10. [url]http://www.xdcad.net/forum/attachment.php?s=&postid=1606661[/url]
  11. |;

  12. ;;修改数字文本
  13. (defun c:test ()
  14.   (CMDLA0)
  15.   (if(null no)(setq no 1))
  16.   (setq        no (UREAL 1 "" "\n增减数值" no)
  17.         int (UINT 1 "" "\n小数点位数" INT)
  18.         ss (ssget '((0 . "TEXT")))
  19.         i  -1
  20.   )
  21.   (while (setq s1 (ssname ss (setq i (1+ i))))
  22.     (setq txt (xyp-get-dxf 1 s1))
  23.     (if        (setq txt1 (distof txt))
  24.       (progn
  25.         (setq txt (rtos (+ txt1 no) 2 int))
  26.         (sub_upd s1 1 txt)
  27.       )
  28.     )
  29.   )
  30.   (CMDLA1)
  31. )[/FONT]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

 楼主| 发表于 2005-12-31 23:36:21 | 显示全部楼层
我自己也做了一个
(defun C:cht();改变数字,在原基础上增加或减去某个值
  (setq ss (ssget '((0 . "TEXT")))
        n 0
        num 0
  )
  (if ss (progn
    (setq add (getint "\nAdded number <0>: "))
    (if (null add) (setq add 0))
    (repeat (sslength ss)
      (setq att (entget (ssname ss n))
           
            n (1+ n)
      )
  (setq alt (distof (cdr (assoc 1 att))))
  (if alt (progn
    (setq alt (rtos (+ alt add) 2)
          num (1+ num)
    )
    (entmod (subst (cons 1 alt) (assoc 1 att) att))
  ))
))
)

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-22 02:55 , Processed in 0.421788 second(s), 42 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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