找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 875|回复: 8

[LISP程序]:R14-连续增值拷贝带数字文本字符串

[复制链接]
发表于 2004-7-5 06:21:15 | 显示全部楼层 |阅读模式

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

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

×
R14-连续增值拷贝带数字文本字符串
[php]
(defun c:test ( / e el nv s p eg)
  (setq  e (car (entsel"\nSelect Text: ")))
  (setq el (entget e))
  (setq nv (getreal (strcat "\nNew value:" "<40>")))
  (if (null nv)(setq nv 40))
  (setq s (cdr (assoc 1 el)))
  (while (setq p (getpoint "\nCopy to: "))
    (setq s (replstr "+" "." s))
    (setq s (replstr "." "+" (rtos (+ (atof s)(/ nv 100.0)) 2 2)))
    (command "copy" (entlast) "" (cdr (assoc 10 (entget (entlast)))) p "")
    (entmod (subst (cons 1 s)(assoc 1 (entget (entlast))) (entget (entlast))))
  )
)
(defun replstr (old new str)
  (setq nstr "")
  (repeat (strlen str)
    (if (= (substr str 1 1) old)
      (setq nstr (strcat nstr new))
      (setq nstr (strcat nstr (substr str 1 1)))
    )
    (setq str (substr str 2))
  )
  nstr
)
[/php]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 6530个

财富等级: 富甲天下

发表于 2004-7-5 15:09:04 | 显示全部楼层
R14使用时需要将“vl-cmdf”函数改为“command”。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

发表于 2004-7-6 12:45:23 | 显示全部楼层
你在r14调试,当然加载了vlisp,其他人未必有哦:)
一般我们说的支持r14是指支持不需要加载vlisp的
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

使用道具 举报

发表于 2004-7-7 12:24:14 | 显示全部楼层
比如运行到:2+57后,下一个应该是2+60,却显示2+6,所有遇到0的都没显示!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1个

财富等级: 恭喜发财

发表于 2004-7-7 12:43:54 | 显示全部楼层
最初由 lhj743 发布
[B]增值到几十时无法显示0! [/B]

用这个试试
(setvar "DIMZIN"  0)

附:
DIMZIN 系统变量 概念 操作步骤 参考
类型:整数
保存位置:图形
初始值:0
控制是否对主单位值作消零处理。可在命令行中输入或在“标注注释”对话框的“主单位”区域中进行设置,此时,DIMZIN 将存储此值。DIMZIN 值为 0-3 时只影响英尺-英寸标注。
0  消除零英尺和零英寸
1  包含零英尺和零英寸
2  包含零英尺,消除零英寸
3  包含零英寸,消除零英尺
4  消除十进制标注中的前导零(例如,0.5000 变为 .5000)
8  消除十进制标注中的后续零(例如,12.5000 变为 12.5)
12  消除前导零和后续零(例如,0.5000 变为 .5)
DIMZIN 还对 AutoLISP rtos 和 angtos 函数执行实数向字符串转换操作有影响。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1个

财富等级: 恭喜发财

发表于 2005-2-27 15:46:58 | 显示全部楼层
应网友[lxyljl]所求修改:能定义步长位数,及简单过虑是不是文字

  1. (defun c:test (/ e nv nd s p eg replstr dxf)
  2.   ;;------------------------
  3.   (DEFUN dxf (st ss) (CDR (ASSOC st (ENTGET ss))))
  4.   ;;---------------------
  5.   (defun replstr (old new str / nstr)
  6.     (setq nstr "")
  7.     (repeat (strlen str)
  8.       (if (= (substr str 1 1) old)
  9.         (setq nstr (strcat nstr new))
  10.         (setq nstr (strcat nstr (substr str 1 1)))
  11.       )
  12.       (setq str (substr str 2))
  13.     )
  14.     nstr
  15.   )
  16.   ;;----------------------------
  17.   (setq e (car (entsel "\n选择文字: ")))
  18.   (if (wcmatch (dxf 0 e) "*TEXT")
  19.     (progn
  20.       (if (null (setq nd (getint (strcat "\n步长位数:" "<2>"))))
  21.         (setq nd 2)
  22.       )
  23.       (if (null (setq nv (getreal (strcat "\n步长变量:" "<40>"))))
  24.         (setq nv 40)
  25.       )
  26.       (setq s (dxf 1 e))
  27.       (while (setq p (getpoint "\n确定复制新点: "))
  28.         (setq s (replstr "+" "." s))
  29.         (setq s (replstr "." "+" (rtos (+ (atof s) (/ nv (atof(strcat"1E+"(itoa nd))))) 2 nd)))
  30.         (command "copy"
  31.                  e
  32.                  ""
  33.                  (dxf 10 e)
  34.                  p
  35.                  ""
  36.         )
  37.         (entmod        (subst (cons 1 s)
  38.                        (assoc 1 (entget (entlast)))
  39.                        (entget (entlast))
  40.                 )
  41.         )
  42.       )
  43.     )
  44.     (princ "\n错误:没有选到文字!")
  45.   )
  46.   (princ)
  47. )

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-23 14:34 , Processed in 0.194474 second(s), 47 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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